رفتن به محتوا
همه راهبردها

استراتژی‌ها

BTC انتقال مومنتوم بین‌جلسه‌ای — لانگ-شورت، تک‌ابزار OHLCV: جهت حرکت جلسهٔ ASIA حرکت جلسهٔ US را پیش‌بینی می‌کند؛ در جلسهٔ US در همان جهت معامله کنید ONLY وقتی حرکت Asia بزرگ است، overnight خنثی (BINANCE BTCUSDT USD-M، کندل‌های 1H، درون‌روزی، 2-پارامتری)

نتیجه: رهاشده

BtcAsiaToUsSessionCarryoverLS

خوب‌اندازه‌گیری‌شده: 594 معامله در طول تاریخچه کامل 2020-2026 1H، لانگ/شورت متعادل (293/301)، اجرای تمیز (594 سیگنال داده‌شده، 594 ارسال‌شده، بدون افت)

فرضیه

یک استراتژی LONG-SHORT، SINGLE-INSTRUMENT، صرفاً-OHLCV INTRADAY روی BTCUSDT.BINANCE USD-M دائمی که واقعاً از تمام موارد pending یا dead اینجا متمایز است — نه NOT یک trend/breakout (مومنتوم dual-TF، SuperTrend، Donchian، ORB)، نه NOT یک mean-reversion/fade (هر دو dead)، و نه NOT یک سیگنال supplementary-feed (همه زیان‌ده خالص). این استراتژی یک SESSION LEAD-LAG درون‌روزی را بهره‌برداری می‌کند: لحن جهت‌دار تعیین‌شده در جلسهٔ کم‌مشارکت ASIA (00:00-08:00 UTC) تمایل دارد به جلسهٔ نقدشونده‌تر US (13:00-21:00 UTC)……نمایش بیشترنمایش کمتر

یک استراتژی LONG-SHORT، SINGLE-INSTRUMENT، صرفاً-OHLCV INTRADAY روی BTCUSDT.BINANCE USD-M دائمی که واقعاً از تمام موارد pending یا dead اینجا متمایز است — نه NOT یک trend/breakout (مومنتوم dual-TF، SuperTrend، Donchian، ORB)، نه NOT یک mean-reversion/fade (هر دو dead)، و نه NOT یک سیگنال supplementary-feed (همه زیان‌ده خالص). این استراتژی یک SESSION LEAD-LAG درون‌روزی را بهره‌برداری می‌کند: لحن جهت‌دار تعیین‌شده در جلسهٔ کم‌مشارکت ASIA (00:00-08:00 UTC) تمایل دارد به جلسهٔ نقدشونده‌تر US (13:00-21:00 UTC) PERSIST، زیرا جریان US/نهادی حرکت را ادامه می‌دهد و آن را معکوس نمی‌کند. در هر روز UTC، علامت و اندازهٔ بازده جلسهٔ Asia اندازه‌گیری می‌شود؛ وقتی حرکت Asia LARGE است (یک سیگنال جهت‌دار واقعی، نه نویز)، استراتژی در جلسهٔ US در جهت SAME وارد می‌شود و فقط همان جلسه نگه می‌دارد، و FLAT overnight می‌شود (بدون مواجهه با funding، بدون gap شبانه، بدون ریسک روند چندروزه). این با opening-range breakoutِ pending یعنی BTC متفاوت است (که range را BREAKOUT از نخستین ساعت‌ها معامله می‌کند) — اینجا breakout وجود ندارد؛ این یک CARRYOVER جهت‌دارِ حرکت جلسه‌ای تثبیت‌شده به جلسه‌ای جداگانه و دیرتر است. ناوردای قابل‌دوام‌ماندن را حفظ می‌کند (تک‌ابزار، صرفاً OHLCV با تاریخچهٔ کامل 2020-2026 1H، لانگ-شورت، بدون supplementary feed طبق درس net-loser، بدون leg دوم طبق L69) و برای دروازه‌های آماری ساخته شده است: cadence تقریباً روزانه، تعداد معاملات LARGE ایجاد می‌کند (>100/سال) که tripwire اندازه‌پذیری را پشت سر می‌گذارد و برآورد Sharpe تعدیل‌شده را دقیق‌تر می‌کند، و فقط 2 FREE پارامتر (آستانهٔ ورود بر اساس حرکت Asia، ضریب stop ATR) جریمهٔ کاهش best-of-225-trial را کمینه می‌کند. همچنین خلأ bucket کوتاه‌مدت را پر می‌کند (8.6% در برابر 10%).

