Комбинированная стратегия прорыва импульса и следования за трендом


Дата создания: 2023-12-13 16:41:25 Последнее изменение: 2023-12-13 16:41:25
Копировать: 0 Количество просмотров: 622
1
Подписаться
1621
Подписчики

Комбинированная стратегия прорыва импульса и следования за трендом

Обзор

Эта стратегия является комбинированной стратегией, которая включает в себя динамический индикатор, индикатор трендового отслеживания и индикатор средней линии, позволяющий отслеживать тренд и совершать прорыв в покупке/продаже. В основном, используя комбинацию индикатора Stochastic и индикатора Supertrend для определения времени покупки/продажи, в дополнение к EMA для определения основных тенденций на рынке.

Стратегический принцип

Стратегия включает в себя следующие компоненты:

  1. EMA средняя линия: используйте EMA 25, 50, 100 и 200 четыре средние линии для определения основного тренда. Если EMA25 проходит через EMA50 и EMA100 проходит через EMA200, то это является восходящим трендом, иначе это является нисходящим трендом.

  2. Трендовый индикатор Supertrend: параметры Factor 3 и ATR 10, определяют, находится ли текущая цена в тенденции к росту или снижению. Когда Supertrend зеленый - это тенденция к росту, красный - тенденция к снижению.

  3. Стохастический динамический индикатор: %K 8 и %D 3, определяющий, является ли Stochastic явлением золотой или мертвой вилки. Когда %K линия проходит через %D линию снизу, она является золотой вилкой, а наоборот - мертвой вилкой.

Стратегия покупки: EMA показывает тенденцию к повышению + Supertrend показывает тенденцию к повышению + Stochastic Gold Forks. Продажная стратегия: EMA показывает нисходящий тренд + Supertrend показывает нисходящий тренд + Stochastic Dead Forks.

Стратегия включает три показателя: тренд, динамику и прорыв, чтобы более надежно оценить движение рынка и точки покупки и продажи.

Анализ преимуществ

Основные преимущества этой стратегии:

  1. В сочетании с различными показателями, более сильное суждение может эффективно отфильтровывать ложные прорывы.

  2. Добавление динамических показателей позволяет заранее определить переломный момент.

  3. Настраиваемые параметры для различных рыночных условий.

  4. Относительно эффективные настройки для остановки и остановки ущерба.

  5. Лучше всего проводить обратное измерение при высоких циклах, таких как солнечные лучи.

Анализ рисков

Однако эта стратегия также несет в себе некоторые риски:

  1. Неправильная настройка параметров может привести к частоте торгов или нестабильности сигнала.

  2. При выборе может быть допущена ошибочная оценка. Можно рассмотреть возможность добавления дополнительных показателей.

  3. Стоп-стоп устанавливается на предельную величину Stochastic, которая может быть слишком близко, и следует рассмотреть возможность соответствующего смягчения.

  4. Недостаток данных отслеживания может повлиять на параметры присоединения, следует расширить период отслеживания.

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих направлениях:

  1. Проверьте больше комбинаций параметров, чтобы найти оптимальные параметры. Например, настройка параметров Supertrend Factor и т. Д.

  2. Добавление большего количества фибровых показателей, таких как показатели энергии, показатели колебаний и т. д., уменьшает вероятность ошибочного суждения.

  3. Можно проверить различные методы остановки, например, настроить линию остановки на определенный процент в предельной точке.

  4. Оптимизировать методы остановки, например, рассматривать динамические остановки, чтобы зафиксировать больше прибыли.

  5. Расширение применения стратегии, например, попытка адаптироваться к большему количеству торговых сортов или попытка использования в более высоких циклах.

Подвести итог

Стратегия имеет четкую общую концепцию, разумный выбор индикаторов, лучшее отслеживание трендов и взлома сделок, лучший эффект от отслеживания. Тем не менее, все еще есть место для оптимизации, многосторонняя оптимизация путем корректировки параметров, добавления большего количества индикаторов колебаний, улучшения метода остановки убытков и т. Д.

Исходный код стратегии
/*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)