Эта стратегия представляет собой мультитехническую индикаторную торговую систему, которая сочетает в себе полосы Боллинджера, индикаторы тренда, индикаторы импульса и индикаторы волатильности, принимая торговые решения с помощью анализа цены и объема.
Основная логика стратегии основана на следующих аспектах: 1. Использование полос Боллинджера в качестве отсчета для диапазона волатильности цен, поиск длинных возможностей, когда цена прорывается выше верхней полосы и короткие возможности, когда она прорывается ниже нижней полосы 2. Использование индикатора ADX для оценки силы тренда, открытие позиций только тогда, когда тренд достаточно силен (ADX> 25) Требование роста объема (в 1,5 раза выше среднего объема за 20 дней) для подтверждения действительности прорыва цен 4. Использование индикатора SuperTrend в качестве фильтра направления тренда, ввод позиций только тогда, когда цена находится на правильной стороне линии тренда 5. Использование MACD death cross, ATR trailing stop или ADX weakening в качестве условий выхода
Это хорошо разработанная многоиндикаторная стратегия тренда, которая создает торговую систему, сочетающую тренд и контроль рисков путем органической интеграции полос Боллинджера, ADX, SuperTrend, MACD и других индикаторов. Преимущества стратегии заключаются в многочисленных подтверждениях сигналов и всеобъемлющих механизмах контроля рисков, но она также сталкивается с проблемами чрезмерной оптимизации и чувствительности параметров. Благодаря постоянной оптимизации и динамической адаптации к рыночной среде эта стратегия имеет потенциал для поддержания стабильной производительности в различных рыночных условиях.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Nifty Options Trendy Markets with TSL", overlay=true) // Input Parameters lengthBB = input(20, title="Bollinger Bands Length") multBB = input(2.0, title="Bollinger Bands Multiplier") adxLength = input(14, title="ADX Length") adxThreshold = input(25, title="ADX Entry Threshold") adxExitThreshold = input(20, title="ADX Exit Threshold") superTrendLength = input(10, title="Supertrend Length") superTrendMultiplier = input(3.0, title="Supertrend Multiplier") macdFast = input(12, title="MACD Fast Length") macdSlow = input(26, title="MACD Slow Length") macdSignal = input(9, title="MACD Signal Length") atrLength = input(14, title="ATR Length") atrMultiplier = input(1.5, title="Trailing Stop ATR Multiplier") volumeSpikeMultiplier = input(1.5, title="Volume Spike Multiplier") // Calculations [macdLine, signalLine,_ ] = ta.macd(close, macdFast, macdSlow, macdSignal) macdCrossover = ta.crossover(macdLine, signalLine) macdCrossunder = ta.crossunder(macdLine, signalLine) [middleBB,upperBB,lowerBB] = ta.bb(close, lengthBB, multBB) [supertrend, direction] = ta.supertrend(superTrendMultiplier,superTrendLength) len = input.int(17, minval=1, title="DI Length") lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50) [diplus, diminus, adx] = ta.dmi(len, lensig) atr = ta.atr(atrLength) trailingStopLong = close - atr * atrMultiplier // For long trades trailingStopShort = close + atr * atrMultiplier // For short trades volumeSpike = volume > ta.sma(volume, 20) * volumeSpikeMultiplier // Entry Conditions longEntry = ta.crossover(close, upperBB) and adx > adxThreshold and volumeSpike and close > supertrend shortEntry = ta.crossunder(close, lowerBB) and adx > adxThreshold and volumeSpike and close < supertrend // Exit Conditions longExit = ta.crossunder(macdLine, signalLine) or close < trailingStopLong or adx < adxExitThreshold shortExit = ta.crossover(macdLine, signalLine) or close > trailingStopShort or adx < adxExitThreshold // Strategy Entries and Exits if (longEntry) strategy.entry("Long", strategy.long) if (shortEntry) strategy.entry("Short", strategy.short) if (longExit) strategy.close("Long") if (shortExit) strategy.close("Short") // Plotting plot(supertrend, color=color.blue, style=plot.style_line, linewidth=2, title="Supertrend Line") plot(trailingStopLong, title="Trailing Stop for Long", color=color.green, style=plot.style_line) plot(trailingStopShort, title="Trailing Stop for Short", color=color.red, style=plot.style_line) bgcolor(longEntry ? color.new(color.green, 90) : shortEntry ? color.new(color.red, 90) : na, title="Background for Entry") // Alerts alertcondition(longEntry, title="Long Entry", message="Buy Call: Long entry conditions met") alertcondition(shortEntry, title="Short Entry", message="Buy Put: Short entry conditions met") alertcondition(longExit, title="Long Exit", message="Exit Call: Long exit conditions met") alertcondition(shortExit, title="Short Exit", message="Exit Put: Short exit conditions met")