Стратегия преобразования скользящей средней MACD в бычью-медвежью


Дата создания: 2023-12-08 15:29:41 Последнее изменение: 2023-12-08 15:29:41
Копировать: 0 Количество просмотров: 423
1
Подписаться
1166
Подписчики

Стратегия преобразования скользящей средней MACD в бычью-медвежью

Обзор

Стратегия перехода MACD в среднюю линию быков и медведей производит торговый сигнал путем вычисления средней линии DIFF и DEA в MACD-индикаторе, чтобы определить, произошел ли рыночный тренд. Когда DIFF превышает DEA, делают больше; когда DIFF превышает DEA, делают меньше.

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

Стратегия основана на DIFF и DEA средних значений MACD. MACD представляет собой дифференцированный переходный средний показатель, состоящий из DIFF, DEA и MACD.

Когда DIFF вверх пробивает DEA, это означает, что краткосрочная средняя линия начинает укрепляться, и рынок входит в плюс, а когда DIFF вниз пробивает DEA, это означает, что краткосрочная средняя линия начинает ослабевать, и рынок входит в пустоту. Таким образом, эта стратегия делает больше на DIFF, когда она проходит DEA, и делает пустоту, когда она проходит.

В то же время, стратегия также сочетается с средней линией цены EMA, чтобы отфильтровывать ложные прорывы. Выполняется только тогда, когда DIFF вверх прорывает DEA и цена ниже предыдущей ставки; только тогда, когда DIFF вниз прорывает DEA и цена выше предыдущей ставки.

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

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

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

  1. Использование MACD-индикатора для определения точек перехода в тренде, чтобы уловить момент перехода рынка
  2. Фильтрация в сочетании с средней линией цены EMA, чтобы уменьшить вероятность ложного прорыва
  3. Торговые сигналы быстро генерируются и подходят для коротких операций
  4. Следить за тенденциями и получать среднесрочные доходы от них
  5. Использование метода “перехода в тренд” в соответствии с мышлением большинства трейдеров

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

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

  1. MACD-индикаторы подвержены ошибочным сигналам, которые требуют проверки ценового фильтра EMA, но также пропускают часть движения
  2. Следите за равновесием DIFF и DEA, если параметры не корректируются должным образом, это увеличивает ошибочный сигнал.
  3. Прорывный сигнал определяет только одну K-линию, возможно, возникнет подключение
  4. Стратегия с DIFF и DEA скрещиваниями как основными торговыми сигналами, если ситуация неблагоприятная, скрещивание сигналов происходит часто, увеличивая частоту торговли

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

  1. Настройка MACD-параметров для уменьшения ошибочного сигнала
  2. Увеличение прочности фильтра, снижение вероятности попадания
  3. Увеличение фильтрации позиций и ограничение частоты торгов

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

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

  1. Оптимизация MACD-параметров, регулируемость DIFF- и DEA-циклов;
  2. Увеличение фильтрации времени удержания позиций и снижение частоты торгов;
  3. Повышение стратегии сдерживания убытков, чтобы контролировать единичные убытки;
  4. В сочетании с другими показателями фильтрации, такие как BOLL вверх и вниз, KD и т. д.;
  5. Повышение оценки трендов, избегание контрастных сделок;
  6. На основе этой стратегии можно разработать шаблоны стратегии выхода из игры или стратегии остановки.

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

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

Исходный код стратегии
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("macd_strategy", 
          shorttitle="macd", 
          overlay=true, 
          pyramiding=1, 
          max_bars_back=5000, 
          calc_on_order_fills = false, 
          calc_on_every_tick=true, 
          default_qty_type=strategy.percent_of_equity, 
          default_qty_value=100, 
          commission_type =strategy.commission.percent, 
          commission_value=0.00075)
[diff, dea, _] = macd(close, 12, 26, 7)
dea_close = ema(diff, 3)
price = ema(close, 9)
plot(price)
cross_over_price = na
cross_over_signal = na
cross_over_price := cross_over_price[1]
cross_over_signal := cross_over_signal[1]

cross_under_price = na
cross_under_signal = na
cross_under_price := cross_under_price[1]
cross_under_signal := cross_under_signal[1]
if (crossover(diff,dea))
    cross_over_price := price[1]
    cross_over_signal := diff
if (crossunder(diff,dea))
    cross_under_price := price[1]
    cross_under_signal := diff
if dea > 0
    cross_over_price = na
    cross_over_signal = na
else
    cross_under_price = na
    cross_under_signal = na
if diff > 0
    if cross_under_price > cross_under_price[1]*1 and cross_under_signal < cross_under_signal[1]*0.95
        strategy.entry("S", strategy.short,  comment="S")
else
    if cross_over_price < cross_over_price[1]*1 and cross_over_signal > cross_over_signal[1]*0.95
        strategy.entry("B", strategy.long,  comment="B")
// strategy.exit("exit_s", "S", stop = strategy.position_avg_price*1.05, when=strategy.position_size < 0)
// strategy.exit("exit_b", "B", stop = strategy.position_avg_price*0.95, when=strategy.position_size > 0)
strategy.close_all(when=(strategy.position_size < 0 and (dea < 0 or diff > cross_under_signal*1 or crossover(diff, dea)) or (strategy.position_size > 0 and (dea > 0 or diff < cross_over_signal*1 or crossunder(diff, dea)))))