Strategi ini adalah strategi perdagangan garis pendek yang menggunakan indikator ADX untuk menyaring isyarat penembusan. Apabila harga menembusi Bollinger Bollinger dan ADX turun, tutup; apabila harga menembusi Bollinger Bollinger dan ADX naik, lakukan lebih banyak.
Strategi ini menggunakan Bollinger Bollinger Bands sebagai isyarat pecah utama. Bollinger Bands ke bawah mewakili dua kali ganda perbezaan piawai harga, dan harga memecahkan Bollinger Bands biasanya mewakili harga memasuki tahap trend yang kuat. Selain itu, untuk mengelakkan pecah palsu, strategi ini menambah ADX sebagai syarat penapis.
Khususnya, strategi ini menggunakan harga penutupan dengan panjang 33 kitaran untuk mengira Brin Belt. Garis lintasan tengah Brin Belt adalah purata bergerak sederhana 33 kitaran harga penutupan, dengan dua perbezaan piawai di atas dan di bawah lintasan tengah.
Ini adalah strategi terobosan yang menggabungkan isyarat penapisan trend dan frekuensi dengan beberapa kelebihan:
Strategi ini juga mempunyai risiko:
Untuk mengurangkan risiko ini, kita boleh menyesuaikan parameter pita Brin, mengurangkan ruang lingkup pita Brin; menyesuaikan parameter kitaran ADX, mengelakkan isyarat yang berlebihan; mengurangkan jarak stop loss dengan sewajarnya, mengawal kerugian tunggal. Sudah tentu, semua pengoptimuman ini perlu disahkan melalui pengujian ulang, untuk mengelakkan overfit.
Strategi ini masih boleh dioptimumkan lagi:
Strategi ini secara keseluruhannya adalah strategi penapisan terobosan yang mudah dan praktikal. Dengan menilai trend melalui jalur Brin, isyarat penapisan ADX dapat mengelakkan kebisingan pasaran yang bergolak dan menangkap peluang trend.
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Hizbullah XAUUSD Sniper", overlay=true)
Price = close
Length = input(33)
Mult = input(2)
Basis = sma(Price, Length)
StdDev = Mult * stdev(Price, Length)
Upper = Basis + StdDev
Lower = Basis - StdDev
ADX_Length = input(4)
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
SmoothedTrueRange = sma(TrueRange, ADX_Length)
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedDirectionalMovementPlus = sma(DirectionalMovementPlus, ADX_Length)
SmoothedDirectionalMovementMinus = sma(DirectionalMovementMinus, ADX_Length)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus)*100
SmoothedADX1 = ema(DX, input(8))
SmoothedADX2 = ema(DX, input(15))
Condition1 = crossunder(Price, Upper) and SmoothedADX1 < SmoothedADX2
Take_Profit = input(800)
Stop_Loss = input(400)
strategy.entry("ShortEntry", true, when = Condition1)
strategy.exit("ShortExit", "ShortEntry", profit = Take_Profit, loss = Stop_Loss)