Iteration 2 شکست Layer-2 را عیناً رفع می‌کند: هر شش سناریوی مصنوعی خطای 'TypeError: _day_of() takes 1 positional argument but 2 were given' را ایجاد کردند. هارنس Layer-2 هر ویژگی callable روی proxy را به‌عنوان متد BOUND بازbind می‌کند، بنابراین توابع کمکی @staticmethod یعنی _day_of/_hour_of نمونه را به‌عنوان آرگومان اول و bar را به‌عنوان آرگومان دوم دریافت کردند. رفع: هر دو اکنون متدهای معمولی نمونه (self, bar) هستند — محل‌های فراخوانی از قبل از self._day_of(bar)/self._hour_of(bar) استفاده می‌کردند، بنابراین چیز……نمایش بیشترنمایش کمتر

Iteration 2 شکست Layer-2 را عیناً رفع می‌کند: هر شش سناریوی مصنوعی خطای 'TypeError: _day_of() takes 1 positional argument but 2 were given' را ایجاد کردند. هارنس Layer-2 هر ویژگی callable روی proxy را به‌عنوان متد BOUND بازbind می‌کند، بنابراین توابع کمکی @staticmethod یعنی _day_of/_hour_of نمونه را به‌عنوان آرگومان اول و bar را به‌عنوان آرگومان دوم دریافت کردند. رفع: هر دو اکنون متدهای معمولی نمونه (self, bar) هستند — محل‌های فراخوانی از قبل از self._day_of(bar)/self._hour_of(bar) استفاده می‌کردند، بنابراین چیز دیگری تغییر نکرد و رفتار تحت engine یکسان است. دوم، تغییری دفاعی در همان مسیر کمکی: timestamp گزارش‌شدهٔ harness (1735690980000) بر حسب MILLISECONDS است، در حالی که engine نانوثانیه می‌دهد؛ کد قدیمی بدون قید بر 1e9 تقسیم می‌کرد که تحت harness هر کندل مصنوعی را در همان ساعت/روز فشرده می‌کرد و منطق جلسه را منجمد می‌ساخت (یک شکست نهفتهٔ دوم Layer-2 پس از رفع TypeError). تابع جدید _epoch_secs() بر اساس بزرگی مقدار را نرمال می‌کند (ns/us/ms/s) و برای کندل‌های واقعی نانوثانیه‌ای بدون تغییر عبور می‌کند، بنابراین Layer-3 و backtest واقعی بی‌تأثیرند. شکل سیگنال، قواعد ورود/خروج، ATR، اندازه‌گذاری، importها و ساختار کلاس، در غیر این صورت نسبت به کدی که قبلاً Layer 1 را گذرانده بود دست‌نخورده‌اند.

