Эта стратегия представляет собой комбинационную стратегию, которая объединяет индикаторы импульса, индикаторы тренда и индикаторы скользящей средней для реализации тренда и прорыва входа / выхода.
Стратегия состоит из следующих показателей:
Линии EMA: используйте EMA 25, 50, 100 и 200 для определения основного тренда.
Индикатор следующего тренда супертенденции: параметрами являются фактор 3 и ATR 10, чтобы судить, находится ли текущая цена в восходящем или нисходящем тренде.
Индикатор стохастического импульса: %K 8 и %D 3 для определения, генерирует ли стохастический золотое крестовое или мертвое крестовое. Когда линия %K пересекает линию %D снизу, это сигнал золотого креста, и наоборот для мертвого креста.
Стратегия покупки такова: EMA показывает восходящий тренд + Supertrend показывает восходящий тренд + Stochastic golden cross.
Стратегия продажи такова: EMA показывает нисходящий тренд + Supertrend показывает нисходящий тренд + Stochastic dead cross.
Эта стратегия объединяет индикаторы тренда, импульса и прорыва для надежного определения движения рынка и точек торговли.
Основными преимуществами этой стратегии являются:
Объединение нескольких показателей улучшает надежность и эффективно отфильтровывает фальшивые прорывы.
Добавление индикатора импульса позволяет заранее определить поворотные моменты.
Настраиваемые параметры подходят для различных рыночных условий.
Реализует относительно эффективную установку стоп-лосса и прибыли.
Хорошо работает, когда проверяется в большие промежутки времени, например, ежедневно.
Существуют также некоторые риски:
Неправильное настройка параметров может привести к слишком частому трейдингу или нестабильным сигналам.
Все еще могут быть ошибки в оценке времени.
Стоп-лосс, установленный на стохастических экстремалах, может быть слишком близким.
Недостаточные данные обратного теста могут привести к искажению в параметре приспособления.
Стратегия может быть оптимизирована следующими способами:
Проверьте больше наборов параметров, чтобы найти оптимальный. Например, настроить Supertrend Factor.
Добавьте больше показателей фильтра, таких как энергия или волатильность, чтобы уменьшить ошибки в оценке.
Проверить различные способы сдерживания потерь, например, стоп-лосс на основе процента.
Оптимизируйте получение прибыли, как остановка, чтобы получить больше прибыли.
Расширить сферу, адаптироваться к большему количеству продуктов или более высоким срокам.
Логика стратегии ясна, а выбор индикаторов разумный. Она реализует трендовые и импульсные трейдинги с хорошими результатами бэкстеста. Но все еще есть место для оптимизации, например, настройки параметров, добавления фильтров, улучшения остановок и получения прибыли. Многомерная оптимизация может сделать стратегию более надежной.
/*backtest start: 2023-12-05 00:00:00 end: 2023-12-06 07:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Supertrend + Stoch Strategy", overlay=true) // ---inputs--- pl = input(1.5, title="P/L", minval=0.1) lossPercentage = input(1, title="Loss Percentage", minval=1, maxval=100) atrPeriod = input(10, "ATR Length") factor = input(3, "Supertrend Factor") periodK = input(8, title="%K Length", minval=1) smoothK = input(3, title="%K Smoothing", minval=1) periodD = input(3, title="%D Smoothing", minval=1) ema1l = input(25, title="EMA 1 Length", minval=1) ema2l = input(50, title="EMA 2 Length", minval=1) ema3l = input(100, title="EMA 3 Length", minval=1) ema4l = input(200, title="EMA 4 Length", minval=1) // ---lines--- ema1 = ema(close, ema1l) ema2 = ema(close, ema2l) ema3 = ema(close, ema3l) ema4 = ema(close, ema4l) trendUpper = ema1 > ema2 and ema3 > ema4 trendLower = ema1 < ema2 and ema3 < ema4 [supertrend, direction] = supertrend(factor, atrPeriod) supertrendUpper = direction < 0 supertrendLower = direction > 0 k = sma(stoch(close, high, low, periodK), smoothK) d = sma(k, periodD) stochCrossOver = crossover(k, d) stochCrossUnder = crossunder(k, d) // ---plot--- plot(ema1, color=color.green) plot(ema2, color=color.orange) plot(ema3, color=color.blue) plot(ema4, color=color.purple) bodyMiddle = plot((open + close) / 2, display=display.none) upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr) downTrend = plot(direction < 0 ? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr) fill(bodyMiddle, upTrend, color.new(color.green, 95), fillgaps=false) fill(bodyMiddle, downTrend, color.new(color.red, 95), fillgaps=false) // ---stop place compute--- edge = 0. // periodly high/low edge := stochCrossOver ? high : stochCrossUnder ? low : k > d ? max(edge[1], high) : k < d ? min(edge[1], low) : edge[1] // plot(edge) // ---trade condition--- // longCond = trendUpper and supertrendUpper and stochCrossOver // shortCond = trendLower and supertrendLower and stochCrossUnder longCond = trendUpper and supertrendUpper and stochCrossOver and strategy.position_size == 0 shortCond = trendLower and supertrendLower and stochCrossUnder and strategy.position_size == 0 // ---stop & take--- stop = 0. stop := nz(stop[1], stop) take = 0. take := nz(take[1], take) if longCond stop := edge[1] take := close + (close - stop) * pl if shortCond stop := edge[1] take := close - (stop - close) * pl // ---trade--- qty = strategy.equity / abs(stop - close) / 100 * lossPercentage strategy.entry("Buy", strategy.long, when=longCond, qty=qty) strategy.exit("Close Buy","Buy", limit=take, stop=stop) strategy.entry("Sell", strategy.short, when=shortCond, qty=qty) strategy.exit("Close Sell","Sell", limit=take, stop=stop) stopLine = plot(strategy.position_size != 0 ? stop : na, color=color.red, style=plot.style_linebr) takeLine = plot(strategy.position_size != 0 ? take : na, color=color.green, style=plot.style_linebr) entryLine = plot(strategy.position_size != 0 ? strategy.position_avg_price : na, color=color.blue, style=plot.style_linebr) fill(entryLine, stopLine, color.new(color.red, 90), fillgaps=false) fill(entryLine, takeLine, color.new(color.green, 90), fillgaps=false)