
Idea teras strategi ini adalah untuk mengenal pasti arah trend pasaran dengan menggabungkan Hull Average Line dan True Wave Rate (ATR) dan masuk setelah arah trend disahkan. Secara khusus, adalah untuk mengira perbezaan antara Hull Average Line dalam satu tempoh tertentu dan Hull Average Line dalam tempoh sebelumnya, apabila perbezaan meningkat, ia akan menjadi trend bullish, dan apabila perbezaan menurun, ia akan menjadi trend bullish.
Strategi ini berdasarkan kepada dua kategori penunjuk iaitu Hull Average Line dan ATR.
Hull Average adalah indikator trend-following yang dibangunkan oleh Alan Hull, seorang peniaga niaga hadapan Amerika Syarikat. Hull Average adalah serupa dengan moving average, tetapi Hull Average mempunyai kepekaan yang lebih tinggi dan dapat menangkap trend perubahan harga dengan lebih cepat. Strategi ini mempunyai parameter hullLength yang boleh disesuaikan untuk mengawal panjang kitaran Hull Average, untuk menentukan arah trend harga semasa dengan mengira perbezaan antara kitaran semasa dan kitaran Hull Average pada kitaran sebelumnya.
ATR bermaksud Average True Range, atau rentang sebenar. Ia mencerminkan keluasan turun naik harga setiap hari. Apabila turun naik meningkat, rentang sebenar akan meningkat; apabila turun naik menurun, rentang sebenar akan menurun.
Secara khusus, logik strategi adalah:
Strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai risiko:
Penyelesaian:
Strategi ini mempunyai ruang yang lebih luas untuk pengoptimuman, terutamanya dari segi berikut:
Strategi ini mengintegrasikan keupayaan untuk mengesan trend dari Hull Average Line dan kebolehan untuk menilai heat metrics dari ATR. Dengan mengkonfirmasi trend, anda boleh menyaring beberapa isyarat yang tidak berkesan dengan memilih masa masuk yang lebih besar dan positif. Pengoptimuman parameter indikator dan penggunaan kaedah pengurusan risiko dapat meningkatkan lagi keberkesanan strategi.
/*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")