Strategi ini mewujudkan profitabilitas berkelanjutan di pasar yang tidak stabil dengan melacak terobosan rata-rata bergerak.
Logika inti dari strategi ini adalah membuka posisi berdasarkan terobosan garis rata-rata bergerak. Ini menggunakan MA untuk mengumpulkan beberapa rata-rata bergerak untuk membentuk garis rata-rata bergerak utama. Sinyal perdagangan dihasilkan ketika harga menembus garis rata-rata bergerak utama.
Secara khusus, strategi ini mengadopsi rata-rata bergerak ganda WMA 60 periode sebagai garis rata-rata bergerak utama. Pada saat yang sama, strategi ini menghitung rentang sebenarnya dari harga dan menarik band atas dan bawah.
Di atas sinyal terobosan, strategi ini juga menggabungkan RSI dan EMA sebagai indikator tambahan. Hal ini membutuhkan RSI> 50 dan harga di atas EMA untuk pergi panjang, dan RSI < 50 dan harga di bawah EMA untuk pergi pendek, sehingga menghindari terobosan palsu.
Selain itu, strategi ini menggunakan formasi rata-rata bergerak tiga untuk menentukan titik keluar.
Risiko ini dapat dikurangi dengan mengoptimalkan periode MA, menyesuaikan pengaturan triple MA, menggunakan RSI dengan hati-hati dll.
Secara singkat, ini adalah strategi breakout yang sangat baik untuk pasar yang terikat kisaran. Ide utamanya adalah untuk membuka posisi berdasarkan breakout MA, disaring oleh indikator tren, dan mewujudkan keuntungan yang stabil di pasar non-trending. Keluar ditentukan lebih awal menggunakan formasi MA triple. Ada ruang yang cukup untuk mengoptimalkan parameter, meningkatkan logika masuk / keluar dll untuk memaksimalkan kinerja di pasar kisaran.
/*backtest start: 2022-10-23 00:00:00 end: 2023-03-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //exapple bot strategy('RIPO BOT', shorttitle='RIPO BOT', overlay=true, process_orders_on_close=true, calc_on_order_fills=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100) sl_inp = input(0.1, title='Stop Loss %') / 100 tp_inp = input(0.33, title='Take Profit %') / 100 length = input(defval=21) upper = ta.highest(length) lower = ta.lowest(length) lengthChop = input.int(14, minval=1) ci = 100 * math.log10(math.sum(ta.atr(1), lengthChop) / (ta.highest(lengthChop) - ta.lowest(lengthChop))) / math.log10(lengthChop) offset = input.int(0, "Offset", minval = -500, maxval = 500) plot(ci, "CHOP", color=#2962FF, offset = offset) band1 = hline(61.8, "Upper Band", color=#787B86, linestyle=hline.style_dashed) hline(50, "Middle Band", color=color.new(#787B86, 50)) band0 = hline(38.2, "Lower Band", color=#787B86, linestyle=hline.style_dashed) fill(band1, band0, color = color.rgb(33, 150, 243, 90), title = "Background") rsi = ta.rsi(close, 14) var float entry_price = na output = 100 * (close - upper) / (upper - lower) ema = ta.ema(output, input(defval=13, title='EMA')) ma(src, len) => ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len))) BBMC = ma(close, 60) rangema = ta.ema(ta.tr, 60) upperk = BBMC + rangema * 0.2 lowerk = BBMC - rangema * 0.2 color_bar = close > upperk ? color.blue : close < lowerk ? color.fuchsia : color.gray ExitHigh = ma(high, 15) ExitLow = ma(low, 15) Hlv3 = int(na) Hlv3 := close > ExitHigh ? 1 : close < ExitLow ? -1 : Hlv3[1] sslExit = Hlv3 < 0 ? ExitHigh : ExitLow base_cross_Long = ta.crossover(close, sslExit) base_cross_Short = ta.crossover(sslExit, close) codiff = base_cross_Long ? 1 : base_cross_Short ? -1 : na entry_long = false entry_short = false if ta.crossover(close, BBMC) and output > ema entry_long := true if ta.crossunder(close, BBMC) and output < ema entry_short := true if entry_long and strategy.position_size == 0 entry_price := close strategy.entry('enter long', strategy.long, comment='ENTER-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663') if strategy.position_size > 0 strategy.exit('Stop Loss/TP long', 'enter long', limit=entry_price * (1 + tp_inp), stop = color_bar == color.fuchsia ? BBMC : na, comment='EXIT-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663') plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0)) //if entry_short and strategy.position_size == 0 //entry_price := close //strategy.entry('enter short', strategy.short, comment='ENTER-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663') if strategy.position_size < 0 strategy.exit('Stop Loss/TP short', 'enter short', limit=entry_price * (1 - tp_inp), stop = color_bar == color.blue ? BBMC : na, comment='EXIT-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663') plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0)) // plot(entry_price * (1 - sl_inp), color=color.new(color.red, 0)) plot(rsi, color=color.yellow) plot(output, title='%R', color=color.new(color.yellow, 0), linewidth=2) plot(ema, title='EMA', color=color.new(color.aqua, 0), linewidth=2) plotarrow(codiff, colorup=color.new(color.blue, 35), colordown=color.new(color.fuchsia, 35), title='Exit Arrows', maxheight=20, offset=0) plot(BBMC, color=color_bar, linewidth=4, title='MA Trendline')