Стратегия прорыва стохастического импульса


Дата создания: 2023-10-24 16:35:24 Последнее изменение: 2023-10-24 16:35:24
Копировать: 0 Количество просмотров: 816
1
Подписаться
1617
Подписчики

Стратегия прорыва стохастического импульса

Обзор

Стратегия прорыва в основном использует индикатор стохастического осциллятора, чтобы определить направление тенденции рынка, в сочетании с индикатором ADX, который определяет сильную тенденцию, формирует торговый сигнал. Эта стратегия в основном применима к торговле средними и длинными линиями.

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

Стратегия основана на двух технических показателях:

  1. Стохастический осциллятор: используется для определения направления рыночной тенденции. Значения стохастического осциллятора от 0 до 100, когда цикл составляет 14, значения в диапазоне от 45 до 55 означают отсутствие четкой тенденции.

  2. Индикатор ADX: используется для определения сильной тенденции. ADX ниже 20 означает слабую тенденцию.

Стратегия сначала определяет, существует ли в настоящее время четкая тенденция к росту или падению, основываясь на значении стохастического осциллятора. Когда Stochastic выше 55, считается, что существует тенденция к понижению; когда Stochastic ниже 45, считается, что существует тенденция к снижению.

Затем стратегия обнаруживает, находится ли ADX выше 20, если ADX выше 20, то это означает, что тенденция сильна, и можно торговать по тренду. Если ADX ниже 20, то это означает, что тенденция недостаточно очевидна, и тогда стратегия не будет создавать торговый сигнал.

Комбинированный Stochastic oscillator и ADX указывают на то, что стратегия создает сигнал покупки/продажи при одновременном выполнении следующих двух условий:

  1. Стохастический показатель выше 55, что говорит о позитивной тенденции
  2. ADX выше 20, что свидетельствует о сильной тенденции к повышению

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

  1. Stochastic ниже 45, что указывает на тенденцию к снижению
  2. ADX выше 20, что указывает на сильную нисходящую тенденцию

С помощью таких правил суждения, стратегия формирует трендоориентированную стратегию торговли средней и длинной линией.

Стратегические преимущества

Эта стратегия имеет следующие преимущества:

  1. Поймание средне-длинных тенденций: в сочетании со стохастикой и ADX, можно эффективно определить направление и силу средне-длинных тенденций на рынке, чтобы уловить основные тенденции.

  2. Контроль отмены: торговать только в то время, когда тенденция очевидна, чтобы эффективно контролировать отмены, вызванные бесполезной обратной торговлей.

  3. Пространство оптимизации параметров: Стохастические циклы и ADX-циклы могут быть оптимизированы, и параметры могут быть скорректированы для разных рынков.

  4. Простая интуиция: общая логика стратегии проста и понятна, состоит из двух часто используемых технических показателей, которые легко понять.

  5. universality:The strategy can be applied to different markets with parameter tuning.

Стратегический риск

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

  1. Пропущенный прорыв: Stochastic и ADX являются индикаторами, следующими за тенденцией, которые могут пропустить потенциальные переломные моменты в тренде, пропустить ранние возможности для торговли.

  2. Риск обратного тренда: в конце тренда Stochastic и ADX могут ошибочно решить, что тренд продолжается, и упустить возможность вовремя выйти из тренда, что приводит к увеличению убытков.

  3. Сложность оптимизации параметров: параметры Stochastic и ADX требуют оптимизации для разных рынков, и существуют определенные трудности.

  4. Whipsaws: В рынках без четкой тенденции эта стратегия может привести к многократным недействительным торговым сигналам.

  5. Divergence:When the price trend conflicts with the Stochastic oscillator trend, divergence emerges, which may lead to losing trades.

