Ini adalah strategi breakout yang menggunakan penunjuk ATR untuk menjana isyarat perdagangan. Strategi ini menggunakan sistem purata bergerak untuk menghasilkan isyarat kemasukan dan saluran ATR yang diperkuat berdasarkan nisbah emas untuk membina kedudukan panjang dan pendek. Ia boleh mendapat keuntungan yang ketara dalam trend dan memperoleh keuntungan kecil tetapi stabil di pasaran yang terhad.
Kod ini mengira ATR dalam tempoh harga penutupan, memperkuatnya dengan 1.618 sebagai band atas dan 2.618 sebagai band bawah. Digabungkan dengan EMA, ia membentuk sistem pecah saluran Bollinger. Pergi panjang apabila harga memecahkan band bawah ke atas dan pergi pendek apabila memecahkan band atas ke bawah untuk mengikuti trend.
Strategi ini mengintegrasikan penapisan purata bergerak, penjejakan saluran ATR dan metodologi nisbah emas, yang secara berkesan dapat mengikuti trend jangka menengah hingga panjang dengan kestabilan yang baik.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("ATR Long Only Strategy lower band buy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) len = input(52, type=input.integer, minval=1, title="Length") mul = input(1.618, type=input.float, minval=0, title="Length") mullow = input(2.618, type=input.float, minval=0, title="Length") price = sma(close, 1) average = ema(close, len) diff = atr(len) * mul difflow = atr(len) * mullow bull_level = average + diff bear_level = average - difflow bull_cross = crossunder(price, bear_level) bear_cross = crossunder(bull_level, price) FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2008, title = "From Year", minval = 2008) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2019) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) startTimeOk() => true if (startTimeOk()) strategy.entry("KOP", strategy.long, when=bull_cross) strategy.close("KOP", when=bear_cross) //strategy.entry("Sell", strategy.short, when=bear_cross) plot(price, title="price", color=color.black, transp=50, linewidth=2) a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1) a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1) a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1) fill(a0, a1, color=color.green, transp=97) fill(a0, a2, color=color.red, transp=97)