Strategi ini mewujudkan keuntungan berterusan di pasaran yang tidak menentu dengan mengesan kejayaan garis purata bergerak.
Logik teras strategi ini adalah untuk membuka kedudukan berdasarkan garis terobosan purata bergerak. Ia menggunakan MA untuk mengumpulkan pelbagai purata bergerak untuk membentuk garis purata bergerak utama. Isyarat perdagangan dihasilkan apabila harga memecahkan garis purata bergerak utama.
Secara khusus, strategi ini menggunakan purata bergerak WMA berganda 60 tempoh sebagai garis purata bergerak utama. Pada masa yang sama, ia mengira julat sebenar harga dan menarik jalur atas dan bawah.
Di atas isyarat terobosan, strategi ini juga menggabungkan RSI dan EMA sebagai penunjuk tambahan. Ia memerlukan RSI> 50 dan harga di atas EMA untuk pergi panjang, dan RSI < 50 dan harga di bawah EMA untuk pergi pendek, untuk mengelakkan terobosan palsu.
Di samping itu, strategi ini menggunakan pembentukan purata bergerak tiga kali untuk menentukan titik keluar. Apabila purata bergerak tiga kali berada dalam pembentukan lemah (-1), titik keluar dipilih sebagai terbalik terobosan saluran.
Risiko ini boleh dikurangkan dengan mengoptimumkan tempoh MA, menyesuaikan tetapan MA tiga kali, menggunakan RSI dengan berhati-hati dll.
Kesimpulannya, ini adalah strategi breakout yang sangat baik untuk pasaran terhad. Idea utama adalah untuk membuka kedudukan berdasarkan breakout MA, disaring oleh penunjuk trend, dan merealisasikan keuntungan yang stabil di pasaran bukan trend. Keluar ditentukan lebih awal menggunakan pembentukan MA tiga. Terdapat ruang yang cukup untuk mengoptimumkan parameter, meningkatkan logik kemasukan / keluar dan lain-lain untuk memaksimumkan prestasi di pasaran berkisar.
/*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')