Стратегия MACD с несколькими таймфреймами


Дата создания: 2023-11-28 15:33:35 Последнее изменение: 2023-11-28 15:33:35
Копировать: 0 Количество просмотров: 1201
1
Подписаться
1617
Подписчики

Стратегия MACD с несколькими таймфреймами

Обзор

Стратегия MACD с несколькими временными рамками (Multi Timeframe MACD Strategy) - это количественная торговая стратегия, которая использует индикатор MACD для отслеживания тенденций на нескольких временных рамках. Эта стратегия используется для создания торговых сигналов, рассчитывая индикатор MACD на различные периоды времени (три, пять, пятнадцать и тридцать минут), чтобы определить, является ли ценовое движение между различными периодами согласованным.

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

Основная логика этой стратегии заключается в том, чтобы рассчитать пересечение MACD-индикатора на несколько временных рамок: 3 минуты, 5 минут, 15 минут, 30 минут. Сначала вычислить MACD-индикатор на каждом временном периоде, чтобы определить ценовое движение в этом временном периоде (вверх или вниз) на основе MACD-индикатора.

  1. Сигналы о покупке появляются, когда цены растут во всех временных рамках.
  2. Сигнал “продажа” возникает, когда цены снижаются во всех временных рамках.

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

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

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

  1. Заявление на участие в конкурсе было опубликовано на официальном сайте компании “Коммерсант” в январе 2015 года.
  2. Параметры индикатора MACD могут быть настроены настраиваемо, чтобы адаптироваться к различным рыночным условиям;
  3. Гибкая конфигурация требует комплексного решения по временным рамкам, самостоятельно определяя правила торговли.

Стратегические риски и решения

Также существуют риски:

  1. При оценке согласованности тенденций во всех временных рамках может быть упущена возможность для локального переворота;
  2. Неправильная настройка параметров индикатора MACD может привести к плохой эффективности торгового сигнала.

Соответствующее решение:

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

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

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

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

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

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

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

//@version=2
strategy("[RichG] Easy MTF Strategy", overlay=false)

TF_1_time = input("3", "Timeframe 1")
TF_2_time = input("5", "Timeframe 2")
TF_3_time = input("15", "Timeframe 3")
TF_4_time = input("30", "Timeframe 4")

fastLen = input(title="Fast Length",  defval=12)
slowLen = input(title="Slow Length",  defval=26)
sigLen  = input(title="Signal Length",  defval=9)
[macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen)

width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor

TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short)
    
strategy.close("MTF_Long", when=exitCondition_Long)    
strategy.close("MTF_Short", when=exitCondition_Short)