Chiến lược này thực hiện lợi nhuận liên tục trong các thị trường biến động bằng cách theo dõi các bước đột phá đường trung bình động.
Lý thuyết cốt lõi của chiến lược này là mở các vị trí dựa trên bước đột phá đường trung bình động. Nó sử dụng MA để tổng hợp nhiều đường trung bình động để tạo ra đường trung bình động chính.
Cụ thể, chiến lược này sử dụng WMA trung bình động đôi 60 giai đoạn như đường trung bình động chính. Đồng thời, nó tính toán phạm vi thực sự của giá và vẽ các dải trên và dưới. Đi dài khi giá vượt qua dải trên và đi ngắn khi nó vượt qua dải dưới.
Ngoài các tín hiệu đột phá, chiến lược cũng kết hợp RSI và EMA như các chỉ số phụ trợ. Nó yêu cầu RSI> 50 và giá trên EMA đi dài, và RSI<50 và giá dưới EMA đi ngắn, để tránh đột phá sai.
Ngoài ra, chiến lược này sử dụng các hình thành trung bình động ba để xác định các điểm thoát. Khi các trung bình động ba ở trong một hình thành yếu (-1), điểm thoát được chọn là bước đột phá ngược của kênh.
Những rủi ro này có thể được giảm bằng cách tối ưu hóa thời gian MA, điều chỉnh cài đặt MA ba lần, sử dụng RSI một cách thận trọng v.v.
Tóm lại, đây là một chiến lược đột phá tuyệt vời cho các thị trường giới hạn phạm vi. Ý tưởng cốt lõi là mở các vị trí dựa trên đột phá MA, được lọc bởi các chỉ số xu hướng, và nhận ra lợi nhuận ổn định trong các thị trường không có xu hướng.
/*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')