Tài nguyên đang được tải lên... tải...

Xu hướng kênh trung bình động kép theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-09-26 16:28:19
Tags:SMAEMARSIMACD

img

Tổng quan

Chiến lược này là một hệ thống theo xu hướng dựa trên hai đường trung bình và kênh di chuyển. Nó sử dụng các tín hiệu chéo từ đườ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 được hình thành bởi đường trung bình di chuyển theo cấp số nhân (EMA), để nắm bắt xu hướng thị trường và thực hiện giao dịch. Chiến lược này áp dụng cho cả hai vị trí dài và ngắn, sử dụng các cơ chế dừng lỗ và lấy lợi nhuận để quản lý rủi ro và lợi nhuận.

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

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

  1. Hai đường trung bình di chuyển đơn giản (SMA) làm chỉ số xu hướng chính: đường trung bình di chuyển 55 giai đoạn và 300 giai đoạn.
  2. Hai đường trung bình chuyển động theo cấp số (EMA) tạo thành một kênh giao dịch: đường EMA 576 và 676.
  3. Các tín hiệu đầu vào dài được kích hoạt khi SMA ngắn hạn vượt qua SMA hoặc EMA dài hạn; tín hiệu đầu vào ngắn xảy ra khi SMA ngắn hạn vượt qua dưới SMA hoặc EMA dài hạn.
  4. Chiến lược stop-loss và take-profit tại điểm cố định, với stop-loss được thiết lập ở mức 1/70 giá nhập cảnh và take-profit ở mức 1/140 giá nhập cảnh.
  5. Một cơ chế dừng kéo theo được kích hoạt khi lợi nhuận đạt 300 điểm để bảo vệ lợi nhuận tích lũy.
  6. Chiến lược bao gồm các điều kiện thoát, chẳng hạn như đóng cửa vị trí tự động khi giá đạt mức dừng lỗ hoặc lấy lợi nhuận.

Ưu điểm chiến lược

  1. Tích hợp nhiều chỉ số: Kết hợp nhiều đường trung bình động và kênh EMA làm tăng độ chính xác xác xác định xu hướng.
  2. Giao dịch hai chiều: Chiến lược có thể kiếm lợi nhuận trong cả thị trường tăng và giảm, cải thiện hiệu quả vốn.
  3. Quản lý rủi ro: Sử dụng điểm dừng lỗ cố định và lấy lợi nhuận, kiểm soát hiệu quả rủi ro cho mỗi giao dịch.
  4. Bảo vệ lợi nhuận: Sử dụng cơ chế dừng lại để khóa lợi nhuận một phần trong thời gian xu hướng bền vững.
  5. Tính linh hoạt: Các tham số chiến lược có thể điều chỉnh để thích nghi 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 đa dạng: Trong các thị trường bên cạnh, các tín hiệu sai thường xuyên có thể dẫn đến thua lỗ liên tiếp.
  2. Nguy cơ trượt: Trong các thị trường biến động cao, giá thực hiện thực tế có thể lệch đáng kể từ giá lý tưởng.
  3. Việc giao dịch quá mức: 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. Độ nhạy của các tham số: Hiệu suất chiến lược có thể rất nhạy cảm với các cài đặt tham số, có khả năng yêu cầu điều chỉnh thường xuyên cho các môi trường thị trường khác nhau.

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

  1. Tích hợp các chỉ số biến động: Xem xét thêm ATR (Mức True Range trung bình) để điều chỉnh động mức dừng lỗ và lấy lợi nhuận, thích nghi với biến động thị trường khác nhau.
  2. Cải thiện lọc sức mạnh xu hướng: giới thiệu ADX (Chỉ số hướng trung bình) để lọc các tín hiệu xu hướng yếu, giảm lỗ từ các sự đột phá sai.
  3. Tối ưu hóa thời gian nhập cảnh: Xem xét kết hợp RSI (Chỉ số sức mạnh tương đối) hoặc MACD (Moving Average Convergence Divergence) để cải thiện thời gian nhập cảnh và tăng tỷ lệ thắng.
  4. Cải thiện quản lý tiền: Thực hiện kích thước vị trí năng động, điều chỉnh kích thước giao dịch dựa trên vốn chủ sở hữu tài khoản và biến động thị trường.
  5. Mở rộng thời gian backtesting: Thực hiện các backtest dài hạn để xác minh tính ổn định của chiến lược trong các môi trường thị trường khác nhau.

Kết luận

Chiến lược theo xu hướng kênh trung bình động kép này cung cấp một hệ thống giao dịch toàn diện bằng cách kết hợp nhiều chỉ số kỹ thuật. Nó không chỉ nắm bắt các xu hướng chính mà còn kết hợp cá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, thông qua tối ưu hóa liên tục và điều chỉnh tham số, chiến lược có tiềm năng hoạt động tốt trong các điều kiện thị trường khác nhau.


/*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)


Có liên quan

Thêm nữa