MA Trendline Chiến lược đột phá

Tác giả:ChaoZhang, Ngày: 2023-10-30 11:39:31
Tags:

img

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.

Chiến lược logic

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.

Phân tích lợi thế

  • Sử dụng MA để làm trơn tru thay đổi giá, nó có thể xác định hiệu quả các hướng xu hướng
  • Giao dịch dựa trên việc phá vỡ kênh có thể tạo ra lợi nhuận hợp lý trên các thị trường giới hạn phạm vi
  • Kết hợp RSI và EMA tránh các tín hiệu đột phá sai
  • Sử dụng các hình thành MA ba để xác định các điểm thoát tránh các xu hướng cạn kiệt

Phân tích rủi ro

  • Các đường MA có thể tạo ra nhiều sự phá vỡ sai trong các thị trường biến động mạnh
  • Thời gian ra khỏi MA ba lần có thể không chính xác
  • Các thông số RSI không chính xác có thể dẫn đến giao dịch quá mức

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.

Hướng dẫn tối ưu hóa

  • Tối ưu hóa thời gian MA để tìm các thiết lập tốt hơn cho đường trung bình động chính
  • Hãy thử các chỉ số phụ khác nhau để thay thế RSI, ví dụ: KDJ, MACD v.v.
  • Điều chỉnh các tham số MA ba để xác định các điểm đảo ngược chính xác hơn
  • Thêm stop loss để kiểm soát rủi ro cho mỗi giao dịch

Tóm lại

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')





Thêm nữa