Риски можно снизить следующими способами:

  1. В сочетании с другими показателями, оценивающими локальные тенденции, выявлены потенциальные точки прорыва.

  2. Увеличение сигнала обратного тренда и своевременное выходе из тренда.

  3. Автоматическая оптимизация параметров с помощью методов машинного обучения.

  4. Increase the ADX threshold to filter out weak trend signals in ranging markets.

  5. Apply additional indicators to confirm the Stochastic signals and avoid divergence trades.

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

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

  1. Оптимизация параметров Stochastic: регулирование параметров K-циклов, D-циклов и т. Д., оптимизация позиционирования точек купли-продажи.

  2. Оптимизация параметров ADX: корректировка цикла ADX для определения наилучших параметров, определяющих сильные и слабые тенденции.

  3. Увеличение сигнала обратного тренда: увеличение позиций в зоне перепродажи Stochastic, установка стоп-лоса.

  4. В сочетании с другими индикаторами: в сочетании с RSI, MACD и другими индикаторами, чтобы определить время покупки и продажи.

  5. Машинное обучение: получение оптимального пакета параметров с использованием машинного обучения.

  6. Увеличение стратегии стоп-лосса: установка мобильного стоп-лосса или переключение на стоп-лосса, контроль одиночных потерь.

  7. Trailong stop loss: Add trailing stop loss to lock in profits as the trend extends.

  8. Money management: Optimize the risk management by adjusting position sizing based on ADX strength.

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

В целом, эта динамическая стратегия для прорыва ориентирована на тренд, используя Stochastic для определения направления тренда, ADX для определения силы тренда и формирования стратегии торговли на средней и долгой линии. Преимущества стратегии заключаются в том, чтобы улавливать тенденцию, контролировать отступ, простой интуитивный, недостатки могут быть пропущены ранние точки прорыва, существует риск обратного тренда.

Исходный код стратегии
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Created by Bitcoinduke
//Original Creator is Jake Bernstein 
// Link: https://school.stockcharts.com/doku.php?id=trading_strategies:stochastic_pop_drop
// Tested: XBTUSD 3h | BTCPERP FTX 3h
//@version=4
// strategy(shorttitle="Stochastic Pop and Drop", title="Pop and Drop", overlay=false, 
//      calc_on_every_tick=false, pyramiding=0, default_qty_type=strategy.cash, 
//      default_qty_value=1000, currency=currency.USD, initial_capital=1000,
//      commission_type=strategy.commission.percent, commission_value=0.075)

upper_threshold_buy = input(55, minval=50, title="Buy Entry/Exit Line")
lower_threshold_sell = input(45, maxval=50, title="Sell Entry/Exit Line")

oscillator_length = input(14, minval=1, title="Stochastic Length - Default 14")
sma_length = input(2, minval=1, title="SMA Length - 3-day (3 by default) simple moving average of stoch")

stoch_oscillator = sma(stoch(close, high, low, oscillator_length), sma_length)

//Upper and Lower Entry Lines
upper_line = upper_threshold_buy
lower_line = lower_threshold_sell

stoch_color = stoch_oscillator >= upper_line ? green : stoch_oscillator <= lower_line ? red : purple

//Charts
plot(stoch_oscillator, title="Stochastic", style=histogram, linewidth=4, color=stoch_color)
upper_threshold = plot(upper_line, title="Upper Line", style=line, linewidth=4, color=green)
lower_threshold = plot(lower_line, title="Lower Line", style=line, linewidth=4, color=red)

// Strategy Logic
LongSignal = stoch_oscillator >= upper_line and not (stoch_oscillator > lower_line and stoch_oscillator < upper_line) ? true : false
ShortSignal = stoch_oscillator <= lower_line and not (stoch_oscillator > lower_line and stoch_oscillator < upper_line) ? true : false

strategy.entry("POP_Short", strategy.short, when=ShortSignal)
strategy.entry("POP_Long", strategy.long, when=LongSignal)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(true, "Custom Backtesting Dates")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(5, "Backtest Stop Day")
testStopHour = input(0, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END