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

Автор:Чао Чжан, Дата: 2023-11-28 15:33:35
Тэги:

img

Обзор

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

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

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

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

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

Преимущества

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

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

Риски и решения

Эта стратегия также сопряжена со следующими рисками:

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

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

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

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

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

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

Резюме

Стратегия Multi Timeframe 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)

Больше