الگوسهام | AlgoSaham
کل ---%---
پرایس اکشن

فیلتر ورود نوسان‌گیری: برگشت از کف ۲۰ روزه با پایتون

فیلتر نوسان‌گیری برای پیدا کردن سهم‌هایی که دیروز به کف ۲۰ روزه‌شان خورده‌اند و امروز با دست‌کم ۲ درصد رشد برگشته‌اند؛ نقطه‌ی ورود یک نوسان کوتاه که خروجش با فیلتر خروج نوسان‌گیری مشخص می‌شود.

این فیلتر چیست؟

نوسان‌گیری یعنی خریدن نزدیک کف یک دامنه و فروختن نزدیک سقف آن، در چند روز تا دو هفته. این فیلتر نیمه‌ی اول این کار را انجام می‌دهد: سهم‌هایی را پیدا می‌کند که دیروز کمترین قیمتشان به پایین‌ترین قیمت ۲۰ روز قبل رسیده و امروز با پایانی دست‌کم ۲ درصد بالاتر از دیروز برگشته‌اند، با ارزش معاملات بالای ۳۰۰ میلیون تومان. ستون‌های خروجی فاصله تا سقف ۲۰ روزه، یعنی هدف فروش، و فاصله تا کف ۲۰ روزه، یعنی حد ضرر، را نشان می‌دهند. نیمه‌ی دوم، یعنی اینکه کی بفروشیم، در فیلتر خروج نوسان‌گیری آمده است.

کد فیلتر با پایتون

حالت اجرا را انتخاب کنید؛ شرط‌ها و مقدار ستون‌ها با راهنمای جاوااسکریپت یکسان‌اند. عنوان ستون‌های دلخواه را در ویرایشگر تعیین کنید.
نسخهٔ جاوااسکریپت این فیلتر

نوسان‌گیری از کف ۲۰ روزه یعنی چه

۲۰ روز معاملاتی تقریباً یک ماه است. پایین‌ترین قیمت این یک ماه سطحی است که بیشتر معامله‌گرها روی نمودار می‌بینند و خیلی‌ها آن را کف موقت سهم می‌دانند. وقتی قیمت دوباره به این سطح می‌رسد، دو اتفاق ممکن است بیفتد: یا خریدارها مثل دفعه‌ی قبل وارد می‌شوند و قیمت برمی‌گردد، یا کف شکسته می‌شود و ریزش ادامه پیدا می‌کند.
این فیلتر روی حدس خرید نمی‌کند. شرطش این است که برگشت شروع شده باشد: سهم دیروز به کف خورده و امروز با رشد دست‌کم ۲ درصدی بسته شده است؛ یعنی همان روزی که خریدارها نشان داده‌اند در این سطح حاضرند.
نوسان‌گیری با این فیلتر دو سطح روشن دارد که هر دو از همان ۲۰ روز می‌آیند: سقف ۲۰ روزه هدف فروش است و کف ۲۰ روزه حد ضرر. ستون دوم و سوم خروجی فاصله‌ی قیمت امروز تا همین دو سطح را می‌دهند، پس پیش از خرید معلوم است چقدر جا برای سود هست و چقدر ریسک.

سه شرط فیلتر به زبان ساده

یک مثال: پایین‌ترین قیمت سهم از ۲۱ روز قبل تا پریروز ۱۰۰۰ ریال بوده. دیروز کمترین قیمت به ۹۹۰ رسیده و پایانی دیروز ۱۰۱۰ بوده. امروز پایانی ۱۰۳۵ است.
شرط اول، برخورد به کف: کمترین قیمت دیروز کمتر از یا برابر با پایین‌ترین قیمت ۲۰ روز قبل از آن باشد. در مثال ۹۹۰ از ۱۰۰۰ کمتر است. بازه‌ی ۲۰ روزه از پریروز تا ۲۱ روز قبل است و خود دیروز را شامل نمی‌شود؛ وگرنه دیروز همیشه با خودش مقایسه می‌شد.
شرط دوم، برگشت: پایانی امروز دست‌کم ۲ درصد بالاتر از پایانی دیروز باشد. در مثال ۱۰۳۵ تقسیم بر ۱۰۱۰ می‌شود ۲٫۵ درصد. یک برگشت کوچک ممکن است فقط نوسان روزانه باشد؛ ۲ درصد یعنی خریدارها روز را با قدرت تمام کرده‌اند.
شرط سوم، نقدشوندگی: ارزش معاملات امروز بیشتر از ۳ میلیارد ریال، یعنی ۳۰۰ میلیون تومان، باشد. نوسان‌گیر باید بتواند به‌موقع بفروشد؛ در سهم کم‌معامله ممکن است همان روزی که فیلتر خروج فروش را می‌گوید خریداری نباشد.

