BOCS Adaptive Strategy – سیستم خودکار شکست نوسان
این استراتژی چه کاری انجام میدهد: این یک استراتژی معاملاتی خودکار است که الگوهای تثبیت قیمت را از طریق تحلیل نوسان شناسایی میکند و زمانی که قیمت از این کانالها عبور میکند، معاملات را اجرا میکند. سطوح حد سود و حد ضرر بهصورت پویا با استفاده از میانگین محدوده واقعی (ATR) محاسبه میشوند تا با نوسانات فعلی بازار سازگار باشند. استراتژی بخشی از پوزیشن را در هدف سود اول میبندد و باقیمانده را در هدف دوم یا حد ضرر خارج میکند.
روش فنی:
فرآیند نرمالسازی قیمت: استراتژی با نرمالسازی قیمت شروع میشود تا مقیاس اندازهگیری یکنواخت ایجاد شود. بیشترین قیمت بالا و پایینترین قیمت پایین در طول دوره بازگشتی تعریفشده توسط کاربر (بهطور پیشفرض ۱۰۰ کندل) محاسبه میشود. سپس قیمت پایانی فعلی با فرمول زیر نرمال میشود:
[ \text{Normalized Price} = \frac{\text{Close} – \text{Lowest Low}}{\text{Highest High} – \text{Lowest Low}} ]
این مقادیر را بین ۰ تا ۱ تولید میکند و تحلیل نوسان را برای ابزارها و سطوح قیمتی مختلف یکنواخت میسازد.
تشخیص نوسان: انحراف معیار ۱۴ دورهای به سری نرمال شده قیمت اعمال میشود. انحراف معیار میزان انحراف قیمتها از میانگین را اندازهگیری میکند – مقادیر بالاتر نشاندهنده گسترش نوسان و مقادیر پایینتر نشاندهنده تثبیت قیمت است. استراتژی از توابع ta.highestbars() و ta.lowestbars() برای پیگیری اوج و کف نوسان در طول دوره تشخیص (بهطور پیشفرض ۱۴ کندل) استفاده میکند.
منطق شکلگیری کانال: زمانی که نوسان از سطح بالا به سطح پایین عبور کند، این نشانه شروع فاز تثبیت است. استراتژی این لحظه را با ta.crossover(upper, lower) ثبت میکند و بالاترین و پایینترین قیمتها در طول تثبیت را دنبال میکند. اینها مرزهای کانال را تشکیل میدهند. فاصله بین عبور و کندل فعلی باید حداقل ۱۰ کندل باشد تا کانالهای نادرست از نوسانات کوتاهمدت ایجاد نشود. کانالها با استفاده از اشیاء Box با مرزهای بالاو پایین رسم میشوند.
تولید سیگنال شکست: دو حالت تشخیص وجود دارد:
- حالت بسته شدن قوی (پیشفرض): شکست زمانی رخ میدهد که نقطه میانی بدنه کندل
math.avg(close, open)از مرز کانال عبور کند. این حالت شکستهای فقط سایهای را فیلتر میکند. - حالت هر تماس: شکست زمانی رخ میدهد که قیمت پایانی از مرز کانال عبور کند.
زمانی که قیمت بالای مرز بالایی کانال بسته شود، سیگنال شکست صعودی ایجاد میشود و زمانی که قیمت زیر مرز پایینی بسته شود، سیگنال شکست نزولی تولید میشود. سپس کانال از نمودار حذف میشود.
مدیریت ریسک مبتنی بر ATR: استراتژی از request.security() برای دریافت مقادیر ATR از یک تایمفریم مشخص استفاده میکند، که میتواند با تایمفریم نمودار متفاوت باشد. به عنوان مثال، در نمودار ۵ دقیقهای، میتوان از ATR یک دقیقهای برای محاسبات سریعتر استفاده کرد. ATR با ta.atr(length) و دوره تعریفشده توسط کاربر (پیشفرض ۱۴) محاسبه میشود.
سطوح خروج در لحظه شکست محاسبه میشوند:
معاملات خرید: [ \text{Long Entry Price} = \text{Upper channel boundary} ] [ \text{Long TP1} = \text{Entry} + (\text{ATR} \times \text{TP1 Multiplier}) ] [ \text{Long TP2} = \text{Entry} + (\text{ATR} \times \text{TP2 Multiplier}) ] [ \text{Long SL} = \text{Entry} – (\text{ATR} \times \text{SL Multiplier}) ]
معاملات فروش: [ \text{Short Entry Price} = \text{Lower channel boundary} ] [ \text{Short TP1} = \text{Entry} – (\text{ATR} \times \text{TP1 Multiplier}) ] [ \text{Short TP2} = \text{Entry} – (\text{ATR} \times \text{TP2 Multiplier}) ] [ \text{Short SL} = \text{Entry} + (\text{ATR} \times \text{SL Multiplier}) ]
منطق اجرای معامله:
هنگامی که شکست رخ میدهد، استراتژی بررسی میکند که آیا فیلتر ساعات معاملاتی فعال است و موقعیت فعلی صفر است (هیچ پوزیشن باز ندارد). اگر تأیید حجم فعال باشد، همچنین بررسی میشود که حجم فعلی بیش از ۱.۲ برابر میانگین متحرک ساده ۲۰ دورهای باشد.
اگر همه شرایط برقرار باشند:
strategy.entry()پوزیشن را با تعداد قرارداد تعیینشده توسط کاربر باز میکندstrategy.exit()بلافاصله دستور حد ضرر را قرار میدهد- کد قیمت را نسبت به سطوح TP1 و TP2 در هر کندل رصد میکند
هنگامی که قیمت به TP1 رسید، strategy.close() تعداد مشخصی از قراردادها را میبندد. زمانی که قیمت به TP2 رسید، تمام قراردادهای باقیمانده بسته میشوند. اگر ابتدا حد ضرر فعال شود، کل پوزیشن از طریق strategy.exit() خارج میشود.
سیستم تحلیل حجم:
استراتژی از ta.requestUpAndDownVolume(timeframe) برای دریافت حجم صعودی، نزولی و دلتا حجم از تایمفریم مشخص استفاده میکند. سه حالت نمایش وجود دارد:
- حالت حجم: حجم کل بهصورت میلههایی نسبت به میانگین ۲۰ دورهای نمایش داده میشود
- حالت مقایسه: حجم صعودی و نزولی بهصورت جداگانه نمایش داده میشوند
- حالت دلتا: دلتا حجم خالص (حجم صعودی – نزولی) بهصورت میله نمایش داده میشود
منطق تأیید حجم، حجم کندل شکست را با SMA ۲۰ دورهای مقایسه میکند. اگر حجم ÷ میانگین > ۱.۲، شکست «تأیید شده» محسوب میشود. زمانی که تأیید حجم فعال باشد، تنها شکستهای تأیید شده معامله میشوند.
پارامترهای ورودی:
تنظیمات استراتژی:
- تعداد قراردادها: تعداد ثابت معامله در هر سیگنال (۱-۱۰۰۰)
- نیاز به تأیید حجم: فعال/غیرفعال
- تعداد قرارداد بستهشده در TP1: (۱-۱۰۰۰)
- استفاده از فیلتر ساعات معاملاتی: فعال/غیرفعال
- ساعات معاملاتی: فرمت HHMM-HHMM (مثال: “0930-1600”)
تنظیمات اصلی:
- طول نرمالسازی: تعداد کندل برای محاسبه بیشترین/کمترین (۱-۵۰۰، پیشفرض ۱۰۰)
- طول تشخیص جعبه: دوره تشخیص اوج/کف نوسان (۱-۱۰۰، پیشفرض ۱۴)
- فقط بسته شدن قوی: فعال/غیرفعال
- کانالهای تو در تو: اجازه ایجاد کانالهای همپوشان
تنظیمات ATR TP/SL:
- تایمفریم ATR: تایمفریم منبع ATR (۱، ۵، ۱۵، ۶۰ و غیره)
- طول ATR: دوره هموارسازی ATR (۱-۱۰۰، پیشفرض ۱۴)
- ضریب TP1: فاصله از ورود بر حسب ATR (۰.۱-۱۰، پیشفرض ۲.۰)
- ضریب TP2: فاصله از ورود بر حسب ATR (۰.۱-۱۰، پیشفرض ۳.۰)
- ضریب SL: فاصله از ورود بر حسب ATR (۰.۱-۱۰، پیشفرض ۱.۰)
- فعالسازی TP2: فعال/غیرفعال
شاخصهای بصری:
- جعبههای کانال با پر رنگ نیمه شفاف نشاندهنده مناطق تثبیت
- مناطق سبز/قرمز در مرز کانالها نشاندهنده مناطق شکست
- میلههای حجم داخل کانال با حالت انتخابشده
- خطوط TP/SL با برچسب قیمت و فاصله
- سیگنالهای ورود با مثلثهای بالا/پایین
- جدول وضعیت استراتژی شامل پوزیشن، تعداد قرارداد، سود/زیان، مقدار ATR و تأیید حجم
نحوه استفاده:
اسکالپ ۲ دقیقهای:
- تایمفریم ATR = ۱ دقیقه
- طول ATR = ۱۲
- ضریب TP1 = 2.0، TP2 = 3.0، SL = 1.5
- تأیید حجم و فقط بسته شدن قوی فعال
- فیلتر ساعات معاملاتی برای جلوگیری از دورههای کم حجم
معاملات روزانه ۵-۱۵ دقیقه:
- تایمفریم ATR = مطابق نمودار یا ۵ دقیقه
- طول ATR = ۱۴
- ضریب TP1 = 2.0، TP2 = 3.5، SL = 1.2
- تأیید حجم توصیه شده اما اختیاری
معاملات نوسانی ساعتی+:
- تایمفریم ATR = ۱۵-۳۰ دقیقه
- طول ATR = ۱۴-۲۱
- ضریب TP1 = 2.5، TP2 = 4.0، SL = 1.5
- تأیید حجم اختیاری، کانالهای تو در تو میتوانند فعال شوند
نکات تست گذشته:
- بهترین عملکرد در فازهای رونددار یا گسترش نوسان
- بازارهای تثبیتی یا پرنوسان، سیگنالهای اشتباه بیشتری تولید میکنند
- تایمفریمهای کوتاهتر نیازمند ضریب SL بیشتر هستند
- کمیسیون و لغزش در نمودارهای کمتر از ۵ دقیقه اثر قابل توجه دارد
- تأیید حجم معمولاً نرخ موفقیت را افزایش میدهد اما تعداد معاملات را کاهش میدهد
- ضریب ATR باید برای هر ابزار بهینهسازی شود
بازارهای قابل استفاده:
قابل استفاده برای هر ابزار دارای داده قیمت و حجم شامل جفتارزها، شاخصها، سهام، ارزهای دیجیتال، کالاها و قراردادهای آتی. برای تأیید حجم به داده حجم در TradingView نیاز است.
محدودیتهای شناختهشده:
- حد ضرر ممکن است در نوسان شدید یا گپ دقیق اجرا نشود
request.security()روی تایمفریمهای پایینتر نیاز به اشتراک بالاتر TradingView دارد- شکستهای کاذب قابل حذف کامل نیستند
- عملکرد بستگی زیادی به وضعیت بازار دارد (رونددار یا رنج)
- منطق بستن جزئی نیاز به حجم پوزیشن کافی دارد
افشای ریسک:
معامله شامل ریسک قابل توجه زیان است. عملکرد گذشته هیچ تضمینی برای آینده ندارد. این استراتژی صرفاً آموزشی و برای تست خودکار ارائه شده است. ابتدا روی داده تاریخی تست و تمرین بدون ریسک کنید. از مدیریت سرمایه مناسب استفاده کنید و هرگز بیش از توان خود ریسک نکنید. مشاوره با مشاور مالی معتبر توصیه میشود.
قدردانی و منابع:
این استراتژی بر اساس روش تشخیص کانال ایجاد شده توسط AlgoAlpha در اندیکاتور “Smart Money Breakout Channels” ساخته شده است. قدردانی کامل از AlgoAlpha برای ارائه رویکرد نرمالسازی نوسان و اشتراک آن با جامعه TradingView. بهبودهای اضافه شده شامل اجرای خودکار معامله، مدیریت ریسک ATR چند تایمفریمی، بستن جزئی پوزیشن، فیلتر تأیید حجم و رصد لحظهای پوزیشن هستند.

