
Стратегия MACD Stochastics Oscillation Breakout Strategy - это количественная торговая стратегия, которая объединяет индикатор MACD и индикатор Stochastics. Стратегия пытается определить направление тренда цен на акции и войти в позицию, когда цена выходит из зоны колебаний.
При входе в позицию стратегия одновременно учитывает сигналы обоих показателей MACD и Stochastics, чтобы повысить качество записей. Кроме того, стратегия предусматривает остановку и остановку, чтобы эффективно контролировать риск.
Стратегия MACD Stochastics для волнового прорыва основана на следующих принципах:
В частности, эта стратегия использует пересечение линии DIFF и линии DEA в MACD-индикаторе в качестве сигнала для определения направления ценовой тенденции. Когда DIFF вверх нарушает DEA, генерируется многоголовый сигнал, а наоборот, генерируется пустой сигнал.
В то же время, пересечение линии K Stochastics вверх или вниз с линией D вблизи зоны перекупа и перепродажи (по умолчанию 30 и 70) также создает торговый сигнал.
Стратегия выбирает вход, когда MACD и Stochastics дают одновременные сигнала. В этот момент цена акций, скорее всего, будет иметь большой прорыв.
После входа в игру, стратегия устанавливает рациональные стоп-лосы и стоп-стопы. Рациональные стоп-лосы позволяют эффективно контролировать одноразовые потери, а стоп-стопы - блокировать прибыль.
Стратегия прорыва в волновом диапазоне MACD Stochastics имеет следующие преимущества:
Эта стратегия использует одновременно MACD и Stochastics, чтобы отфильтровать ложные сигналы и улучшить качество записей.
Стратегии, специально разработанные для того, чтобы поймать прорывные события после длительных колебаний цен на акции. Такие события обычно имеют большую ширину.
Стратегия имеет встроенный стоп-стоп, который позволяет разумно контролировать одиночные потери и своевременно блокировать прибыль.
Несмотря на тщательно разработанную стратегию прорыва в MACD Stochastics, существуют определенные риски:
Перед прорывом цены на акции может произойти некоторое ложное прорыв. Если выбор входа в момент не является правильным, это может привести к тому, что вход будет пропущен.
Несмотря на то, что перед прорывом была сделана хорошая подготовка, существует вероятность того, что прорыв провалится. В этом случае будут понесены потери.
Параметры стратегии могут иметь большое влияние на результаты. Если параметры не установлены должным образом, будет большая скидка.
Оптимизируйте эти риски следующими способами:
Комбинация других показателей фильтрующих сигналов
Человеческое вмешательство обеспечивает прорыв в позиции
Тестирование на оптимизацию множественных параметров
В то же время, по мнению аналитиков, в случае с MACD Stochastics есть все основания оптимизировать стратегию прорыва в волновом диапазоне:
Оптимизировать параметры MACD, чтобы найти оптимальную комбинацию параметров
Оптимизируйте параметры Stochastics, чтобы найти оптимальную комбинацию параметров
Добавление дополнительных комбинаций показателей, таких как KDJ, BOLL и т. Д., для дальнейшего повышения качества Entries
Тестирование различных сроков удержания позиций, оптимизация стратегии стоп-стоп
Тестирование параметрической дифференциальности различных торговых показателей
Добавление алгоритмов машинного обучения, автоматическая оптимизация параметров
MACD Stochastics использует обоих показателей, MACD и Stochastics, чтобы обеспечить высокое качество при прорыве волнового колебания. В то же время, это помогает эффективно контролировать риски с помощью стратегии прекращения убытков. Стратегия, которая захватывает краткосрочные тенденции цен на акции, имеет определенное торговое преимущество. Но есть также пространство для оптимизации параметров и исследования портфеля технических показателей, которое требует дальнейшей оптимизации.
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="macd stoch strategy", shorttitle="benzo MACD stoch",overlay=true)
// Getting inputs
fast_length = input(title = "Fast Length", defval = 180)
slow_length = input(title = "Slow Length", defval = 390)
src = input(title = "Source", defval = close)
signal_length = input.int(title = "Signal Smoothing", minval = 1, maxval = 500, defval = 135)
sma_source = input.string(title = "Oscillator MA Type", defval = "EMA", options = ["SMA", "EMA"])
sma_signal = input.string(title = "Signal Line MA Type", defval = "EMA", options = ["SMA", "EMA"])
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
// hline(0, "Zero Line", color = color.new(#787B86, 50))
// plot(hist, title = "Histogram", style = plot.style_columns, color = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252)))
// plot(macd, title = "MACD", color = #2962FF)
// plot(signal, title = "Signal", color = #FF6D00)
periodK = input.int(14, title="%K Length", minval=1)
smoothK = input.int(1, title="%K Smoothing", minval=1)
periodD = input.int(3, title="%D Smoothing", minval=1)
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)
// plot(k, title="%K", color=#2962FF)
// plot(d, title="%D", color=#FF6D00)
// h0 = hline(80, "Upper Band", color=#787B86)
// hline(50, "Middle Band", color=color.new(#787B86, 50))
// h1 = hline(20, "Lower Band", color=#787B86)
// fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")
// Make inputs that set the take profit % (optional)
longProfitPerc = input.float(3, title="Long Take Profit (%)", minval=0.0, step=0.1) * 0.01
shortProfitPerc = input.float(3, title="Short Take Profit (%)",minval=0.0, step=0.1) * 0.01
// Calculate trading conditions
enterLong = macd>signal and ta.crossover(k,30)
enterShort = macd<signal and ta.crossunder(k,70)
// Figure out take profit price
longExitPrice = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)
// Plot take profit values for confirmation
plot(strategy.position_size > 0 ? longExitPrice : na,
color=color.green, style=plot.style_circles,
linewidth=3, title="Long Take Profit")
plot(strategy.position_size < 0 ? shortExitPrice : na,
color=color.red, style=plot.style_circles,
linewidth=3, title="Short Take Profit")
// Submit entry orders
if enterLong
strategy.entry("long", strategy.long)
if enterShort
strategy.entry("short", strategy.short)
// STEP 3:
// Submit exit orders based on take profit price
if strategy.position_size > 0
strategy.exit("long TP", limit=longExitPrice)
if strategy.position_size < 0
strategy.exit("short TP", limit=shortExitPrice)