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

فیلتر شکست خط روند نزولی

فیلتر سهم‌هایی که امروز خط روند نزولی‌شان را شکسته‌اند و بالای خط بسته شده‌اند؛ خطی که از بالاترین سقف ۶۰ روز اخیر کشیده می‌شود و تا دیروز هیچ قیمت پایانی بالای آن نبوده است.

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

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

خط روند نزولی چیست و چرا شکستش مهم است

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

خط را چطور می‌کشیم: سقف‌ها و کم‌شیب‌ترین خط

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

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

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

روزها را چطور می‌شمارد: x، off و ردیف‌های تاریخچه

فیلتر روی تاریخچه‌ی روزانه‌ی تعدیل‌شده کار می‌کند و در کد، x شماره‌ی روز به عقب است: x برابر ۱ دیروز است، x برابر ۲ پریروز و همین‌طور تا عقب. x برابر صفر خود امروز است که قیمتش از تابلو می‌آید، نه از تاریخچه. خط روند هم با همین x حساب می‌شود؛ line(1) جایی است که خط دیروز به آن رسیده بود و line(0) جایی است که امروز به آن رسیده.
«روز» در این فیلتر یعنی ردیف تاریخچه، نه روز تقویمی. روزهای تعطیل و روزهایی که نماد بسته بوده ردیفی ندارند و شمرده نمی‌شوند. در نمونه‌ی حشکوه در همین صفحه، نماد بعد از ۱۸ شهریور بسته بود و ۲۹ شهریور بازگشایی شد؛ برای فیلتر این دو روز پشت سر هم‌اند. خط روند هم در همین روزهای معاملاتی پایین می‌آید، نه در روزهای تقویمی.
متغیر off برای این است که x برابر ۱ همیشه واقعاً دیروز باشد. تاریخچه‌ی روزانه یک بار در روز به‌روز می‌شود و در بعضی ساعت‌ها ممکن است ردیف امروز هم در آن آمده باشد. اگر اولین ردیف تاریخچه همان قیمت پایانی، تعداد معامله و ارزش معاملاتی را داشته باشد که تابلوی امروز نشان می‌دهد، یعنی آن ردیف خود امروز است؛ off برابر ۱ می‌شود و فیلتر یک ردیف جلوتر شروع می‌کند. بدون این، امروز یک بار به‌عنوان امروز و یک بار به‌عنوان دیروز شمرده می‌شد، همه‌ی روزها یک خانه جابه‌جا می‌شدند و شرط سوم ممکن بود شکست امروز را شکست دیروز ببیند و نماد را کنار بگذارد.
سقف‌ها در x از ۴ تا ۶۰ جست‌وجو می‌شوند. سه روز آخر نمی‌توانند سقف باشند، چون هنوز سه روز بعدشان دیده نشده؛ روز شصتم هم برای اینکه سقف باشد به سه روز قبل از خودش نیاز دارد. برای همین فیلتر دست‌کم ۶۳ ردیف تاریخچه لازم دارد و اگر نماد کمتر داشته باشد کنار می‌رود. میانگین حجم از ۲۰ ردیف آخر، x از ۱ تا ۲۰، حساب می‌شود.

کد خط به خط

