
이 전략은 쌍평준선과 통로를 기반으로 한 트렌드 추적 시스템이다. 이 전략은 단기 및 장기 이동 평균의 교차 신호를 사용하여 지수 이동 평균 ((EMA) 가 형성하는 통로와 결합하여 시장의 추세를 포착하고 거래한다. 이 전략은 다단계 및 공백 시장에 동시에 적용되며, 스톱 손실 및 스톱을 설정하여 위험과 이익을 관리한다.
전략의 핵심 논리는 다음과 같은 핵심 부분으로 구성됩니다.
이 쌍방향 트렌드 추적 전략은 여러 기술 지표를 결합하여 전체적인 거래 시스템을 제공합니다. 그것은 주요 트렌드를 포착 할 수있을뿐만 아니라 위험 관리 및 수익 보호 장치를 갖추고 있습니다.
/*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)