本策略是一个结合了指数移动平均线(EMA)和基于真实波动幅度(ATR)的止损机制的趋势跟踪交易系统。策略使用9周期和21周期的EMA来识别市场趋势,同时利用ATR动态调整止损位置,实现了趋势跟踪和风险控制的有机结合。
策略的核心逻辑包含两个主要部分:趋势判断和风险控制。在趋势判断方面,通过监测快速EMA(9周期)与慢速EMA(21周期)的交叉来确定市场趋势。当快线上穿慢线时,触发做多信号;当快线下穿慢线时,触发做空信号。在风险控制方面,策略使用ATR指标计算动态止损位置。具体而言,多头仓位的止损点位设置为入场价格减去ATR值的1.5倍,空头仓位的止损点位设置为入场价格加上ATR值的1.5倍。
该策略通过结合均线交叉判断趋势和ATR动态止损,构建了一个完整的趋势跟踪交易系统。策略的优势在于判断标准客观、风险控制灵活,但也需要注意应对震荡市场风险和信号滞后性问题。通过添加趋势强度确认、优化止损设置等方式,策略还有较大的改进空间。总体而言,这是一个基础扎实、逻辑清晰的趋势跟踪策略,适合作为构建更复杂交易系统的基础。
/*backtest
start: 2024-02-20 00:00:00
end: 2024-05-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/
//@version=5
strategy("EMA 9/21 + ATR SL Strategy", shorttitle="EMA+ATR", overlay=true)
// ===== Input Parameters ===== //
emaFastLen = input.int(9, "Fast EMA")
emaSlowLen = input.int(21, "Slow EMA")
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "ATR Multiplier")
// ===== EMA Calculation ===== //
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
// ===== ATR Calculation ===== //
atrValue = ta.atr(atrLen)
// ===== Conditions for Entry ===== //
longCondition = ta.crossover(emaFast, emaSlow) // Long when 9 EMA crosses above 21 EMA
shortCondition = ta.crossunder(emaFast, emaSlow) // Short when 9 EMA crosses below 21 EMA
// ===== Entry Commands ===== //
if longCondition
strategy.entry("Long", strategy.long)
if shortCondition
strategy.entry("Short", strategy.short)
// ===== Set Stop-Loss Using ATR ===== //
//
// For LONG: stop-loss = entry price - (atrMult * ATR)
// For SHORT: stop-loss = entry price + (atrMult * ATR)
//
// Note: You can adjust the atrMult values based on market volatility
//
if strategy.position_size > 0
// If holding LONG, define stop-loss below the entry price
strategy.exit("Exit Long", "Long", stop = strategy.position_avg_price - atrMult * atrValue)
if strategy.position_size < 0
// If holding SHORT, define stop-loss above the entry price
strategy.exit("Exit Short", "Short", stop = strategy.position_avg_price + atrMult * atrValue)