خط اول بدنه، var h=[it]، تاریخچه‌ی تعدیل‌شده‌ی روزانه‌ی نماد را در h می‌گذارد. تعدیل‌شده یعنی قیمت‌های قبل از افزایش سرمایه و تقسیم سود با قیمت امروز هم‌مقیاس شده‌اند؛ در تاریخچه‌ی تعدیل‌نشده، قیمت قبل از مجمع یک سقف ساختگی می‌سازد و خط از جایی کشیده می‌شود که هیچ‌وقت سقف نبوده. سه شرط بعدی نمادی را که تاریخچه ندارد، قیمت پایانی‌اش صفر است یا امروز اصلاً معامله نشده، یعنی بیشترین قیمت امروزش صفر است، کنار می‌گذارند.
خط بعدی off را تعیین می‌کند که در بخش قبل توضیح داده شد. N، K و GAP سه عدد اصلی فیلترند: ۶۰ روز بازه‌ی جست‌وجو، ۳ روز دو طرف سقف و ۱۰ روز کمترین فاصله‌ی دو سقف. شرط h.length<off+N+K مطمئن می‌شود که ۶۳ ردیف لازم وجود دارد. دو تابع hi و cl بیشترین قیمت و قیمت پایانی روز x را برمی‌گردانند و حلقه‌ی بعدی بررسی می‌کند که در هیچ‌کدام از این ۶۳ روز این دو عدد صفر نباشند؛ ردیف خالی یا صفر می‌توانست سقف ساختگی بسازد یا مقایسه با خط را خراب کند.
تابع isPeak تعریف سقف را پیاده می‌کند. برای k از ۱ تا ۳، hi(x+k) روز k-ام قبل از x است و hi(x-k) روز k-ام بعد از آن. اگر یکی از روزهای قبل بالاتر باشد، یا یکی از روزهای بعد بالاتر یا برابر باشد، x سقف نیست. نامساوی‌ها عمداً یکی سخت و یکی ملایم‌اند تا از دو روز برابر فقط یکی سقف شود.
حلقه‌ی بعدی روی x از ۴ تا ۶۰ می‌چرخد و بالاترین سقف را در xa نگه می‌دارد. چون مقایسه با علامت بزرگ‌تر سخت است و حلقه از نزدیک به دور می‌رود، اگر دو سقف هم‌ارتفاع بالاترین باشند، جدیدتر انتخاب می‌شود. بعد اگر xa کمتر از ۱۴ باشد، یعنی جایی برای سقف دوم نمانده، فیلتر کنار می‌کشد.
حلقه‌ی xb سقف دوم را بین x برابر ۴ تا xa-10 پیدا می‌کند. s شیب خط از سقف اول تا سقف x است، به ریال در هر روز. چون سقف x پایین‌تر از سقف اول است، s منفی است و بزرگ‌ترین s یعنی منفیِ کوچک‌تر، یعنی کم‌شیب‌ترین خط. اگر سقفی هم‌ارتفاع سقف اول در این بازه باشد، s آن صفر است و انتخاب می‌شود، و شرط بعدی، hi(xb)>hi(xa)*0.95، چنین خط افقی را رد می‌کند. اگر هیچ سقفی در بازه نباشد، xb صفر می‌ماند و نماد کنار می‌رود.
تابع line معادله‌ی خطی است که از دو نقطه‌ی (xa، سقف اول) و (xb، سقف دوم) می‌گذرد و برای هر x مقدار خط را می‌دهد، چه بین دو سقف و چه بعد از سقف دوم تا امروز. حلقه‌ی بعدی شرط سوم است: پایانی هیچ روزی از دیروز تا روز قبل از سقف اول نباید بالای خط باشد. lt مقدار خط در امروز است و شرط چهارم پایانی امروز را با آن مقایسه می‌کند.
حلقه‌ی حجم QTotTran5J، یعنی حجم معاملات روز، را برای ۲۰ روز اخیر جمع می‌کند و فقط روزهایی را می‌شمارد که حجم مثبت داشته‌اند؛ vr حجم امروز تقسیم بر این میانگین است. چهار خط بعدی ستون‌های خروجی را پر می‌کنند؛ ضرب در ۱۰۰۰، گرد کردن و تقسیم بر ۱۰ نسبت را به درصد با یک رقم اعشار تبدیل می‌کند. خط return دو شرط آخر را با && می‌سنجد. کل بدنه داخل تابعی است که بلافاصله اجرا می‌شود و true===function(){...}() نتیجه‌اش را به true یا false تبدیل می‌کند، چیزی که صفحه‌ی فیلترنویسی از هر فیلتر انتظار دارد.
یک نکته درباره‌ی جمله‌ی سربرگ کد که می‌گوید هیچ سقفی بین دو سقف بالای خط نمی‌ماند: این برای سقف‌هایی درست است که دست‌کم ۱۰ روز بعد از سقف اول‌اند، چون فقط آن‌ها در انتخاب کم‌شیب‌ترین خط شرکت دارند. سقف‌های ۱۰ روز اول و سایه‌ی کندل‌ها ممکن است کمی بالای خط بروند؛ چیزی که فیلتر برای همه‌ی روزها تضمین می‌کند این است که هیچ قیمت پایانی تا دیروز بالای خط نبوده است.

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

