Стратегия Sunny Supertrend - это стратегия, основанная на индикаторах ATR и SuperTrend. Она может точно предсказывать обратные тенденции и отлично работает как индикатор времени. Стратегия может увеличить терпение и помочь трейдерам войти и выйти с рынка в нужное время.
Стратегия использует индикатор SuperTrend для определения текущего направления тренда. Когда индикатор SuperTrend меняет направление, мы думаем, что может произойти обратный тренд. Кроме того, стратегия также использует направление тела свечи для вспомогательного суждения. Когда появляется потенциальный сигнал обратного движения и направление тела свечи соответствует предыдущему, недействительный сигнал фильтруется.
В частности, стратегия генерирует торговые сигналы по следующей логике:
Индикатор Supertrend имеет тенденцию генерировать избыточные сигналы, которые необходимо отфильтровать. Решение: Эта стратегия использует направление тела свечи для вспомогательного суждения, чтобы эффективно отфильтровать недействительные сигналы
Параметры супертенденции склонны к чрезмерной оптимизации
Решение: Используйте параметры по умолчанию, чтобы избежать ручного настройки и чрезмерной оптимизации
Невозможно обработать ультрабыстрые изменения тренда Решение: корректировать параметр периода ATR соответствующим образом, чтобы справиться с более быстрыми движениями рынка
Стратегия Sunny Supertrend - это эффективная стратегия обратного тренда, основанная на индикаторе SuperTrend. Она сочетает в себе направления тела свечи для вспомогательного суждения, которые могут эффективно отфильтровывать недействительные сигналы и улучшать качество сигнала.
/*backtest start: 2023-11-12 00:00:00 end: 2023-12-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Sunny Supertrend Strategy", overlay=true, default_qty_type=strategy.percent_of_equity) atrPeriod = input(10, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [_, direction] = ta.supertrend(factor, atrPeriod) shor= close > open and close[1] > open[1] and close[2] > open[2] lon = open > close and open[1] > close[1] and open[2] > close[2] tt= ta.change(direction) < 0 ss= ta.change(direction) > 0 long= tt longexit = lon or ss short= ss shortexit = shor or tt longPosMem = false longexitPosMem = false shortPosMem = false shortexitPosMem = false longPosMem := long ? true : short ? false : longPosMem[1] longexitPosMem := longexit ? true : shortexit ? false : longexitPosMem[1] shortPosMem := short ? true : long ? false : shortPosMem[1] shortexitPosMem := shortexit ? true : longexit ? false : shortexitPosMem[1] longy = long and not(longPosMem[1]) longexity = longexit and not(longexitPosMem[1]) shorty = short and not(shortPosMem[1]) shortexity = shortexit and not(shortexitPosMem[1]) //Use this to customize the look of the arrows to suit your needs. plotshape(longy, location=location.abovebar, color=color.green, style=shape.arrowup, text="Buy") plotshape(longexity, location=location.top, color=color.green, style=shape.xcross, text="Buy exit") plotshape(shorty, location=location.belowbar, color=color.red, style=shape.arrowdown, text="Sell") plotshape(shortexity, location=location.bottom, color=color.red, style=shape.xcross, text="Sell exit") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr) // STEP 1: // Make input options that configure backtest date range startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31) startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12) startYear = input.int(title="Start Year", defval=2021, minval=1800, maxval=2100) endDate = input.int(title="End Date", defval=1, minval=1, maxval=31) endMonth = input.int(title="End Month", defval=2, minval=1, maxval=12) endYear = input.int(title="End Year", defval=2021, minval=1800, maxval=2100) // STEP 2: // Look if the close time of the current bar // falls inside the date range inDateRange = true // STEP 3: // Submit entry orders, but only when bar is inside date range if (inDateRange and longy) strategy.entry("enter long",strategy.long,when= longy) strategy.close("long",when=longexity) if (inDateRange and shorty) strategy.entry("enter short",strategy.short,when = shorty) strategy.close("short", when=shortexity)