该策略是一个综合性的趋势跟踪交易系统,结合了多个技术指标来确定市场趋势和交易时机。策略核心基于快速与慢速简单移动平均线(SMA)的交叉信号,并通过相对强弱指标(RSI)和平均趋向指数(ADX)进行趋势确认,同时利用真实波幅(ATR)进行风险管理。策略采用资金管理原则,限制单笔交易风险不超过账户资金的2%。
策略运行机制主要包含以下几个关键部分: 1. 趋势识别:使用SMA10和SMA200的交叉来捕捉趋势变化,快线突破慢线上方视为做多信号,反之为做空信号。 2. 趋势确认:通过RSI和ADX双重确认,RSI需要突破50水平,ADX需要大于20以确认趋势强度。 3. 风险控制:基于ATR进行动态止损设置,并采用资金管理限制单笔交易风险。 4. 持仓管理:实现trailing stop机制,动态调整止损位置以锁定利润。
该策略通过多重技术指标的组合应用,建立了一个相对完整的趋势跟踪交易系统。策略在设计上注重信号可靠性和风险管理,具有较好的实用性。通过优化建议的实施,策略有望进一步提升性能表现。建议在实盘应用前进行充分的回测验证,并根据具体交易品种特点进行参数优化。
/*backtest
start: 2025-02-16 17:00:00
end: 2025-02-20 00:00:00
period: 4m
basePeriod: 4m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("SMA + RSI + ADX + ATR Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=2)
// === Input Parameters ===
sma_fast_length = input(10, title="SMA Fast Period")
sma_slow_length = input(200, title="SMA Slow Period")
rsi_length = input(14, title="RSI Period")
adx_length = input(14, title="ADX Period")
adx_smoothing = input(14, title="ADX Smoothing Period") // <-- New parameter!
atr_length = input(14, title="ATR Period")
// === Filtering Levels for RSI and ADX ===
rsi_buy_level = input(50, title="RSI Buy Level")
rsi_sell_level = input(50, title="RSI Sell Level")
adx_min_trend = input(20, title="ADX Minimum Trend Strength")
// === Trailing Stop ===
use_trailing_stop = input(true, title="Enable Trailing Stop")
trailing_stop_pips = input(30, title="Trailing Stop (Pips)")
trailing_step_pips = input(5, title="Trailing Step (Pips)")
// === Indicators ===
sma_fast = ta.sma(close, sma_fast_length)
sma_slow = ta.sma(close, sma_slow_length)
rsi_value = ta.rsi(close, rsi_length)
[diPlus, diMinus, adx_value] = ta.dmi(adx_length, adx_smoothing) // <-- Corrected: added `adx_smoothing`
atr_value = ta.atr(atr_length)
// === Entry Logic ===
longCondition = ta.crossover(sma_fast, sma_slow) and rsi_value > rsi_buy_level and adx_value > adx_min_trend
shortCondition = ta.crossunder(sma_fast, sma_slow) and rsi_value < rsi_sell_level and adx_value > adx_min_trend
// === Open Positions ===
if longCondition
strategy.entry("BUY", strategy.long)
if shortCondition
strategy.entry("SELL", strategy.short)
// === Trailing Stop ===
if use_trailing_stop
strategy.exit("Exit Long", from_entry="BUY", trail_points=trailing_stop_pips, trail_offset=trailing_step_pips)
strategy.exit("Exit Short", from_entry="SELL", trail_points=trailing_stop_pips, trail_offset=trailing_step_pips)
// === Visualization ===
plot(sma_fast, color=color.blue, title="SMA 10")
plot(sma_slow, color=color.red, title="SMA 200")
hline(rsi_buy_level, title="RSI Buy Level", color=color.green)
hline(rsi_sell_level, title="RSI Sell Level", color=color.red)
hline(adx_min_trend, title="ADX Min Trend Level", color=color.orange)