روزها را چطور می‌شمارد: x و off

در کد، x شماره‌ی روز به عقب است: x برابر ۱ دیروز است، ۲ پریروز و همین‌طور تا ۲۱. x برابر صفر خود امروز است که قیمتش از تابلو می‌آید. «روز» یعنی ردیف تاریخچه‌ی تعدیل‌شده، نه روز تقویمی؛ تعطیلی‌ها و روزهایی که نماد بسته بوده ردیف ندارند.
متغیر off مثل بقیه‌ی فیلترهای الگوسهام برای این است که x برابر ۱ همیشه واقعاً دیروز باشد. اگر اولین ردیف تاریخچه همان قیمت پایانی، تعداد معامله و ارزش معاملاتی را داشته باشد که تابلوی امروز نشان می‌دهد، آن ردیف خود امروز است و فیلتر یک ردیف جلوتر شروع می‌کند.

کد خط به خط

var h=[it] تاریخچه‌ی تعدیل‌شده را در h می‌گذارد. نمادی که تاریخچه ندارد، قیمتش صفر است یا کمتر از ۲۲ روز تاریخچه دارد کنار می‌رود. توابع lo، hi و cl کمترین، بیشترین و پایانی روز x را برمی‌گردانند.
حلقه‌ی اول kaf را پیدا می‌کند: پایین‌ترین کمترین‌قیمت از x برابر ۲ تا ۲۱، یعنی ۲۰ روز قبل از دیروز. حلقه‌ی دوم دو عدد دیگر برای ستون‌ها حساب می‌کند: saghf بیشترین قیمت ۲۰ روز اخیر از دیروز به عقب، و kaf20 کمترین قیمت همان ۲۰ روز که کف تازه‌ی دیروز را هم شامل می‌شود.
سه خط بعدی ستون‌ها را پر می‌کنند و خط return سه شرط را می‌سنجد: lo(1)<=kaf برای برخورد، (pc)>=cl(1)*1.02 برای برگشت و (tval)>3000000000 برای نقدشوندگی. کل بدنه داخل تابعی است که بلافاصله اجرا می‌شود و true===function(){...}() نتیجه‌اش را به true یا false تبدیل می‌کند.

عددها را چطور با سلیقه‌ی خودتان تنظیم کنید

برای اینکه اثر هر تغییر ملموس باشد، چند نسخه از فیلتر را روی بازار پایان معاملات سه‌شنبه ۲۱ مهر ۱۴۰۵ اجرا کردیم که نسخه‌ی اصلی در آن ۲۰ نماد برگرداند. در ۳۰ روز معاملاتی تا ۲۲ مهر هم این فیلتر به‌طور متوسط روزی ۹ نماد برگرداند؛ بیشترین ۴۴ نماد در یک روز و بعضی روزها هیچ، از جمله خود ۲۲ مهر.
حد برگشت را با 1.02 تنظیم کنید. اگر هر پایانی مثبتی را قبول کنید، یعنی (pc)>cl(1)، آن روز ۲۶ نماد رد شد. اگر ۳ درصد بخواهید، یعنی 1.03، هیچ نمادی رد نشد: آن ۲۰ نماد پایانی بین ۲٫۱ تا ۳ درصد مثبت داشتند و پایانی از دامنه‌ی نوسان روز بالاتر نمی‌رود.
بازه‌ی کف را با عدد 21 در حلقه‌ی اول تنظیم کنید. با کف ۱۰ روزه، یعنی x<=11، فهرست آن روز از ۲۰ به ۵۶ نماد رسید؛ کف ۱۰ روزه زودتر لمس می‌شود و کف ضعیف‌تری است. اگر کف بلندتری می‌خواهید، عدد 22 در خط h.length-off را هم به اندازه‌ی بازه‌ی تازه به‌اضافه‌ی ۲ تغییر دهید.
حد نقدشوندگی را با 3000000000 تنظیم کنید. با ۱۰ میلیارد ریال، یعنی یک میلیارد تومان، آن روز ۱۸ نماد ماند.

