该策略是一个结合了中枢点参考(CPR)、指数移动平均线(EMA)、相对强弱指标(RSI)和突破逻辑的综合交易系统。策略采用ATR动态追踪止损机制,通过多重技术指标的协同配合来识别市场趋势和交易机会,并实现风险的动态管理。该策略适用于日内和中短期交易,具有较强的适应性和风险控制能力。
策略主要基于以下几个核心组件: 1. CPR指标用于确定关键支撑阻力位,计算日度周期的枢轴点、上轨和下轨。 2. 双EMA系统(9日和21日)用于判断趋势方向,通过金叉死叉产生交易信号。 3. RSI指标(14日)用于确认市场超买超卖状态,并作为交易过滤器。 4. 突破逻辑结合价格对枢轴点的突破来确认交易信号。 5. ATR指标用于设置动态追踪止损,根据市场波动性自适应调整止损距离。
该策略通过多重技术指标的协同作用,构建了一个较为完整的交易系统。动态止损机制和多维度的信号确认提供了较好的风险收益特征。策略的优化空间主要在于信号质量的提升和风险管理的完善。通过持续优化和调整,该策略有望在不同市场环境下保持稳定的表现。
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 7h
basePeriod: 7h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Enhanced CPR + EMA + RSI + Breakout Strategy", overlay=true)
// Inputs
ema_short = input(9, title="Short EMA Period")
ema_long = input(21, title="Long EMA Period")
cpr_lookback = input.timeframe("D", title="CPR Timeframe")
atr_multiplier = input.float(1.5, title="ATR Multiplier")
rsi_period = input(14, title="RSI Period")
rsi_overbought = input(70, title="RSI Overbought Level")
rsi_oversold = input(30, title="RSI Oversold Level")
breakout_buffer = input.float(0.001, title="Breakout Buffer (in %)")
// Calculate EMAs
short_ema = ta.ema(close, ema_short)
long_ema = ta.ema(close, ema_long)
// Request Daily Data for CPR Calculation
high_cpr = request.security(syminfo.tickerid, cpr_lookback, high)
low_cpr = request.security(syminfo.tickerid, cpr_lookback, low)
close_cpr = request.security(syminfo.tickerid, cpr_lookback, close)
// CPR Levels
pivot = (high_cpr + low_cpr + close_cpr) / 3
bc = (high_cpr + low_cpr) / 2
tc = pivot + (pivot - bc)
// ATR for Stop-Loss and Take-Profit
atr = ta.atr(14)
// RSI Calculation
rsi = ta.rsi(close, rsi_period)
// Entry Conditions with RSI Filter and Breakout Logic
long_condition = ((close > tc) and (ta.crossover(short_ema, long_ema)) and (rsi > 50 and rsi < rsi_overbought)) or (rsi > 80) or (close > (pivot + pivot * breakout_buffer))
short_condition = ((close < bc) and (ta.crossunder(short_ema, long_ema)) and (rsi < 50 and rsi > rsi_oversold)) or (rsi < 20) or (close < (pivot - pivot * breakout_buffer))
// Dynamic Exit Logic
long_exit = short_condition
short_exit = long_condition
// Trailing Stop-Loss Implementation
if long_condition
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", from_entry="Long",
trail_points=atr * atr_multiplier,
trail_offset=atr * atr_multiplier / 2)
if short_condition
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", from_entry="Short",
trail_points=atr * atr_multiplier,
trail_offset=atr * atr_multiplier / 2)
// Plot CPR Levels and EMAs
plot(pivot, title="Pivot Point", color=color.orange, linewidth=2)
plot(tc, title="Top CPR", color=color.green, linewidth=2)
plot(bc, title="Bottom CPR", color=color.red, linewidth=2)
plot(short_ema, title="Short EMA", color=color.blue, linewidth=1)
plot(long_ema, title="Long EMA", color=color.purple, linewidth=1)
// Highlight Buy and Sell Signals
bgcolor(long_condition ? color.new(color.green, 90) : na, title="Buy Signal Highlight")
bgcolor(short_condition ? color.new(color.red, 90) : na, title="Sell Signal Highlight")