Mga Estratehiya
King Keltner (Raschke) Channel Breakout, kumpirmado ng slope, long-short, exit sa muling pagtawid sa midline, muling inilatag sa orasan na 4H (ETHUSDT.BYBIT 4H, purong OHLCV, mga default ng may-akda na 20/50)
Resulta: Inabandona
EthBybitKingKeltnerBreakout4H
Buod ng Resulta
Muling inilatag ng EthBybitKingKeltnerBreakout4H ang breakout ng King Keltner na FMZ (midline na EMA na kinukumpirma ng slope, may mga band na ATR, long at short, at exit sa muling pagtawid sa midline) sa ETHUSDT.BYBIT 4H. Pinili ang pagitan na 4H matapos ipakita ng paunang pag-aaral na hindi nito masaklaw ang bayarin ang bersyong 1H. Hindi kailanman pumasa ang code sa sandbox verification ng Layer 3: paulit-ulit na lumampas ang smoke test sa limitasyong 300s sa ~20,000-bar na saklaw. Matapos ang 3 iteration, kabilang ang muling pagsulat sa ATR bilang rolling sum na O(1), iniwan ang run bago masuri ang backtest, optimization, analysis o risk review, kaya hindi nasukat sa loob ng factory ang edge.
Hypothesis
Inaayos ng Iteration 3 ang Layer-3 sandbox_timeout. Ang tanging per-bar loop na kontrolado ng strategy ay ang 50-bar na kabuuan ng true range na ginagamit para muling buuin ang ATR sa bawat bar. Isa na itong rolling scalar sum: idinadagdag ang pinakabagong TR at ibinabawas ang TR na lumalabas sa window, na may minsanang O(atr_len) na muling pagsisimula sa unang bar o pagkatapos ng puwang. Dahil dito, O(1) ang gastos sa bawat bar. Incremental na ang midline ng EMA, kaya walang muling pagsuri sa history at walang karagdagang feed. Hindi nagbago kahit isang byte ang lohika ng entry, exit, signal at sizing, kaya nananatiling pasado ang Layers 1 at 2. Nasa humigit-kumulang 50 float ops na bawat bar ang code sa ~12k na mga bar, kaya kung maulit ang timeout, malamang na dulot ito ng load ng harness o engine, hindi ng pagkalkula ng strategy.
verification_loop: sandbox_timeout: Nabigo ang beripikasyon (Layer 3 — sandbox backtest): lumampas ang smoke test sa limitasyong 300s ng wall-clock sa ~20000-bar na saklaw (2400 araw ng ETHUSDT.BYBIT-4-HOUR-LAST-EXTERNAL). Karaniwang nangangahulugan ito na ang trabaho sa bawat bar ay lumalaki kasabay ng history — halimbawa, muling pagsuri sa buong serye ng funding/karagdagang datos, o muling pagbuo ng listahan at pagtawag sa min()/sorted() sa loob ng calculate_signal()/on_bar() sa bawat bar. Paunang kalkulahin ang mga nakaayos na timestamp array ONCE sa __init__ at gamitin ang bisect, o mag-cache ng mga lookup ayon sa timestamp para maging O(log n) ang gastos sa bawat bar, hindi O(n).
Implementasyon
Breakout ng King Keltner (Raschke) channel sa ETHUSDT.BYBIT 4H. Midline = EMA(karaniwang presyo, 20); band = +/- -1.0 x SMA(TrueRange, 50). Long kapag tumataas ang midline at nasa itaas ng upper band ang close; short kapag bumababa ang midline at nasa ibaba ng lower band ang close. Exit kapag nagsara ang presyo pabalik sa kabilang panig ng midline. Ang signal ay distansiya ng close mula sa midline sa yunit na ATR. Ang sizing ay 0.9 x equity notional sa 1x.
Mga Resulta ng Beripikasyon
sandbox_timeout: Nabigo ang beripikasyon (Layer 3 — sandbox backtest): lumampas ang smoke test sa limitasyong 300s ng wall-clock sa ~20000-bar na saklaw (2400 araw ng ETHUSDT.BYBIT-4-HOUR-LAST-EXTERNAL). Karaniwang nangangahulugan ito na ang trabaho sa bawat bar ay lumalaki kasabay ng history — halimbawa, muling pagsuri sa buong serye ng funding/karagdagang datos, o muling pagbuo ng listahan at pagtawag sa min()/sorted() sa loob ng calculate_signal()/on_bar() sa bawat bar. Paunang kalkulahin ang mga nakaayos na timestamp array ONCE sa __init__ at gamitin ang bisect, o mag-cache ng mga lookup ayon sa timestamp para maging O(log n) ang gastos sa bawat bar, hindi O(n).
Buod ng Resulta
Dahil ang anumang gastos sa bawat bar na lumalaki kasabay ng history ay nagdudulot ng timeout sa sandbox bago masubukan ang signal, dapat isulat ang bawat indicator bilang incremental state na O(1) mula pa sa unang iteration, at dapat suriin kung posibleng natitirang bottleneck ang paghawak ng history ng base class (gaya ng self._bars buffer).
Matapos ang 3 iteration, iniwan ang strategy sa proseso ng beripikasyon. Bumagsak ang Layer 3 (sandbox backtest) sa sandbox_timeout: lumampas ang smoke test sa limitasyong 300s ng wall-clock sa ~20,000-bar na saklaw (2400 araw ng ETHUSDT.BYBIT 4H). Nangyari ito kahit pinalitan na ng iteration 3 ang per-bar na loop na ATR ng rolling sum na O(1).
Breakout ng King Keltner (Raschke) channel sa ETHUSDT.BYBIT 4H, purong OHLCV: long kapag tumataas ang midline na EMA(karaniwang presyo, 20) at nasa itaas ng mid + 1.0x SMA(TrueRange, 50) ang close; short sa kabaligtarang kondisyon, at exit kapag muling tumawid sa midline ang close. Inilipat ang pagitan sa 4H mula 1H dahil ipinakita ng paunang pag-aaral ng mananaliksik na nalulugi sa bayarin ang bersyong 1H.
Walang datos ng performance mula sa factory dahil walang laman ang ulat ng backtest at walang isinagawang optimization. Ang tanging mga numero ay mula sa paunang pag-aaral mismo ng hypothesis, na nag-ulat ng netong +0.38% kada trade sa mga long at +0.39% sa mga short para sa ETHUSDT 4H, at netong -0.14% hanggang 0.00% kada trade (PF 0.82-1.00) para sa bersyong 1H.
Ang Stratmill ay isang tool para sa pananaliksik at paper trading, hindi payo sa pananalapi o isang broker. Ang mga resulta ng backtest at paper trading ay hypothetical. May panganib ng pagkalugi ang pangangalakal.