این فیلتر در گذشته چه کرده است

این فیلتر را همراه فیلتر خروج نوسان‌گیری روی ۱۵ ماه گذشته‌ی بازار شبیه‌سازی کردیم: خرید با پایانی روز سیگنال، فروش با پایانی روزی که فیلتر خروج سیگنال داد، فقط سهم‌های بورس و فرابورس با ارزش معاملات بالای ۳۰۰ میلیون تومان، و ۱٫۲ درصد کارمزد خرید و فروش از هر معامله کم شده است.
در سه ماه اخیر، ۲۴ تیر تا ۲۲ مهر ۱۴۰۵، نتیجه درخشان بود: ۴۱۸ معامله، میانگین ۱۱ درصد سود برای هر معامله، ۸۵ درصد معامله‌ها با سود و میانگین نگهداری ۹ روز معاملاتی. بهترین‌ها حپترو با دو معامله و روی‌هم ۴۶٫۶ درصد، خراسان ۴۰ درصد، زپارس ۳۹٫۵، وایران ۳۷٫۸ و زکشت ۳۶٫۹ درصد بودند.
ولی این سه ماه یک رالی بود: میانگین سهم‌های بازار در همین مدت حدود ۷۳ درصد رشد کرد. در سه بازه‌ی سه‌ماهه‌ی قبل، از ۲۵ تیر ۱۴۰۴ تا ۲۳ تیر ۱۴۰۵، که بازار در هر کدام ۶ تا ۲۵ درصد بالا رفت، میانگین هر معامله بین ۱٫۲ تا ۲٫۸ درصد بود و بین ۴۲ تا ۶۶ درصد معامله‌ها با سود بسته شدند.
پس در بازار معمولی این فیلتر تقریباً نیمی از وقت‌ها برنده است و سودش کمی از زیانش بیشتر است. چیزی که این حساب را نگه می‌دارد خروج است: در همه‌ی این بازه‌ها معامله‌هایی که به سقف ۲۰ روزه رسیدند به‌طور متوسط ۶٫۷ تا ۱۵٫۳ درصد سود دادند و معامله‌هایی که با کف ۲۰ روزه بسته شدند حدود ۶٫۵ درصد زیان.

خروجی فیلتر را چطور بخوانیم

ستون اول درصد تغییر پایانی امروز است و همیشه دست‌کم ۲. ستون دوم فاصله تا سقف ۲۰ روزه است، یعنی تا هدف فروش چقدر جا هست؛ ستون سوم فاصله تا کف ۲۰ روزه، یعنی اگر حد ضرر فعال شود تقریباً چقدر زیان می‌شود. نسبت ستون دوم به سوم، نسبت سود به زیان این نوسان است.
در نمونه‌های این راهنما وپاسار ۲۶٫۷ درصد تا سقف و ۵٫۶ درصد تا کف فاصله داشت، یعنی سود ممکن نزدیک پنج برابر زیان ممکن؛ شپدیس ۱۴٫۴ درصد در برابر ۶٫۴ درصد. سهمی که ستون دومش از ستون سومش کمتر است جای کمی برای سود دارد.
بعد از فیلتر، برای هر نماد ورود پول حقیقی و حجم روز برگشت را هم ببینید. برگشتی که با حجم بالا و خرید حقیقی همراه است نشان می‌دهد خریدارها جدی‌اند.

سیگنال‌های اصلی

  • کمترین قیمت دیروز در کف ۲۰ روزه یا پایین‌تر از آن
  • پایانی امروز دست‌کم ۲ درصد بالاتر از پایانی دیروز
  • ارزش معاملات امروز بیشتر از ۳۰۰ میلیون تومان
  • فاصله تا سقف ۲۰ روزه و کف ۲۰ روزه در ستون‌های خروجی، به‌عنوان هدف و حد ضرر

کاربردهای این فیلتر

  • پیدا کردن نقطه‌ی ورود نوسان‌گیری در روزی که برگشت از کف شروع شده
  • ساختن فهرست خرید روزانه با هدف و حد ضرر مشخص
  • جفت شدن با فیلتر خروج نوسان‌گیری برای یک سیستم کامل ورود و خروج
  • مقایسه‌ی نسبت سود به زیان سهم‌ها پیش از خرید

