
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.
Logic cốt lõi của chiến lược bao gồm những phần chính sau:
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.
/*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)