همه‌ی عددهای مهم بالای کد یا در شرط‌ها نوشته شده‌اند. برای اینکه اثر هر تغییر ملموس باشد، چند نسخه از فیلتر را روی همان بازار پایان معاملات ۱۹ مهر ۱۴۰۵ اجرا کردیم که نسخه‌ی اصلی در آن ۵ نماد برگرداند.
شرط حجم را با عوض کردن vr>1 تنظیم کنید. با vr>1.5 فهرست آن روز به ۳ نماد رسید، ولتجار، کساپا و وتوس، و حشکوه و کصدف که حجمشان ۱٫۲۶ و ۱٫۰۰ برابر میانگین بود بیرون افتادند. اگر شرط حجم و ارزش معاملات را کامل حذف کنید، در همان روز باز هم همان ۵ نماد برگشت؛ یعنی آن روز گلوگاه خود خط روند بود، نه نقدشوندگی، و هر ۵ شکست با حجم بالاتر از میانگین اتفاق افتاده بود.
شرط دوم را با عدد 0.95 در خط hi(xb)>hi(xa)*0.95 تنظیم کنید. با 0.90، یعنی سقف دوم دست‌کم ۱۰ درصد پایین‌تر، فقط ولتجار در فهرست ماند. هرچه این عدد کوچک‌تر باشد، فقط روندهای نزولی عمیق‌تر باقی می‌مانند.
برای خط‌های بلندتر GAP را بزرگ کنید. در اجرای ۱۹ مهر، فاصله‌ی دو سقف در هر ۵ نماد بین ۱۱ تا ۱۴ روز معاملاتی بود و با GAP=20 فهرست خالی شد. اگر خط‌های چندماهه می‌خواهید، GAP را ۲۰ یا ۳۰ و N را ۱۲۰ کنید و تاریخچه‌ی تعدیل‌شده‌ی ۳۰۰ روزه را بارگذاری کنید؛ شرط h.length<off+N+K خودش با N جدید تنظیم می‌شود.
K تعریف سقف را سخت یا آسان می‌کند. با K=5 سقف باید از ۵ روز قبل و بعدش بالاتر باشد؛ سقف‌ها کمتر و مهم‌تر می‌شوند و نوسان‌های کوچک دیگر سقف حساب نمی‌شوند. و اگر شکست قاطع‌تری می‌خواهید، شرط چهارم را به if(!((pc)>lt*1.01)) return false; تغییر دهید تا پایانی امروز دست‌کم ۱ درصد بالای خط باشد؛ این تغییر حشکوه را با فاصله‌ی ۰٫۳ درصدی‌اش از فهرست بیرون می‌برد.

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

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

نمونه‌ها روی نمودار

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

ولتجار — واسپاری تجار ایرانیان

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

کساپا — سایپا شیشه

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

حشکوه — دلیجان طلایی شکوه پارس

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

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

  • بالاترین سقف ۶۰ روز اخیر و سقف پایین‌تری که دست‌کم ۱۰ روز معاملاتی بعد از آن ثبت شده
  • سقف دوم دست‌کم ۵ درصد پایین‌تر از سقف اول، یعنی خط واقعاً نزولی است
  • هیچ قیمت پایانی از سقف اول تا دیروز بالای خط روند نبوده
  • قیمت پایانی امروز بالای خط روند
  • حجم امروز بیشتر از میانگین ۲۰ روز معاملاتی اخیر
  • ارزش معاملات امروز بیشتر از ۳۰۰ میلیون تومان

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

  • پیدا کردن روز اول شکست خط روند، پیش از آنکه قیمت از خط دور شود
  • ساختن فهرست روزانه‌ی سهم‌هایی که اصلاحشان ممکن است تمام شده باشد
  • زیر نظر گرفتن سهم‌هایی که بعد از شکست ممکن است برای پولبک به خط برگردند
  • پایه‌ای برای فیلترهای خط روند خودتان، با عوض کردن N، K، GAP و آستانه‌ها

کد فیلتر

شما می‌توانید این کد را کپی کرده و در بخش فیلترنویسی الگوسهام استفاده کنید.

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

  • این فیلتر روی [it]، یعنی تاریخچه‌ی تعدیل‌شده، نوشته شده. اگر آن را با [ih] اجرا کنید، برای نمادی که در ۶۰ روز اخیر افزایش سرمایه یا تقسیم سود داشته، قیمت قبل از مجمع سقف ساختگی می‌سازد و خط از جای اشتباهی کشیده می‌شود. در اجرای ۱۹ مهر ۱۴۰۵ نسخه‌ی [ih] همان ۵ نماد را برگرداند، ولی برای حشکوه که قیمتش در این بازه تعدیل شده، فاصله از خط را ۰٫۵ درصد به جای ۰٫۳ و افت سقف دوم را ۸٫۲ درصد به جای ۸ نشان داد.
  • تاریخچه‌ی روزانه‌ی تعدیل‌شده باید روی صفحه‌ی فیلترنویسی بارگذاری شده باشد و دست‌کم ۶۳ روز داشته باشد. تاریخچه‌ی ۹۰ روزه کافی است. بدون آن همه‌ی نمادها رد می‌شوند و فیلتر خالی برمی‌گردد. نمادهای تازه‌وارد که هنوز ۶۳ روز معامله ندارند هم به همین دلیل در خروجی نمی‌آیند.
  • وسط بازار قیمت پایانی هنوز نهایی نشده و هر لحظه عوض می‌شود. سهمی که ساعت ده بالای خط است ممکن است در پایان روز زیر خط بسته شود. نتیجه‌ی قطعی را بعد از بسته شدن بازار ببینید. ملاک فیلتر قیمت پایانی است، نه آخرین معامله؛ در نمونه‌ی حشکوه آخرین معامله ۱٬۳۱۲ و پایانی ۱٬۳۰۲ بود.
  • خط روی بیشترین قیمت سقف‌ها کشیده می‌شود ولی شرط سوم فقط قیمت پایانی را می‌سنجد. سهمی که در روزهای قبل با سایه بالای خط رفته و زیر آن بسته شده، رد نمی‌شود؛ حشکوه در دو روز معاملاتی قبل از شکست همین‌طور بود. اگر شکست را فقط وقتی می‌خواهید که هیچ سایه‌ای هم قبلاً به خط نخورده باشد، در حلقه‌ی شرط سوم cl(x) را با hi(x) عوض کنید.
  • رد شدن از فیلتر یعنی سهم امروز بالای خط بسته شده، نه اینکه شکست تثبیت شده است. اگر قیمت در روزهای بعد دوباره زیر خط بسته شود و آنجا بماند، شکست کاذب بوده است.

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

