
Стратегия представляет собой торговую систему, основанную на тренде, которая объединяет индекс относительной силы (RSI), взвешенную скользящую среднюю (WMA) и экспоненциальную скользящую среднюю (EMA). Стратегия определяет изменения рыночных тенденций, отслеживая положение значения RSI и пересечение WMA и EMA, тем самым генерируя сигналы на покупку и продажу. Этот комбинированный метод не только учитывает состояния перекупленности и перепроданности рынка, но и объединяет оценку тренда скользящих средних разных периодов, что позволяет более точно определять поворотные моменты рынка.
Основная логика стратегии основана на следующих ключевых элементах:
Эта стратегия создает относительно полную систему отслеживания тренда, объединяя три технических индикатора: RSI, WMA и EMA. Основное преимущество стратегии заключается в надежности ее сигналов и возможностях контроля рисков, но в то же время нам также необходимо обращать внимание на риск ложных сигналов на нестабильных рынках. Добавляя меры оптимизации, такие как фильтрация волатильности и подтверждение силы тренда, можно дополнительно повысить стабильность и прибыльность стратегии. В целом, это торговая стратегия, имеющая практическую ценность, особенно подходящая для трейдеров, торгующих на среднесрочных и долгосрочных трендах.
/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy(title="RSI + WMA + EMA Strategy", shorttitle="RSI Strategy", overlay=true)
// RSI Settings
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
// WMA and EMA Settings
wmaLengthInput = input.int(45, minval=1, title="WMA Length", group="WMA Settings")
wmaColorInput = input.color(color.blue, title="WMA Color", group="WMA Settings")
emaLengthInput = input.int(89, minval=1, title="EMA Length", group="EMA Settings")
emaColorInput = input.color(color.purple, title="EMA Color", group="EMA Settings")
// RSI Calculation
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
// WMA and EMA Calculation
wma = ta.wma(rsi, wmaLengthInput)
ema = ta.ema(rsi, emaLengthInput)
// Plot RSI, WMA, and EMA
plot(rsi, "RSI", color=#7E57C2)
plot(wma, title="WMA", color=wmaColorInput, linewidth=2)
plot(ema, title="EMA", color=emaColorInput, linewidth=2)
// Entry and Exit Conditions
longCondition = ta.crossover(wma, ema) and rsi < 50
shortCondition = ta.crossunder(wma, ema) and rsi > 50
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Optional: Plot Buy/Sell Signals on Chart
plotshape(series=longCondition, style=shape.labelup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.labeldown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")