فرضیه امید ریاضی منفی بر روی نمونه به‌خوبی اندازه‌گیری‌شده از تاریخچه کامل. در طول 594 معامله در سراسر 2020-2026، انتقال جلسه آسیا->US پول از دست می‌دهد: profit_factor 0.937 (<1)، total_return -9.81%، امید ریاضی -$17.34/معامله، شارپ -0.15 با CI [-0.760، 0.458] که صفر را دربرمی‌گیرد، information_ratio -0.76. تنها سال مثبت 2020 (+15.3%) است؛ هر سال از آن پس منفی یا خنثی است (2021 -8.1، 2022 -5.8، 2025 -10.8) با شارپ غلتانی که تا -8.3 توسط 2026 روند دارد — فرضیه «حرکت بزرگ آسیا حرکت US را پیش‌بینی می‌کند» به‌سادگی تأیید نمی‌شود. همچنین در حاشیه کارمزد است: avg_trade_return_pct 0.110% زیر کف 0.15% بایننس USD-M (L22) قرار دارد. تنها با 2 پارامتر آزاد و یک مزیت جهت‌دار خالص منفی، تنظیم نمی‌تواند علامت مزیتی که وجود ندارد را معکوس کند. این امضای بازنده خالص fee_edge/no_edge است — به 2 ساعت بهینه‌سازی نمی‌ارزد.

پیاده‌سازی

BTCUSDT.BINANCE USD-M دائمی، کندل‌های 1H، lead-lag جلسه‌ای درون‌روزی لانگ-شورت. در هر روز UTC، بازده جلسهٔ Asia (00:00-08:00 UTC از باز تا بسته) به‌صورت افزایشی انباشته و با انحراف معیار آخرین 30 بازده Asia (ATR-مبنای fallback پراکندگی تا زمان گرم‌شدن تاریخچه) نرمال می‌شود و یک z-score پیوسته در هر کندل بازگردانده می‌شود. در ساعت بازشدن جلسهٔ US (13:00 UTC)، استراتژی در جهت SAME حرکت Asia وارد می‌شود، مشروط به |z| >= entry_z، حداکثر یک ورود در هر روز تقویمی. در ساعت بسته‌شدن جلسهٔ US (20:00 UTC) خارج می‌شود تا پوزیشن overnight FLAT باشد (بدون funding و بدون ریسک gap)، یا زودتر بر اساس stop مبتنی بر ATR (stop_atr_mult x ATR، با کف min_stop_pct). اندازه‌گذاری، risk_frac از equity را در فاصلهٔ stop به خطر می‌اندازد و gross را به max_notional_frac x equity محدود می‌کند. تمام stateها (ATR، بازده جلسه، deque پراکندگی) به‌ازای هر کندل O(1) هستند؛ roll روز بر timestamp خود کندل متکی است، نه شمارندهٔ کندل.

نتایج تأیید

CLEAN RESTART 2026-09-04 — تاریخچهٔ verdict و سوابق یادگیری این اجرا حذف و اجرا از مرحلهٔ راستی‌آزمایی دوباره آغاز شد. رهاشدن قبلی آن ناشی از پایپ‌لاین بود، نه بازار: هارنس Layer-2 توابع کمکی @staticmethod را اشتباه bind می‌کرد (رفع شد)، QA verdictهای نهایی عملکرد را بر اساس یک smoke test بهینه‌نشده صادر می‌کرد (حذف شد — QA اکنون فقط صحت را ارزیابی می‌کند)، و timeoutهای sandbox ناشی از کمبود اسلات backtest بودند (رفع شد). فرضیه و کد استراتژی تغییری نکرده‌اند. کد را بر اساس شایستگی‌های خودش راستی‌آزمایی کنید؛ عملکرد بعداً توسط backtest کامل و optimizer تعیین می‌شود.

_param_bounds = {entry_z: [...], stop_atr_mult: [...]} را مطابق clampهای کد اضافه کنید؛ تمام ثابت‌های ساعت جلسه/ATR/ریسک را خارج از آن نگه دارید.

پیکربندی NO _param_bounds را اعلام می‌کند، با وجود اینکه فرضیه بر «تنها 2 FREE پارامتر» برای کمینه‌کردن جریمهٔ کاهش best-of-225-trial استوار است. بدون آن، optimizer سطح صریحی ندارد که آن را به {entry_z، stop_atr_mult} مرتبط کند و انضباط 2-پارامتری تضعیف می‌شود. نقص صحت نیست.

