Chiến lược theo dõi xu hướng kênh trung bình động kép

SMA EMA RSI MACD
Ngày tạo: 2024-09-26 16:28:19 sửa đổi lần cuối: 2024-09-26 16:28:19
sao chép: 2 Số nhấp chuột: 748
1
tập trung vào
1617
Người theo dõi

Chiến lược theo dõi xu hướng kênh trung bình động kép

Tổng quan

Chiến lược này là một hệ thống theo dõi xu hướng dựa trên hai đường trung bình và kênh. Nó sử dụng các tín hiệu chéo của đường trung bình di chuyển ngắn hạn và dài hạn, kết hợp với các kênh hình thành bởi đường trung bình di chuyển của chỉ số ((EMA), để nắm bắt xu hướng thị trường và giao dịch. Chiến lược này áp dụng cho cả thị trường đa đầu và không đầu, để quản lý rủi ro và lợi nhuận bằng cách thiết lập điểm dừng và dừng.

Nguyên tắc chiến lược

Logic cốt lõi của chiến lược bao gồm những phần chính sau:

  1. Sử dụng hai đường trung bình di chuyển đơn giản ((SMA) làm chỉ số xu hướng chính, lần lượt là 55 chu kỳ và 300 chu kỳ SMA.
  2. Sử dụng hai chỉ số trung bình di chuyển ((EMA) để tạo ra kênh giao dịch, tương ứng với EMA 576 chu kỳ và 676 chu kỳ.
  3. Khi một SMA ngắn hạn trên một SMA dài hạn hoặc EMA, kích hoạt một tín hiệu nhiều; khi một SMA ngắn hạn dưới một SMA dài hạn hoặc EMA, kích hoạt một tín hiệu ngắn hạn.
  4. Sử dụng chiến lược dừng và dừng với số điểm cố định, đặt dừng là 170 giá khởi điểm và dừng là 1140 giá khởi điểm.
  5. Khi lợi nhuận đạt 300 điểm, khởi động hệ thống dừng lỗ di động để bảo vệ lợi nhuận đã đạt được.
  6. Chiến lược này cũng bao gồm các điều kiện hòa tan, chẳng hạn như tự động hòa tan khi giá chạm điểm dừng hoặc điểm dừng.

Lợi thế chiến lược

  1. Kết hợp đa chỉ số: Cải thiện tính chính xác của xu hướng bằng cách kết hợp nhiều đường trung bình di chuyển và kênh EMA.
  2. Giao dịch hai chiều: Chiến lược này có thể tạo ra lợi nhuận trong cả thị trường đa đầu và thị trường không đầu, cải thiện hiệu quả sử dụng vốn.
  3. Quản lý rủi ro: Sử dụng điểm dừng và dừng cố định để kiểm soát hiệu quả rủi ro của mỗi giao dịch
  4. Bảo vệ lợi nhuận: Sử dụng cơ chế dừng lỗ di động để khóa một phần lợi nhuận khi xu hướng tiếp tục.
  5. Tính linh hoạt: Các tham số chiến lược có thể được điều chỉnh để phù hợp với các điều kiện thị trường khác nhau.

Rủi ro chiến lược

  1. Rủi ro thị trường chấn động: Trong thị trường chấn động ngang, có thể thường xuyên kích hoạt tín hiệu sai, dẫn đến tổn thất liên tục.
  2. Rủi ro trượt: Trong thị trường có biến động cao, giá giao dịch thực tế có thể lệch xa so với giá lý tưởng.
  3. Quá nhiều giao dịch: Các tín hiệu giao dịch thường xuyên có thể dẫn đến chi phí giao dịch quá cao.
  4. Tính nhạy cảm của tham số: Hiệu suất của chiến lược có thể rất nhạy cảm với các thiết lập tham số và có thể cần điều chỉnh thường xuyên trong các môi trường thị trường khác nhau.

Hướng tối ưu hóa chiến lược

  1. Tiếp tục sử dụng chỉ số biến động: Xem xét thêm ATR (trung bình phạm vi thực tế) để điều chỉnh động điểm dừng và điểm dừng để phù hợp với các biến động thị trường khác nhau.
  2. Tăng bộ lọc cường độ xu hướng: có thể giới thiệu ADX để lọc tín hiệu xu hướng yếu, giảm thiệt hại do phá vỡ giả.
  3. Tối ưu hóa thời gian nhập cảnh: Hãy xem xét kết hợp RSI (chỉ số tương đối mạnh) hoặc MACD (chỉ số chênh lệch xu hướng trung bình di chuyển) để tối ưu hóa thời gian nhập cảnh, tăng tỷ lệ thắng.
  4. Tối ưu hóa quản lý tiền: Thực hiện quản lý vị thế động, điều chỉnh tỷ lệ tiền trong mỗi giao dịch theo giá trị tài khoản ròng và biến động của thị trường.
  5. Mở rộng chu kỳ thử nghiệm: Chiến lược được thử nghiệm trong một chu kỳ thời gian dài hơn để xác minh tính ổn định của nó trong các môi trường thị trường khác nhau.

Tóm tắt

Chiến lược theo dõi xu hướng hai tuyến bằng cách kết hợp nhiều chỉ số kỹ thuật, cung cấp một hệ thống giao dịch toàn diện. Nó không chỉ có thể nắm bắt các xu hướng chính, mà còn có cơ chế quản lý rủi ro và bảo vệ lợi nhuận. Mặc dù có một số rủi ro tiềm ẩn, chiến lược này có tiềm năng hoạt động tốt trong nhiều điều kiện thị trường thông qua tối ưu hóa và điều chỉnh tham số liên tục.

Mã nguồn chiến lược
/*backtest
start: 2024-08-26 00:00:00
end: 2024-09-24 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RC BTC Vegas 5min free ", overlay=true )

// 定义输入参数
short_ma_length = input.int(55, title="Short MA Length")
long_ma_length = input.int(300, title="Long MA Length")

ema1_length = input.int(576, title="EMA 1 Length")
ema2_length = input.int(676, title="EMA 2 Length")
// 计算移动平均线 
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)
ema1 = ta.ema(close, ema1_length)
ema2 = ta.ema(close, ema2_length)
// 确定买入和卖出信号 
enter_long = ta.crossover(short_ma +5 , ema1)
enter_long2 = ta.crossover(short_ma +5 , long_ma)
enter_long3 =ta.crossover(long_ma+5  , ema1)

exit_long = ta.crossunder(short_ma -5, ema1) 
exit_long2 = ta.crossunder(short_ma -5, long_ma) 
exit_long3 = ta.crossunder(long_ma-5 , ema1)

// 记录进场价格
var float long_stop_loss = na
var float long_take_profit = na

if (enter_long or exit_long  )
    long_stop_loss := close

if (enter_long or exit_long)
    long_take_profit := close

// 根据进场价格计算止损和止盈点数 
stop_loss_points = long_stop_loss /70
take_profit_points  = long_take_profit /140
// 设置固定点数的止损和止
Along_stop_loss = close - stop_loss_points
Along_take_profit = close + take_profit_points
short_stop_loss = close + stop_loss_points
short_take_profit = close - take_profit_points

// 检查持仓利润是否达到300点
long_profit_target_reached = (strategy.position_size > 0 and (close - strategy.position_avg_price) >= take_profit_points)
short_profit_target_reached = (strategy.position_size < 0 and (strategy.position_avg_price - close) >= take_profit_points)

// 即时止损和止盈检查
long_stop_loss_hit = (strategy.position_size > 0 and close <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit = (strategy.position_size > 0 and close >= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit = (strategy.position_size < 0 and close >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit = (strategy.position_size < 0 and close <= strategy.position_avg_price - take_profit_points)
// 上一根K棒的止盈止损检查
long_stop_loss_hit_prev = (strategy.position_size > 0 and low[1] <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit_prev = (strategy.position_size > 0 and high[1]>= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit_prev = (strategy.position_size < 0 and high[1] >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit_prev = (strategy.position_size < 0 and low[1] <= strategy.position_avg_price - take_profit_points)

// 创建警报条件
alertcondition(long_stop_loss_hit, title="Long Stop Loss Hit", message="Long position stop loss hit")
alertcondition(long_take_profit_hit, title="Long Take Profit Hit", message="Long position take profit hit")
alertcondition(short_stop_loss_hit, title="Short Stop Loss Hit", message="Short position stop loss hit")
alertcondition(short_take_profit_hit, title="Short Take Profit Hit", message="Short position take profit hit")
// 移动止损输入
initialProfitLevel = input.float(9, title="Initial Profit Level (points)")
trailingStopIncrement = input.float(3, title="Trailing Stop Increment (points)")
if (close - long_take_profit >= 150)
    strategy.exit("多單移平", from_entry="Buy", trail_price=close+5 , trail_offset=5  )
if (close - long_take_profit <= -150)
    strategy.exit("空單移平", from_entry="Sell", trail_price=close-5 , trail_offset=5)

// 执行多单交易
if (enter_long or enter_long2  )
    strategy.entry("Buy", strategy.long, qty=1 , comment = "做多")

if (long_stop_loss_hit or long_take_profit_hit  ) 
    strategy.close("Buy",comment = "多單平倉")
//死亡交叉才跟著做空就打開
if (exit_long  or exit_long2  )
    strategy.entry("Sell" ,strategy.short, qty=1 , comment = "做空")

// 执行空单交易
if ( short_take_profit_hit or short_stop_loss_hit ) 
    strategy.close("Sell",comment = "空單平倉")

// 绘制移动平均线
plot(short_ma, title="Short MA", color=color.blue)
plot(long_ma, title="Long MA", color=color.red)

// 绘制进场和出场点
plotshape(series=enter_long, location=location.belowbar, color=color.green, style=shape.labelup, text="做多")
plotshape(series=exit_long , location=location.abovebar, color=color.red, style=shape.labeldown, text="做空") 
plotshape(series=long_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="多單止盈")  
plotshape(series=short_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="空單止盈") 
plotshape(series=short_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="空單止損") 
plotshape(series=long_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="多單止損") 
 
// 绘制止盈和止损点
plot(series=enter_long ? Along_take_profit : na, title="Take Profit", color=color.green, linewidth=2, style=plot.style_linebr)
plot(series=enter_long ? Along_stop_loss : na, title="Stop Loss", color=color.red, linewidth=2, style=plot.style_linebr)