
이 전략은 트렌드 추적을 기반으로 한 거래 시스템으로, 평균선 ((EMA), 운동 지표 ((MACD) 과 과잉 구매 과잉 판매 지표 ((RSI) 를 결합하여 신호 생성 및 위험 통제를 수행합니다. 전략은 다중 기술 지표의 조합을 통해 시장 상태를 판단하여 트렌드를 효과적으로 파악할 수 있도록 동적 중지 장치를 사용합니다. 동시에 위험을 제어하기 위해 고정된 중지 손실을 설정하여 전체적으로 균형 잡힌 안정적인 거래 시스템을 구축합니다.
전략의 핵심 논리는 다음과 같은 측면에 기초합니다.
이 전략은 여러 기술적 지표의 유기적인 결합을 통해 트렌드 추적과 위험 통제를 겸비한 거래 시스템을 구축한다. 동적 정지 메커니즘의 디자인은 시장에 대한 깊은 이해를 반영하고, 명확한 정지 설정은 위험을 통제할 수 있도록 한다. 전략의 프레임워크는 좋은 확장성을 가지고 있으며, 추가적인 최적화와 개선으로 더 나은 거래 효과를 달성할 수 있다.
/*backtest
start: 2024-02-10 00:00:00
end: 2025-02-08 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BTC 15分钟动态止盈策略", overlay=true)
// === 参数设置 ===
// EMA 参数
ema_short_length = input.int(50, title="短期EMA长度", minval=1)
ema_long_length = input.int(200, title="长期EMA长度", minval=1)
// MACD 参数
macd_fast_length = input.int(12, title="MACD快速线长度", minval=1)
macd_slow_length = input.int(26, title="MACD慢速线长度", minval=1)
macd_signal_length = input.int(9, title="MACD信号线长度", minval=1)
// RSI 参数
rsi_length = input.int(14, title="RSI长度", minval=1)
rsi_overbought = input.int(70, title="RSI超买区", minval=1, maxval=100)
rsi_oversold = input.int(30, title="RSI超卖区", minval=1, maxval=100)
// 止损参数
stop_loss_pct = input.float(1.5, title="止损百分比", minval=0.1)
// === 指标计算 ===
// 均线
ema_short = ta.ema(close, ema_short_length)
ema_long = ta.ema(close, ema_long_length)
// MACD
[macd_line, signal_line, _] = ta.macd(close, macd_fast_length, macd_slow_length, macd_signal_length)
// RSI
rsi = ta.rsi(close, rsi_length)
// === 趋势过滤 ===
bullish_trend = ema_short > ema_long // 多头趋势:短期均线高于长期均线
bearish_trend = ema_short < ema_long // 空头趋势:短期均线低于长期均线
// === 买入条件 ===
// 1. EMA 显示多头趋势
// 2. MACD 金叉(MACD 线向上突破信号线)
// 3. RSI 不在超买区域
buy_signal = bullish_trend and ta.crossover(macd_line, signal_line) and rsi < rsi_overbought
// === 危险信号(动态止盈条件) ===
// 1. 趋势反转:短期均线跌破长期均线,或者价格跌破短期均线
// 2. MACD 死叉:MACD 线向下跌破信号线
// 3. RSI:RSI 超买并开始回落
danger_signal = bearish_trend or close < ema_short or ta.crossunder(macd_line, signal_line) or (rsi > rsi_overbought and ta.falling(rsi, 2)) // 检查 RSI 最近2周期是否下降
// === 策略执行 ===
if (buy_signal)
strategy.entry("Buy", strategy.long)
// 动态止盈和止损
if (strategy.position_size > 0)
stop_price = strategy.position_avg_price * (1 - stop_loss_pct / 100) // 固定止损
strategy.exit("Exit", from_entry="Buy", stop=stop_price, when=danger_signal)
// === 绘制图表 ===
// EMA 绘制
plot(ema_short, color=color.blue, title="短期EMA")
plot(ema_long, color=color.orange, title="长期EMA")
// MACD 绘制
plot(macd_line, color=color.green, title="MACD线")
plot(signal_line, color=color.red, title="信号线")
// RSI 超买/超卖区域
hline(rsi_overbought, "RSI超买区", color=color.red, linestyle=hline.style_dotted)
hline(rsi_oversold, "RSI超卖区", color=color.green, linestyle=hline.style_dotted)
// 背景颜色:显示趋势
bgcolor(bullish_trend ? color.new(color.green, 90) : color.new(color.red, 90), title="趋势背景")