
Эта стратегия является стратегией отслеживания трендов, которая сочетает в себе двулинейную систему скрещивания с относительно сильным индексом RSI. Для захвата рыночных тенденций используется скрещивание 9-циклических и 21-циклических скользящих средних EMA, в то же время используется RSI для фильтрации перепродажи, а также для повышения надежности торговых сигналов. Стратегия также включает в себя динамические стоп-лоры, основанные на реальном масштабе колебаний ATR, что позволяет осуществлять всесторонний контроль риска.
Основная логика стратегии основана на следующих ключевых элементах:
Система генерирует многосигнал, когда быстрый EMA вверх проходит медленный EMA, и RSI больше 40, и торговля превышает порог. Наоборот, когда быстрый EMA вниз проходит медленный EMA, и RSI меньше 60, и торговля подтверждается, система генерирует пустой сигнал.
Стратегия использует научную комбинацию классических технических показателей, чтобы построить логически строгую систему отслеживания тенденций. Многочисленные механизмы фильтрации и средства контроля риска стратегии делают ее более эффективной для использования в боевых условиях.
/*backtest
start: 2024-11-07 00:00:00
end: 2025-02-18 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Call & Put Options Strategy (Optimized)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// 📌 Configuration Parameters
emaShort = input(9, title="Short EMA")
emaLong = input(21, title="Long EMA")
rsiLength = input(14, title="RSI Period")
rsiOverbought = input(60, title="RSI Overbought") // Adjusted for more signals
rsiOversold = input(40, title="RSI Oversold") // More flexible to confirm buys
atrLength = input(14, title="ATR Period")
atrMult = input(1.5, title="ATR Multiplier for Stop Loss")
minVol = input(100000, title="Minimum Volume to Confirm Entry") // Volume filter
// 🔹 Indicator Calculations
emaFast = ta.ema(close, emaShort)
emaSlow = ta.ema(close, emaLong)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
vol = volume
// 📌 Entry Signal Conditions
condCALL = ta.crossover(emaFast, emaSlow) and rsi > rsiOversold and vol > minVol
condPUT = ta.crossunder(emaFast, emaSlow) and rsi < rsiOverbought and vol > minVol
// 🚀 Plot signals on the chart
plotshape(condCALL, location=location.belowbar, color=color.green, style=shape.labelup, title="CALL", size=size.small)
plotshape(condPUT, location=location.abovebar, color=color.red, style=shape.labeldown, title="PUT", size=size.small)
// 🎯 Alert conditions
alertcondition(condCALL, title="CALL Signal", message="📈 CALL signal confirmed")
alertcondition(condPUT, title="PUT Signal", message="📉 PUT signal confirmed")
// 📌 Risk Management - Stop Loss and Take Profit
longStop = close - (atr * atrMult)
shortStop = close + (atr * atrMult)
strategy.entry("CALL", strategy.long, when=condCALL)
strategy.exit("CALL Exit", from_entry="CALL", stop=longStop)
strategy.entry("PUT", strategy.short, when=condPUT)
strategy.exit("PUT Exit", from_entry="PUT", stop=shortStop)