Honey Trend ATR Breakout Strategy adalah strategi breakout jangka menengah berdasarkan indikator ATR dan Bollinger Bands untuk generasi sinyal perdagangan. Hal ini terutama memantau perubahan tren harga saham dalam lebar tertentu dari saluran ATR atas dan bawah.
Strategi ini terdiri dari tiga bagian utama:
Saluran ATR: Menghitung rentang fluktuasi harga saham melalui indikator ATR dan membentuk saluran ke atas dan ke bawah dalam rentang ini.
Hal ini dapat dilakukan dengan menggunakan metode penghitungan, yaitu dengan menggunakan nilai rata-rata harga tertinggi, terendah, dan dekat kemarin.
Trend Filtering: Menghitung tren harga melalui indikator DMI dan mengatur siklus sinyal. Ketika pricesig
Logika khusus untuk menghasilkan sinyal perdagangan adalah:
Sinyal panjang: pricesig
Sinyal pendek: pricesig
Tidak ada perdagangan dalam situasi lain.
Strategi ini juga menetapkan kondisi stop profit dan stop loss untuk mengendalikan risiko perdagangan.
Strategi Breakout Honey Trend ATR memiliki keuntungan berikut:
Menggunakan indikator ATR untuk menghitung rentang fluktuasi harga saham, yang dapat menangkap perubahan pasar secara dinamis;
Menggabungkan garis tengah untuk mengevaluasi sisi harga saham dan menetapkan titik perdagangan saluran untuk menghindari mengejar tertinggi dan membunuh terendah;
Indikator DMI digunakan untuk menentukan tren dan menghindari perdagangan melawan tren, meningkatkan tingkat kemenangan;
Menetapkan kondisi stop profit dan stop loss untuk mengendalikan risiko perdagangan tunggal;
Parameter strategi cukup fleksibel untuk mengoptimalkan strategi dengan menyesuaikan lebar saluran, siklus ATR dan faktor lainnya.
Strategi ini juga memiliki beberapa risiko:
Perdagangan jangka menengah memiliki fluktuasi yang relatif besar dan risiko yang tinggi.
Perhitungan rentang saluran ATR mungkin tidak akurat ketika harga saham berfluktuasi tajam, yang dengan mudah mengarah pada perdagangan yang salah.
Indikator DMI juga dapat membuat kesalahan dalam penilaian tren, sehingga mempengaruhi akurasi sinyal perdagangan.
Menanggapi risiko di atas, parameter seperti saluran ATR dapat disesuaikan dan siklus sinyal dapat ditingkatkan untuk optimalisasi dan perbaikan.
Strategi dapat dioptimalkan dalam aspek berikut:
Sesuaikan lebar saluran ATR dengan memodifikasi atrDivisor ke atas atau ke bawah untuk memampatkan atau memperluas rentang saluran.
Sesuaikan parameter siklus lookback ATR untuk mengubah sensitivitas saluran terhadap fluktuasi terbaru.
Sesuaikan parameter siklus sinyal tren untuk meningkatkan akurasi penilaian tren bullish dan bearish.
Tambahkan indikator lain untuk verifikasi multi-faktor untuk meningkatkan kualitas sinyal.
Mengoptimalkan algoritma stop profit dan stop loss untuk meningkatkan kontrol risiko.
Honey Trend ATR Breakout Strategy mengintegrasikan analisis rentang fluktuasi harga dan indikator penilaian tren. Sementara menangkap hotspot pasar, ia juga mengendalikan risiko perdagangan. Ini adalah strategi kuantitatif yang fleksibel dan dapat disesuaikan. Strategi ini dapat terus ditingkatkan melalui penyesuaian parameter dan optimasi sinyal, dengan prospek aplikasi yang luas.
/*backtest start: 2023-11-01 00:00:00 end: 2023-11-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="Strategy - Bobo PATR Swing", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000) // === STRATEGY RELATED INPUTS AND LOGIC === PivottimeFrame = input(title="Pivot Timeframe", defval="D") ATRSDtimeFrame = input(title="ATR Band Timeframe (Lower timeframe = wider bands)", defval="D") len = input(title="ATR lookback (Lower = bands more responsive to recent price action)", defval=13) myatr = atr(len) dailyatr = request.security(syminfo.tickerid, ATRSDtimeFrame, myatr[1]) atrdiv = input(title="ATR divisor (Lower = wider bands)", type=float, defval=2) pivot0 = (high[1] + low[1] + close[1]) / 3 pivot = request.security(syminfo.tickerid, PivottimeFrame, pivot0) upperband1 = (dailyatr / atrdiv) + pivot lowerband1 = pivot - (dailyatr / atrdiv) middleband = pivot // == TREND CALC === i1=input(2, "Momentum Period", minval=1) //Keep at 2 usually i2=input(20, "Slow Period", minval=1) i3=input(5, "Fast Period", minval=1) i4=input(3, "Smoothing Period", minval=1) i5=input(4, "Signal Period", minval=1) i6=input(50, "Extreme Value", minval=1) hiDif = high - high[1] loDif = low[1] - low uDM = hiDif > loDif and hiDif > 0 ? hiDif : 0 dDM = loDif > hiDif and loDif > 0 ? loDif : 0 ATR = rma(tr(true), i1) DIu = 100 * rma(uDM, i1) / ATR DId = 100 * rma(dDM, i1) / ATR HLM2 = DIu - DId DTI = (100 * ema(ema(ema(HLM2, i2), i3), i4)) / ema(ema(ema(abs(HLM2), i2), i3), i4) signal = ema(DTI, i5) // === RISK MANAGEMENT INPUTS === inpTakeProfit = input(defval = 0, title = "Take Profit (In Market MinTick Value)", minval = 0) inpStopLoss = input(defval = 100, title = "Stop Loss (In Market MinTick Value)", minval = 0) // === RISK MANAGEMENT VALUE PREP === // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na // === STRATEGY - LONG POSITION EXECUTION === enterLong = (((low<=lowerband1) and (close >lowerband1)) or ((open <= lowerband1) and (close > lowerband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal>signal[3]) exitLong = (high > middleband) strategy.entry(id = "Long", long = true, when = enterLong) strategy.close(id = "Long", when = exitLong) // === STRATEGY - SHORT POSITION EXECUTION === enterShort = (((high>=upperband1) and (close < upperband1)) or ((open >= upperband1) and (close < upperband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal<signal[3]) exitShort = (low < middleband) strategy.entry(id = "Short", long = false, when = enterShort) strategy.close(id = "Short", when = exitShort) // === STRATEGY RISK MANAGEMENT EXECUTION === strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss) // === CHART OVERLAY === plot(upperband1, color=#C10C00, linewidth=3) plot(lowerband1, color=#23E019, linewidth=3) plot(middleband, color=#00E2E2, linewidth=3) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)