خط روند نزولی در این فیلتر چطور رسم می‌شود؟
خط از بالاترین سقف ۶۰ روز معاملاتی اخیر شروع می‌شود. از بین سقف‌هایی که دست‌کم ۱۰ روز بعد از آن ثبت شده‌اند، سقفی انتخاب می‌شود که کم‌شیب‌ترین خط را می‌سازد؛ این همان خطی است که از بالای همه‌ی آن سقف‌ها رد می‌شود. سقف هم روزی است که بیشترین قیمتش از ۳ روز قبل و ۳ روز بعدش بالاتر باشد. خط بعد از سقف دوم ادامه پیدا می‌کند تا به امروز برسد.
چرا شکست باید مال امروز باشد؟
شرط سوم بررسی می‌کند که از سقف اول تا دیروز هیچ روزی بالای خط بسته نشده باشد. بدون این شرط، سهمی که هفته‌ی پیش خط را شکسته و حالا چند درصد بالاتر رفته هم در فهرست می‌آمد و فهرست هر روز با شکست‌های قدیمی شلوغ می‌شد. با این شرط، هر نماد فقط یک بار، در روزی که شکست اتفاق افتاده، در خروجی ظاهر می‌شود.
فرق شکست خط روند نزولی با شکست مقاومت چیست؟
مقاومت یک سطح افقی است؛ قیمتی که سهم چند بار به آن رسیده و برگشته. خط روند نزولی مایل است و هر روز پایین‌تر می‌آید، پس شکستش زودتر و در قیمت پایین‌تری اتفاق می‌افتد. شرط دوم این فیلتر، که سقف دوم را دست‌کم ۵ درصد پایین‌تر از سقف اول می‌خواهد، برای جدا کردن همین دو است؛ دو سقف هم‌ارتفاع یک مقاومت افقی می‌سازند، نه خط روند.
می‌شود همین فیلتر را برای شکست خط روند صعودی رو به پایین نوشت؟
بله، با برعکس کردن منطق. به جای PriceMax از PriceMin استفاده کنید و کف را روزی بگیرید که کمترین قیمتش از ۳ روز قبل و بعدش پایین‌تر است. کف اول پایین‌ترین کف ۶۰ روز اخیر است، کف دوم کفی که دست‌کم ۱۰ روز بعد ثبت شده و کم‌شیب‌ترین خط رو به بالا را می‌سازد، یعنی کوچک‌ترین s را دارد، و دست‌کم ۵ درصد بالاتر از کف اول است. بعد بررسی کنید که تا دیروز هیچ پایانی زیر خط نبوده و پایانی امروز زیر خط است.
چرا بعضی روزها هیچ سهمی از این فیلتر رد نمی‌شود؟
این فیلتر فقط روز شکست را نشان می‌دهد و هر نماد حداکثر یک روز در خروجی می‌آید، پس فهرستش به‌طور طبیعی کوتاه است؛ در اجرای ۱۹ مهر ۱۴۰۵ پنج نماد برگرداند. در روزهایی که بازار ریزشی است و کمتر سهمی بالای خط بسته می‌شود، فهرست ممکن است خالی باشد. اگر در روزی که بازار حال خوبی دارد هم خروجی خالی است، بررسی کنید تاریخچه‌ی روزانه‌ی تعدیل‌شده بارگذاری شده باشد.

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

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