برای پنجرهٔ کامل us_exit_hour=21 تنظیم کنید، یا 20:00 را به‌عنوان مورد عمدی مستند کنید.

فرضیه جلسهٔ US را 13:00-21:00 UTC نام‌گذاری می‌کند، اما us_exit_hour برابر 20 است و خروج را یک ساعت زودتر اجباری می‌کند. جزئی است و سازوکار یا ناوردای شبانهٔ خنثی را تغییر نمی‌دهد.

بررسی بک‌تست

شارپ
-0٫15
بازده کل
-9٫81%
حداکثر افت سرمایه
23٫40%
کل معاملات
594
نرخ برد
44٫8%
ضریب سود
0٫94

خوب‌اندازه‌گیری‌شده: 594 معامله در طول تاریخچه کامل 2020-2026 1H، لانگ/شورت متعادل (293/301)، اجرای تمیز (594 سیگنال داده‌شده، 594 ارسال‌شده، بدون افت)

خانوادهٔ واقعاً متمایزِ lead-lag جلسه‌ای درون‌روزی؛ overnight خنثی، همبستگی پایین با benchmark (0.025)، بدون وابستگی به supplementary-feed

زیان‌ده خالص: profit_factor 0.937 (<1)، total_return -9.81%، امید ریاضی -$17.34/معامله، Sharpe برابر -0.15 (CI حول صفر قرار دارد)، information_ratio -0.76

avg_trade_return_pct 0.110% پایین‌تر از کف کارمزد 0.15% Binance USD-M است — حتی با نادیده‌گرفتن امید ریاضی منفی، از نظر کارمزد حاشیه‌ای است

تنها 2020 (+15.3%) به‌طور معنادار مثبت است؛ هر سال متعاقب منفی یا خنثی (2025 -10.8%)، شارپ غلتانی تا -8.3 توسط 2026 روند دارد — فرضیه انتقال جلسه مزیت پایداری ندارد

return_kurtosis 78.6 — جریان ناهموار بازار (به‌عنوان مثال یک روز -6.07% در 2023-08-29) به‌جای یک مزیت هموار

تاریخچه تکرار

راستی‌آزمایی ناموفق بود (Layer 2 — سناریوهای مصنوعی): پارامترهای استفاده‌شده: ['entry_z', 'min_bars', 'risk_frac', 'atr_period', 'min_notional', 'min_stop_pct', 'min_vol_days', 'us_exit_hour', 'asia_end_hour', 'stop_atr_mult', 'us_entry_hour', 'asia_start_hour', 'max_notional_frac', 'vol_lookback_days'] بررسی کنید که __init__ همهٔ attributeها را از self.parameters.get() تنظیم می‌کند. - steady_uptrend: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp کندل:……نمایش بیشترنمایش کمتر

راستی‌آزمایی ناموفق بود (Layer 2 — سناریوهای مصنوعی): پارامترهای استفاده‌شده: ['entry_z', 'min_bars', 'risk_frac', 'atr_period', 'min_notional', 'min_stop_pct', 'min_vol_days', 'us_exit_hour', 'asia_end_hour', 'stop_atr_mult', 'us_entry_hour', 'asia_start_hour', 'max_notional_frac', 'vol_lookback_days'] بررسی کنید که __init__ همهٔ attributeها را از self.parameters.get() تنظیم می‌کند. - steady_uptrend: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp کندل: 1735690980000) - steady_downtrend: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp کندل: 1735690980000) - flat_ranging: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp کندل: 1735690980000) - volatility_spike: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp کندل: 1735690980000) - zero_volume: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp کندل: 1735690980000) - price_gap: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (timestamp کندل: 1735690980000)

Stratmill ابزاری برای پژوهش و معامله آزمایشی است، نه مشاوره مالی یا کارگزار. نتایج بک‌تست و معامله آزمایشی فرضی هستند. معامله‌گری با ریسک زیان همراه است.