Стратегия прорыва диапазона MACD Stochastics

Автор:Чао Чжан, Дата: 2023-12-11 11:48:27
Тэги:

img

Обзор

Стратегия прорыва диапазона MACD Stochastics объединяет индикаторы MACD и Stochastics в количественную торговую стратегию.

При занятии позиций эта стратегия учитывает сигналы как MACD, так и Stochastics для улучшения качества записей.

Логика стратегии

Стратегия прорыва диапазона MACD Stochastics в основном основана на следующих принципах:

  1. Индикатор MACD может эффективно определить направление и динамику ценовых тенденций
  2. Индикатор стохастики может обнаружить перекупленные или перепроданные условия акций
  3. Когда цена акции колеблется в течение определенного периода времени, значительное направленное движение после прорыва предыдущего диапазона, вероятно, произойдет
  4. Сочетание сигналов от MACD и Stochastics на диапазоне прорывов позволяет своевременно вводить и улучшает качество

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

Между тем, перекрестки между линией K и линией D Stochastics вокруг перекупленных/перепроданных зон (по умолчанию 30 и 70) также производят торговые сигналы.

Когда MACD и Stochastics дают выровненные сигналы, стратегия займет позицию.

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

Сильные стороны

Стратегия прорыва диапазона MACD Stochastics имеет следующие преимущества:

  1. Объединение индикаторов улучшает качество сигнала

    Использование как MACD, так и Stochastics отфильтровывает некоторые фальшивые сигналы и позволяет улучшить качество входа.

  2. Зафиксирование прорывных движений и торговля трендом

    Стратегия специализируется на поймании значительных прорывных движений после диапазона.

  3. Оптимизированный механизм стоп-лосса/приобретения прибыли эффективно контролирует риски

    Встроенная логика стоп-лосса/приобретения прибыли разумно ограничивает потерю на одной сделке и своевременное блокирование прибыли.

Риски

Несмотря на тщательное проектирование, стратегия прорыва диапазона MACD Stochastics имеет некоторые внутренние риски:

  1. Отсутствие идеального времени входа

    Неоптимальное время входа может привести к пропущенной лучшей цене входа.

  2. Неудачный выход

    Несмотря на то, что перед входом делаются надлежащие приготовления, все же возможны неудачные прорывы, приводящие к потерям.

  3. Неправильная оптимизация параметров

    Неправильные параметры серьезно подрывают эффективность стратегии.

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

  1. Добавление других показателей к фильтрующим сигналам

  2. Ручное вмешательство для обеспечения действительного прорыва

  3. Строгие испытания оптимизации параметров для нескольких наборов

Руководство по оптимизации

Остается место для дальнейшей оптимизации стратегии прорыва диапазона MACD Stochastics:

  1. Оптимизировать параметры MACD для поиска наилучшей комбинации

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

  3. Включить другие показатели, такие как KDJ, BOLL, чтобы улучшить качество входа

  4. Тестировать различные периоды хранения, оптимизировать стоп-лосс/прибыль

  5. Различия в параметрах между различными компонентами

  6. Внедрение алгоритмов машинного обучения для автоматической оптимизации параметров

Заключение

Стратегия прорыва диапазона MACD Stochastics Capitalizes на прорывах диапазона, входя на основе выровненных сигналов как 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)

Больше