Idea utama strategi ini adalah untuk mengenal pasti arah trend pasaran dengan menggabungkan purata bergerak Hull dan julat sebenar purata (ATR), dan memasuki kedudukan selepas arah trend disahkan. Khususnya, ia mengira perbezaan antara purata bergerak Hull dari tempoh tertentu dan tempoh sebelumnya. Apabila perbezaannya meningkat, ia menunjukkan trend menaik; apabila perbezaannya menurun, ia menunjukkan trend menurun. Pada masa yang sama, indeks ATR digunakan untuk menentukan arah amplitud. Ia memasuki kedudukan apabila arah trend disahkan dan amplitud terus berkembang.
Strategi ini terutamanya bergantung kepada dua jenis penunjuk: purata bergerak Hull dan ATR.
Hull Moving Average adalah penunjuk trend yang dibangunkan oleh peniaga niaga hadapan Amerika Alan Hull. Sama seperti purata bergerak, Hull Moving Average mempunyai kepekaan yang lebih tinggi dan dapat menangkap perubahan harga dan trend lebih cepat. Strategi ini menetapkan parameter hullLength yang boleh disesuaikan untuk mengawal tempoh purata bergerak Hull. Dengan mengira perbezaan antara Hull MA tempoh semasa dan tempoh sebelumnya, ia menentukan arah trend harga semasa.
ATR bermaksud Julat Benar Purata. Ia mencerminkan amplitudo turun naik harga harian. Apabila turun naik meningkat, ATR meningkat; apabila turun naik menurun, ATR jatuh. Strategi menetapkan parameter seperti atrLength dan atrSmoothing untuk mengawal pengiraan ATR. Dan ATR digambarkan pada carta sebagai satu rujukan untuk entri.
Secara khusus, logik strategi adalah:
Kelebihan strategi ini:
Beberapa risiko strategi ini:
Penyelesaian:
Masih ada ruang yang besar untuk pengoptimuman:
Strategi ini mengintegrasikan keupayaan mengikuti trend Hull MA dan keupayaan penghakiman haba ATR. Ia memasuki kedudukan apabila trend disahkan dan turun naik meningkat untuk menapis beberapa isyarat yang tidak sah. Peningkatan lanjut dapat dicapai dengan pengoptimuman parameter dan pengurusan risiko yang lebih baik. Ringkasnya, strategi ini menggabungkan pelbagai faktor penjejakan trend dan penghakiman haba. Apabila parameter disesuaikan, ia boleh memberikan hasil yang baik.
/*backtest start: 2024-01-07 00:00:00 end: 2024-01-14 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Hull cross and ATR strategy("Hull cross and ATR", shorttitle="H&ATR", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0) keh=input(title="Hull Length",defval=50) length = input(title="ATR Length", defval=50, minval=1) smoothing = input(title="ATR Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"]) p=input(ohlc4,title="Price data") n2ma=2*wma(p,round(keh/2)) nma=wma(p,keh) diff=n2ma-nma sqn=round(sqrt(keh)) n2ma1=2*wma(p[1],round(keh/2)) nma1=wma(p[1],keh) diff1=n2ma1-nma1 sqn1=round(sqrt(keh)) n1=wma(diff,sqn) n2=wma(diff1,sqn) ma_function(source, length) => if smoothing == "RMA" rma(p, length) else if smoothing == "SMA" sma(p, length) else if smoothing == "EMA" ema(p, length) else wma(p, length) plot(ma_function(tr(true), length), title = "ATR", color=black, transp=50) closelong = n1<n2 if (closelong) strategy.close("buy") closeshort = n1>n2 if (closeshort) strategy.close("sell") if (ma_function(tr(true), length)<p and p>p[length] and n1>n2) strategy.entry("buy", strategy.long, comment="BUY") if (ma_function(tr(true), length)>p and p<p[length] and n1<n2) strategy.entry("sell", strategy.short, comment="SELL")