
Strategi ini bertujuan untuk menghasilkan keuntungan berkelanjutan di pasar yang bergoyang dengan melacak terobosan pada garis rata.
Strategi ini didasarkan pada prinsip penembusan rata-rata untuk membangun posisi, menggunakan MA yang mengelompokkan beberapa rata-rata untuk membentuk rata-rata utama. Sinyal perdagangan dihasilkan ketika harga menembus rata-rata utama.
Secara khusus, strategi ini menggunakan WMA dua kali lipat selama 60 siklus sebagai garis rata-rata utama. Pada saat yang sama, perhitungan jangkauan fluktuasi harga yang sebenarnya, dan memetakan saluran ke atas ke bawah.
Pada dasar terobosan, strategi ini juga memperkenalkan indikator RSI dan indikator EMA untuk penilaian tambahan, yang meminta RSI> 50 dan harga lebih tinggi dari EMA untuk melakukan over, dan RSI < 50 dan harga lebih rendah dari EMA untuk melakukan short, untuk menghindari terobosan palsu.
Selain itu, strategi menggunakan tren kuat atau lemah dari garis rata tiga untuk menentukan posisi akhir. Ketika formasi garis rata tiga adalah lemah (−1), pilih titik keluar sebagai jalur terbalik untuk menerobos.
Risiko dapat dikurangi dengan mengoptimalkan parameter siklus MA, menyesuaikan pengaturan garis rata-rata tiga, dan menggunakan parameter RSI dengan hati-hati.
Strategi ini secara keseluruhan merupakan strategi terobosan yang sangat cocok untuk situasi yang bergolak. Ide inti adalah berdasarkan pada MA untuk membangun posisi terobosan, ditambah dengan filter indikator tren, untuk terus menguntungkan dalam situasi yang bergolak.
/*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')