اشتباه‌های رایج در استفاده از این فیلتر

  • این فیلتر دست‌کم ۲۲ روز تاریخچه‌ی تعدیل‌شده لازم دارد؛ تاریخچه‌ی ۹۰ روزه کافی است.
  • شرط ۲ درصدی روی پایانی است و پایانی تا پایان بازار نهایی نمی‌شود. وسط بازار ممکن است سهمی در فهرست باشد که آخر روز با پایانی کمتر از ۲ درصد بسته شود. نتیجه‌ی قطعی را بعد از بسته شدن بازار ببینید.
  • تعداد خروجی با حال بازار خیلی عوض می‌شود: بعد از یک ریزش عمومی ده‌ها سهم هم‌زمان به کف ۲۰ روزه می‌خورند و فهرست بلند می‌شود؛ در روزهای صعودی ممکن است خالی باشد.
  • برخورد به کف و برگشت یک‌روزه احتمال ادامه‌ی برگشت را بالا می‌برد، تضمینش نمی‌کند. در یکی از بازه‌های سه‌ماهه‌ی گذشته بیشتر از نیمی از معامله‌ها با حد ضرر بسته شدند.
  • نتیجه‌ی سه ماه اخیر در یک رالی به دست آمده و در بازار معمولی بسیار کمتر بوده است؛ بخش «این فیلتر در گذشته چه کرده است» را ببینید.

پرسش‌های پرتکرار

فیلتر ورود نوسان‌گیری چه سهم‌هایی را پیدا می‌کند؟
سهم‌هایی که دیروز کمترین قیمتشان به پایین‌ترین قیمت ۲۰ روز قبل رسیده یا از آن پایین‌تر رفته و امروز با پایانی دست‌کم ۲ درصد بالاتر از دیروز بسته شده‌اند، با ارزش معاملات بالای ۳۰۰ میلیون تومان.
کی باید فروخت؟
با فیلتر خروج نوسان‌گیری: وقتی قیمت به سقف ۲۰ روزه برسد سود گرفته می‌شود و وقتی پایانی زیر کف ۲۰ روزه بسته شود حد ضرر فعال می‌شود. فاصله تا هر دو سطح در ستون‌های همین فیلتر هم آمده است.
چرا شرط برگشت ۲ درصد است و نه بیشتر؟
پایانی از دامنه‌ی نوسان روز بالاتر نمی‌رود. در اجرای ۲۱ مهر ۱۴۰۵ همه‌ی ۲۰ نماد خروجی پایانی بین ۲٫۱ تا ۳ درصد مثبت داشتند و با شرط ۳ درصد هیچ نمادی رد نشد. با هر پایانی مثبت هم فهرست به ۲۶ نماد رسید که برگشت‌های ضعیف‌تر را هم شامل می‌شد.
در سه ماه اخیر چقدر سود داده است؟
از ۲۴ تیر تا ۲۲ مهر ۱۴۰۵، با فروش از طریق فیلتر خروج و بعد از ۱٫۲ درصد کارمزد، ۴۱۸ معامله با میانگین ۱۱ درصد سود و ۸۵ درصد معامله‌ی سودده. ولی بازار در همین مدت حدود ۷۳ درصد بالا رفت؛ در سه‌ماهه‌های معمولی قبل از آن میانگین هر معامله ۱٫۲ تا ۲٫۸ درصد بود.
چرا بعضی روزها هیچ سهمی از این فیلتر رد نمی‌شود؟
چون باید دو اتفاق پشت سر هم بیفتد: دیروز کف یک‌ماهه لمس شده باشد و امروز برگشت قوی باشد. در روزهای صعودی کمتر سهمی به کف ۲۰ روزه می‌رسد؛ مثلاً ۲۲ مهر ۱۴۰۵ هیچ نمادی رد نشد، در حالی که یک روز قبلش ۲۰ نماد رد شده بود.

فیلترهای مرتبط

می‌خواهید این فیلتر را روی بازار زنده امتحان کنید؟

در داشبورد پیشرفته الگوسهام، می‌توانید این فیلتر و صدها فیلتر دیگر را به صورت لحظه‌ای روی بازار بورس اجرا کنید.