پرایس اکشن
فیلتر پولبک به مقاومت شکستهشده با پایتون
فیلتر سهمهایی که در روند صعودی مقاومت قبلی را شکستهاند، بالا رفتهاند و حالا برای تثبیت به همان سطح شکستهشده برگشتهاند.
این فیلتر چیست؟
وقتی قیمت یک مقاومت مهم را میشکند، معمولاً یکراست بالا نمیرود. بعد از چند روز رشد، بخشی از خریداران سود میگیرند و قیمت به سمت همان سطحی برمیگردد که شکسته بود. به این برگشت پولبک میگویند. اگر سطح شکستهشده حالا نقش حمایت را بازی کند و قیمت زیرش نرود، شکست تأیید شده و سهم جایی ایستاده که تا سقف اخیرش فاصله دارد و تا سطح باطل شدن الگو فاصلهی کمی. این فیلتر همین وضعیت را در کل بازار پیدا میکند: سهمی که در ۴۰ روز اخیر دستکم ۱۰ درصد بالاتر از مقاومت قبلیاش رفته، حالا از آن سقف پایین آمده و دوباره کنار همان مقاومت ایستاده، بیآنکه کفهای اخیرش ساختار صعودی را خراب کرده باشد.
کد فیلتر با پایتون
حالت اجرا را انتخاب کنید؛ شرطها و مقدار ستونها با راهنمای جاوااسکریپت یکساناند. عنوان ستونهای دلخواه را در ویرایشگر تعیین کنید.
نسخهٔ جاوااسکریپت این فیلترپولبک چیست و چرا مقاومت شکستهشده حمایت میشود
مقاومت قیمتی است که سهم چند بار به آن رسیده و نتوانسته بالاتر برود. دلیلش معمولاً عرضهای است که روی همان قیمت منتظر نشسته: کسانی که بالای آن سطح خریده بودند و با رسیدن قیمت به سر به سر میفروشند، و کسانی که آن قیمت را سقف میدانند و آنجا سود میگیرند. وقتی تقاضا آنقدر زیاد میشود که همهی این عرضه را میخورد و قیمت بالای مقاومت بسته میشود، میگوییم مقاومت شکسته شده.
بعد از شکست، همان سطح معنای دیگری پیدا میکند. کسانی که زیرش فروخته بودند و رشد بعدی را از دست دادند، دوست دارند در همان حوالی دوباره بخرند. کسانی که موقع شکست خریدند از ورودشان دفاع میکنند. فروشندههای قدیمی هم دیگر آنجا نیستند، چون سهمشان را در خود شکست فروختهاند. نتیجه این است که وقتی قیمت بعد از یک رشد اصلاح میکند و به همان سطح برمیگردد، اغلب تقاضا پیدا میکند. در تحلیل تکنیکال به این جابهجایی نقش میگویند: مقاومت شکستهشده حمایت میشود.
پولبک برای کسی که شکست را از دست داده فرصت دوم است. ورود در لحظهی شکست یعنی خرید در هیجان و روی قیمتی که هنوز معلوم نیست بالای سطح میماند یا نه. ورود در پولبک یعنی خرید وقتی که شکست یک بار خودش را ثابت کرده، قیمت تا سقف اخیر جا دارد و اگر الگو خراب شود، سطحی که باطل شدنش را نشان میدهد درست زیر پای قیمت است.
همهی پولبکها نگه نمیدارند. اگر قیمت با قدرت زیر مقاومت شکستهشده برود و آنجا بماند، شکست کاذب بوده و همان سطح دوباره مقاومت میشود. کار این فیلتر پیدا کردن سهمهایی است که در لحظهی آزموناند؛ تصمیم دربارهی اینکه آزمون را پس میدهند یا نه با بررسی تابلو، حجم و رفتار قیمت در روزهای بعد است.
پنج شرط فیلتر به زبان ساده
برای اینکه شرطها ملموس شوند، سهمی را تصور کنید که مقاومت قبلیاش ۱۰۰۰ ریال است، یعنی بالاترین قیمتش در روزهای ۴۵ تا ۹۰ قبل به ۱۰۰۰ رسیده بود.
شرط اول، شکست واقعی: سقف ۴۰ روز اخیر دستکم ۱۰ درصد بالاتر از مقاومت باشد، یعنی دستکم ۱۱۰۰. این شرط شکستهای نیمبند را کنار میگذارد؛ سهمی که فقط یکی دو درصد از مقاومت بالاتر رفته هنوز ثابت نکرده که عرضهی آن سطح را خورده است.
شرط دوم، اصلاح: سقف دستکم ۸ درصد بالاتر از قیمت امروز باشد. اگر سقف ۱۱۵۰ بوده، قیمت امروز باید ۱۰۶۵ یا کمتر باشد. بدون این شرط، فیلتر سهمهایی را هم برمیگرداند که هنوز در اوجاند و هیچ برگشتی نکردهاند.
شرط سوم، رسیدن به سطح: قیمت امروز بین ۳ درصد زیر و ۶ درصد بالای مقاومت باشد، یعنی بین ۹۷۰ تا ۱۰۶۰. این همان محدودهای است که روی نمودارهای پایینتر با نوار نارنجی کمرنگ نشان داده شده. سه درصد زیر سطح مجاز است چون پولبکها کمتر پیش میآید که دقیقاً روی خود عدد متوقف شوند و کمی نفوذ به زیر سطح عادی است.
شرط چهارم، کف سالم: پایینترین قیمت ۱۵ روز اخیر بیشتر از ۷ درصد زیر مقاومت نرفته باشد، یعنی کمتر از ۹۳۰ نشده باشد. شرط سوم فقط قیمت امروز را میسنجد؛ ممکن است سهمی دیروز تا ۸۵۰ ریخته باشد و امروز با یک صف خرید به ۹۸۰ برگشته باشد. چنین سهمی سطح را از دست داده و این شرط بیرونش میگذارد.
شرط پنجم، روند صعودی: کف ۱۵ روز اخیر دستکم ۱۵ درصد بالاتر از کف بازهی ۴۵ تا ۹۰ روز قبل باشد. اگر کف آن بازه ۸۰۰ بوده، کف اخیر باید دستکم ۹۲۰ باشد. این شرط مطمئن میشود که سهم کفهای بالاتر میسازد و الگو در دل یک روند صعودی شکل گرفته، نه در یک نوسان بیجهت که سقف و کفش مدام جابهجا میشود.
سه پنجرهی زمانی: چرا ۴۰ روز، ۴۵ تا ۹۰ روز و ۱۵ روز
فیلتر روی تاریخچهی روزانه کار میکند و در آن h[0] آخرین روز معاملاتی ثبتشده است، h[1] روز قبل از آن و همینطور تا عقب. «روز» در این فیلتر یعنی ردیف تاریخچه، نه روز تقویمی؛ روزهای تعطیل و روزهایی که نماد بسته بوده شمرده نمیشوند، برای همین ۹۰ ردیف تاریخچه ممکن است چند ماه تقویمی را بپوشاند. در نمونههای پایین همین را میبینید: بازهی مقاومت بعضی از آنها چند ماه طول کشیده است.
پنجرهی ۴۵ تا ۹۰ روز قبل گذشتهی سهم است؛ مقاومت و کف قدیمی از اینجا میآیند. ۴۵ روز معاملاتی، حدود دو ماه، آنقدر بلند هست که سقفی که از آن بیرون میآید سقف معناداری باشد، نه نوسان یکی دو روز.
پنجرهی ۴۰ روز اخیر حال سهم است؛ سقف بعد از شکست از اینجا میآید. بین این دو پنجره پنج روز فاصله افتاده، روزهای ۴۰ تا ۴۴، که در هیچکدام شمرده نمیشوند. اگر دو پنجره به هم چسبیده بودند، روزهای اول رالی شکست میتوانستند در پنجرهی قدیمی بیفتند و خود مقاومت را بالا ببرند؛ این فاصله «قبل» و «بعد» را از هم جدا نگه میدارد.
پنجرهی ۱۵ روز اخیر، حدود سه هفتهی معاملاتی، طول معمول یک پولبک است. کف این پنجره نشان میدهد اصلاح اخیر تا کجا عمیق شده و دو شرط آخر روی آن سنجیده میشوند.
کد خط به خط
خط اول بدنه، var h=[it]، تاریخچهی تعدیلشدهی قیمت روزانهی نماد را در متغیر h میگذارد. تعدیلشده یعنی قیمتهای قبل از افزایش سرمایه و تقسیم سود با قیمت امروز هممقیاس شدهاند؛ در تاریخچهی تعدیلنشده یک افزایش سرمایه شکل یک ریزش بزرگ را پیدا میکند و سقف قبل از مجمع یک مقاومت ساختگی میسازد. هر خانهی آن یک روز است با فیلدهایی مثل PriceMax برای بیشترین قیمت روز و PriceMin برای کمترین قیمت روز. سه شرط بعدی نمادهایی را که تاریخچه ندارند، تاریخچهشان کمتر از ۹۰ روز است یا قیمت پایانیشان صفر است کنار میگذارند؛ بدون آنها حلقهها روی خانههایی که وجود ندارند خطا میدادند.
p قیمت پایانی امروز است. peak و res با صفر شروع میشوند چون دنبال بیشینهاند و هر قیمتی از صفر بزرگتر است. low و lowNow با یک عدد خیلی بزرگ شروع میشوند چون دنبال کمینهاند و هر قیمتی از آن کوچکتر است. این الگوی سادهی پیدا کردن بیشینه و کمینه در حلقه است و در بیشتر فیلترهای پرایس اکشن تکرار میشود.
حلقهی اول روی روزهای ۰ تا ۳۹ میچرخد و بزرگترین PriceMax را در peak نگه میدارد. حلقهی دوم روی روزهای ۴۵ تا ۸۹ میچرخد و همزمان دو کار میکند: بزرگترین PriceMax را در res و کوچکترین PriceMin را در low میگذارد. حلقهی سوم روی روزهای ۰ تا ۱۴ کوچکترین PriceMin را در lowNow نگه میدارد. شرط PriceMin>0 روزهایی را که معامله نداشتهاند و کمترین قیمتشان صفر ثبت شده رد میکند؛ وگرنه یک روز بیمعامله کف را صفر میکرد.
دو خط بعدی ستونهای خروجی را پر میکنند. p/res-1 فاصلهی قیمت از مقاومت است بهصورت نسبت، مثلاً ۰٫۰۵۲. ضرب در ۱۰۰۰، گرد کردن و تقسیم بر ۱۰ آن را به درصد با یک رقم اعشار تبدیل میکند: ۵٫۲. ستون دوم به همین روش فاصلهی سقف از قیمت امروز را میدهد.
خط return پنج شرط را با && به هم وصل میکند؛ نماد فقط وقتی برگردانده میشود که هر پنج شرط درست باشند. هر شرط به شکل ضرب نوشته شده، مثلاً peak>=res*1.10، که همان «سقف دستکم ۱۰ درصد بالاتر از مقاومت» است و از تقسیم بر عددی که ممکن است صفر باشد هم دوری میکند. کل بدنه داخل یک تابع است که بلافاصله اجرا میشود و true===function(){...}() نتیجهاش را به true یا false تبدیل میکند، چیزی که صفحهی فیلترنویسی از هر فیلتر انتظار دارد.
عددها را چطور با سلیقهی خودتان تنظیم کنید
همهی آستانههای فیلتر در خط return جمع شدهاند و تغییرشان ساده است. اگر شکستهای قویتر میخواهید، 1.10 را به 1.15 یا 1.20 ببرید. اگر فقط سهمهایی را میخواهید که درست روی سطحاند و هنوز واکنش ندادهاند، محدودهی شرط سوم را تنگ کنید، مثلاً res*0.99 تا res*1.03.
شرط چهارم سختگیری روی کف است. اگر 0.93 را به 0.97 برسانید، سهمهایی که در پولبک کمی زیر سطح سایه زدهاند حذف میشوند. در نمونهی میهن در همین صفحه میبینید که کف ۱۵ روز اخیرش ۵٫۷ درصد زیر مقاومت است؛ با 0.97 این سهم از فهرست بیرون میافتاد. این انتخاب بین فهرست کوتاهتر و تمیزتر و فهرستی است که فرصتهای کمتر تمیز را هم نشان میدهد.
برای پایههای بلندتر میتوانید پنجرهی مقاومت را عقبتر ببرید، مثلاً روزهای ۶۰ تا ۱۲۰. در این صورت شرط h.length<90 را هم به h.length<120 تغییر دهید و تاریخچهی تعدیلشدهی ۳۰۰ روزه را بارگذاری کنید، وگرنه حلقه به خانههایی میرسد که وجود ندارند.
خروجی فیلتر را چطور بخوانیم
ستون اول فاصلهی قیمت امروز از مقاومت شکستهشده به درصد است. عدد نزدیک صفر یا منفی یعنی سهم درست روی سطح ایستاده؛ حساسترین لحظهی الگو، جایی که یا واکنش میگیرد یا سطح را از دست میدهد. عدد ۴ تا ۶ یعنی سهم از سطح برگشته و واکنش اولیه را گرفته است.
ستون دوم فاصلهی سقف اخیر از قیمت امروز به درصد است و نشان میدهد اصلاح چقدر عمیق بوده. هرچه بزرگتر باشد، قیمت تا سقف قبلی، که اولین مانع بعدی است، جای بیشتری دارد.
اگر خروجی را بر اساس ستون اول از کوچک به بزرگ مرتب کنید، سهمهایی بالای فهرست میآیند که همین حالا در حال آزمون سطحاند. بعد از فیلتر، برای هر نماد سه چیز را نگاه کنید: آیا حجم در روزهای اصلاح کمتر از روزهای شکست بوده، که نشان میدهد فروش اصلاحی سنگین نبوده؛ آیا روی سطح کندل برگشتی یا ورود پول حقیقی دیده میشود؛ و آیا بازار کل همراه است.
سیگنالهای اصلی
- سقف ۴۰ روز اخیر دستکم ۱۰ درصد بالاتر از مقاومت روزهای ۴۵ تا ۹۰ قبل
- قیمت امروز دستکم ۸ درصد پایینتر از آن سقف
- قیمت امروز بین ۳ درصد زیر تا ۶ درصد بالای مقاومت شکستهشده
- کف ۱۵ روز اخیر بیشتر از ۷ درصد زیر مقاومت نرفته
- کف ۱۵ روز اخیر دستکم ۱۵ درصد بالاتر از کف قبلی، یعنی روند صعودی سالم
کاربردهای این فیلتر
- پیدا کردن فرصت دوم برای سهمهایی که شکست مقاومتشان را از دست دادهاید
- ورود در جایی که فاصله تا سطح باطل شدن الگو کم و فاصله تا سقف اخیر زیاد است
- ساختن فهرست روزانهی سهمهایی که در حال آزمون یک سطح مهماند
- پایهای برای فیلترهای پرایس اکشن خودتان، با عوض کردن پنجرهها و آستانهها
اشتباههای رایج در استفاده از این فیلتر
- این فیلتر روی [it]، یعنی تاریخچهی تعدیلشده، نوشته شده. اگر آن را با [ih] اجرا کنید، نمادهایی که در ۹۰ روز اخیر افزایش سرمایه یا تقسیم سود داشتهاند مقاومت و کف اشتباه میگیرند. در اجرای ۱۸ مهر ۱۴۰۵، نسخهی [ih] ۲۱ نماد برگرداند که ۸ تایشان فقط به خاطر همین جابهجایی قیمت در فهرست بودند، و ۶ نماد درست را هم جا انداخت.
- مقاومت و سقف از بیشترین قیمت روز حساب میشوند، نه قیمت پایانی. یک سایهی بلند در یک روز کافی است تا مقاومت را بالا ببرد. اگر سطحهای مبتنی بر قیمت پایانی میخواهید، PriceMax را در دو حلقهی اول با PClosing عوض کنید.
- تاریخچهی قیمت تعدیلشده باید روی صفحهی فیلترنویسی بارگذاری شده باشد. بدون آن شرط h.length<90 همهی نمادها را رد میکند و فیلتر خالی برمیگردد. نمادهای تازهوارد که هنوز ۹۰ روز معامله ندارند هم به همین دلیل هیچوقت در خروجی نمیآیند.
- وسط بازار قیمت پایانی هنوز نهایی نشده و هر لحظه عوض میشود. سهمی که ساعت ده در محدوده است ممکن است در پایان روز بیرون بیفتد. نتیجهی قطعی را بعد از بسته شدن بازار ببینید.
- رد شدن از فیلتر یعنی سهم در حال آزمون سطح است، نه اینکه آزمون را پس داده. پولبکی که با حجم سنگین و بسته شدن چندروزه زیر محدوده همراه شود، شکست کاذب بوده است.
پرسشهای پرتکرار
پولبک در بورس یعنی چه؟
پولبک یعنی برگشت قیمت به سطحی که تازه شکسته است. وقتی سهمی مقاومتی را رو به بالا میشکند و بعد از چند روز رشد اصلاح میکند و به همان سطح برمیگردد، این برگشت پولبک است. اگر سطح نگه دارد، شکست تأیید میشود و مقاومت قبلی نقش حمایت را پیدا میکند.
فرق پولبک با شکست کاذب چیست؟
در پولبک قیمت به سطح شکستهشده برمیگردد ولی بالای آن یا کمی زیر آن متوقف میشود و دوباره بالا میرود. در شکست کاذب قیمت به زیر سطح برمیگردد و همانجا میماند. شرط سوم و چهارم این فیلتر برای جدا کردن این دو گذاشته شدهاند: قیمت امروز بیشتر از ۳ درصد و کف اخیر بیشتر از ۷ درصد زیر مقاومت نباید باشد.
چرا مقاومت از بیشترین قیمت روز حساب شده، نه از قیمت پایانی؟
چون سقفی که فروشندهها در آن عرضه کردهاند همان بالاترین قیمت معاملهشده است، حتی اگر روز با قیمت پایینتری بسته شده باشد. این انتخاب محافظهکارانه است و مقاومت را بالاتر میگذارد. اگر ترجیح میدهید فقط قیمتهای پایانی را ملاک بگیرید، کافی است در دو حلقهی اول PriceMax را با PClosing عوض کنید.
میشود همین فیلتر را برای پولبک به حمایت شکستهشده در روند نزولی نوشت؟
بله، با برعکس کردن منطق. در پنجرهی ۴۵ تا ۹۰ روز قبل کمترین PriceMin را بهعنوان حمایت بگیرید، در ۴۰ روز اخیر کف تازهای که دستکم ۱۰ درصد زیر آن حمایت است، و بررسی کنید قیمت امروز به همان حمایت شکستهشده برگشته و سقف ۱۵ روز اخیر بیشتر از ۷ درصد بالای آن نرفته است. چنین فیلتری سهمهایی را پیدا میکند که حمایت از دست رفته حالا برایشان مقاومت شده است.
چرا بعضی روزها هیچ سهمی از این فیلتر رد نمیشود؟
این الگو به روند صعودی نیاز دارد: شکستی در دو ماه گذشته و کفهای بالاتر. در دورههایی که بازار مدتی ریزشی یا خنثی بوده، تعداد سهمهایی که هر پنج شرط را دارند بهطور طبیعی کم یا صفر میشود. اگر در روزی که بازار حال خوبی دارد هم خروجی خالی است، بررسی کنید تاریخچهی قیمت تعدیلشده بارگذاری شده باشد.
فیلترهای مرتبط
فیلتر شکست خط روند نزولی — فیلتر سهمهایی که امروز خط روند نزولیشان را شکستهاند و بالای خط بسته شدهاند؛ خطی که از بالاترین سقف ۶۰ روز اخیر کشیده میشود و تا دیروز هیچ قیمت پایانی بالای آن نبوده است.
فیلتر کندلهای هایکن آشی — فیلتر تشخیص روندهای صریح و بدون نویز با استفاده از محاسبات کندلهای Heikin Ashi.
فیلتر میانگین متحرک نمایی (EMA) — فیلتر تشخیص تقاطع و روند بر اساس میانگینهای متحرک نمایی (EMA 12, 26, 50).
فیلتر حجم بالاتر از میانگین ماه — فیلتر مقایسه حجم امروز با میانگین حجم یک ماه معاملاتی، برای پیدا کردن نمادهایی که تازه تحرک گرفتهاند.
