Эта стратегия сочетает в себе несколько индикаторов, таких как EMA, MACD, VWAP и RSI, для захвата высоковероятных торговых возможностей. Она использует EMA для определения направления тренда, MACD для импульса, VWAP для объема и RSI для условий перекупки и перепродажи. Стратегия генерирует сигналы покупки и продажи на основе комбинации этих индикаторов при использовании стоп-лосса для защиты прибыли.
Эта стратегия сочетает в себе несколько индикаторов для оценки рыночных условий и генерации торговых сигналов при использовании стоп-лосса для защиты прибыли. Параметры стратегии могут быть скорректированы в соответствии с предпочтениями пользователя, повышая гибкость стратегии. Однако стратегия может плохо работать на нестабильных рынках и сталкиваться с большими снижениями во время переворотов тренда, поэтому ее необходимо оптимизировать и улучшить для разных рынков и инструментов. В будущем оптимизации можно рассмотреть возможность добавления дополнительных условий фильтрации, динамических методов стоп-лосса, оптимизации параметров и размещения позиций для улучшения стабильности и прибыльности стратегии.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Intraday Strategy", overlay=true) // Input parameters emaLength = input.int(50, title="EMA Length") macdShort = input.int(12, title="MACD Short Period") macdLong = input.int(26, title="MACD Long Period") macdSignal = input.int(9, title="MACD Signal Period") rsiLength = input.int(14, title="RSI Length") rsiOverbought = input.int(70, title="RSI Overbought Level") rsiOversold = input.int(30, title="RSI Oversold Level") risk = input.float(1, title="Risk Percentage", minval=0.1, step=0.1) trailOffset = input.float(0.5, title="Trailing Stop Offset", minval=0.1, step=0.1) // Calculating indicators ema = ta.ema(close, emaLength) [macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal) rsi = ta.rsi(close, rsiLength) vwap = ta.vwap(close) // Entry conditions longCondition = ta.crossover(macdLine, signalLine) and close > ema and rsi < rsiOverbought and close > vwap shortCondition = ta.crossunder(macdLine, signalLine) and close < ema and rsi > rsiOversold and close < vwap // Exit conditions longExitCondition = ta.crossunder(macdLine, signalLine) or close < ema shortExitCondition = ta.crossover(macdLine, signalLine) or close > ema // Position sizing based on risk percentage capital = strategy.equity positionSize = (capital * (risk / 100)) / close // Executing trades if (longCondition) strategy.entry("Long", strategy.long, qty=1) if (shortCondition) strategy.entry("Short", strategy.short, qty=1) if (longExitCondition) strategy.close("Long") if (shortExitCondition) strategy.close("Short") // Trailing stop loss if (strategy.position_size > 0) strategy.exit("Trailing Stop Long", from_entry="Long", trail_price=close, trail_offset=trailOffset) if (strategy.position_size < 0) strategy.exit("Trailing Stop Short", from_entry="Short", trail_price=close, trail_offset=trailOffset) // Plotting indicators plot(ema, title="EMA", color=color.blue) hline(rsiOverbought, "Overbought", color=color.red) hline(rsiOversold, "Oversold", color=color.green) plot(rsi, title="RSI", color=color.purple) plot(vwap, title="VWAP", color=color.orange)