Strategi Breakout ATR Honey Trend adalah strategi breakout jangka sederhana berdasarkan penunjuk ATR dan Bollinger Bands untuk penjanaan isyarat perdagangan. Ia terutamanya memantau perubahan trend harga saham dalam lebar tertentu saluran ATR atas dan bawah. Apabila harga memecahkan rel bawah atau atas, digabungkan dengan penapisan trend, ia membuat keputusan perdagangan.
Strategi ini terdiri daripada tiga bahagian utama:
Saluran ATR: Mengira julat turun naik harga saham melalui penunjuk ATR dan membentuk saluran ke atas dan ke bawah dalam julat ini.
Garis Bee: Ambil garis tengah harga saham sebagai garis asas. Kaedah pengiraan garis tengah adalah: nilai purata harga tinggi, rendah dan tutup semalam.
Penapisan Trend: Mengira trend harga melalui penunjuk DMI dan menetapkan kitaran isyarat. Apabila pricesig
Logik khusus untuk menjana isyarat perdagangan adalah:
Isyarat panjang: hargaig
Isyarat pendek: hargaig
Tidak ada perdagangan dalam situasi lain.
Strategi ini juga menetapkan syarat berhenti keuntungan dan berhenti kerugian untuk mengawal risiko perdagangan.
Strategi Breakout Honey Trend ATR mempunyai kelebihan berikut:
Menggunakan penunjuk ATR untuk mengira julat turun naik harga saham, yang dapat menangkap perubahan pasaran secara dinamik;
Menggabungkan garis tengah untuk menilai sisi harga saham dan menetapkan titik perdagangan saluran untuk mengelakkan mengejar tinggi dan membunuh rendah;
Penunjuk DMI digunakan untuk menentukan trend dan mengelakkan perdagangan terhadap trend, meningkatkan kadar kemenangan;
Menetapkan syarat berhenti keuntungan dan berhenti kerugian untuk mengawal risiko perdagangan tunggal;
Parameter strategi cukup fleksibel untuk mengoptimumkan strategi dengan menyesuaikan lebar saluran, kitaran ATR dan faktor lain.
Strategi ini juga mempunyai beberapa risiko:
Perdagangan jangka sederhana mempunyai turun naik yang agak besar dan risiko yang tinggi.
Pengiraan julat saluran ATR mungkin tidak tepat apabila harga saham turun naik dengan tajam, yang mudah membawa kepada perdagangan yang salah.
Penunjuk DMI juga boleh membuat kesilapan dalam penilaian trend, sehingga menjejaskan ketepatan isyarat perdagangan.
Sebagai tindak balas kepada risiko di atas, parameter seperti saluran ATR boleh diselaraskan dan kitaran isyarat boleh ditingkatkan untuk pengoptimuman dan penambahbaikan.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Sesuaikan lebar saluran ATR dengan mengubah suai atrDivisor ke atas atau ke bawah untuk memampatkan atau memperluaskan julat saluran.
Sesuaikan parameter kitaran melihat balik ATR untuk mengubah kepekaan saluran terhadap turun naik baru-baru ini.
Sesuaikan parameter kitaran isyarat trend untuk meningkatkan ketepatan penilaian trend menaik dan menurun.
Tambah penunjuk lain untuk pengesahan pelbagai faktor untuk meningkatkan kualiti isyarat.
Mengoptimumkan algoritma stop profit dan stop loss untuk meningkatkan kawalan risiko.
Strategi Breakout Trend ATR Honey mengintegrasikan analisis julat turun naik harga dan penunjuk penghakiman trend. Semasa menangkap titik panas pasaran, ia juga mengawal risiko perdagangan. Ini adalah strategi kuantitatif yang fleksibel dan dapat disesuaikan. Strategi ini boleh terus ditingkatkan melalui penyesuaian parameter dan pengoptimuman isyarat, 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)