Двойная стратегия торговли MACD - это стратегия торговли, реализуемая с использованием двойных временных индикаторов MACD. Она длится, когда еженедельный индикатор MACD образует золотой крест, и закрывает позицию, когда ежедневный индикатор MACD образует смертельный крест. Когда позиция пуста, если ежедневный индикатор MACD образует еще один золотой крест, можно открыть новую длинную позицию.
В количественной торговой стратегии Dual MACD используется комбинация еженедельных и ежедневных индикаторов MACD для определения сигналов входа и выхода.
Во-первых, когда линия MACD еженедельного индикатора MACD пересекает линию сигнала, генерируется сигнал покупки и открывается длинная позиция. Затем, когда линия MACD ежедневного индикатора MACD пересекает линию сигнала, генерируется сигнал продажи и позиция закрывается.
Когда позиция пуста, если линия MACD ежедневного индикатора MACD снова пересекается выше линии сигнала, вновь открывается новая длинная позиция. То есть золотой крест ежедневного MACD выступает в качестве условия повторного входа.
Обратите внимание, что только смертельный крест ежедневного MACD закрывает позицию, но повторное открытие допускается только тогда, когда линия MACD еженедельного MACD находится выше линии сигнала в пределах
Двойная стратегия количественной торговли MACD сочетает в себе двойной анализ временных рамок, который может эффективно фильтровать ложные сигналы и улучшать качество сигнала.
Еженедельный график определяет направление основного тренда, что помогает избежать противоположной торговли.
Ежедневный график определяет сроки входа и выхода, что позволяет своевременно использовать краткосрочные торговые возможности.
Механизм
Параметры индикатора MACD регулируемы и могут быть оптимизированы в соответствии с различными сортами и рыночными условиями.
Интегрирует функции "приобрести прибыль", "остановить убыток" и "остановить убыток", чтобы эффективно контролировать риски.
Стратегия двойной количественной торговли MACD также сопряжена с некоторыми рисками, в основном включающими:
Индикатор MACD имеет тенденцию генерировать ложные сигналы и частые перекрестки, требует подтверждения от других индикаторов.
Основная тенденция, выявленная в еженедельном/месячном периоде времени, может измениться, поэтому необходима отслеживание стоп-лосса.
Параметры требуют постоянной оптимизации и корректировки в соответствии с сортами и рыночными условиями.
Нельзя чрезмерно полагаться на результаты обратного теста, живая производительность может отличаться от обратного теста.
Соответствующие решения:
Сочетать с другими показателями для создания систем стратегии с логической оптимизацией.
Установите разумный стоп-потеря, чтобы избежать превышения максимально допустимых потерь.
Постоянно оптимизируйте параметры, чтобы найти оптимальные комбинации.
Начните торговать с минимального капитала, чтобы подтвердить стабильность.
У количественной стратегии двойной торговли MACD есть возможность дальнейшей оптимизации:
Внедрение полос Боллинджера, KDJ и других индикаторов для создания стратегий, объединяющих несколько индикаторов, и улучшения качества сигналов.
Включить показатели объема торговли, чтобы избежать ложных прорывов с недостаточным объемом.
Использование методов машинного обучения для автоматической оптимизации параметров и достижения динамической настройки.
Дальнейшая корректировка стратегии по риску, например, добавление передовых методов стоп-лосса, таких как соотношение прибыли и убытка.
Стратегия тестирования пригодности и оптимизации, чтобы избежать проблем с переподготовкой.
Двойная стратегия количественного трейдинга MACD интегрирует двойной временной анализ для определения основных и второстепенных тенденций и в полной мере использует преимущества каждого индикатора.
/*backtest start: 2023-01-29 00:00:00 end: 2024-01-11 05:20:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © maxits // Long Position: Weekly Macd line crosses above Signal line // [Trading Window Macd Line > Signal Line] (Weekly) // Close Position: Daily Macd Line crosses above Daily Signal line. // Re Entry Condition: Macd line crosses above Signal line only if [Trading Window MacdLine > Sgnal Line] (Weekly) //@version=4 strategy("Dual MACD Strategy", shorttitle="Dual Macd Tester", overlay=false, initial_capital=1000, default_qty_value=20, default_qty_type=strategy.percent_of_equity, commission_value=0.1, pyramiding=0) // Define user inputs i_time = input(defval = timestamp("01 May 2018 13:30 +0000"), title = "Start Time", type = input.time) // Starting time for Backtesting f_time = input(defval = timestamp("9 Sep 2021 13:30 +0000"), title = "Finish Time", type = input.time) // Finishing time for Backtesting sep1 = input(false, title="------ Profit & Loss ------") enable_TP = input(true, title="Enable Just a Profit Level?") enable_SL = input(false, title="Enable Just a S.Loss Level?") enable_TS = input(true, title=" Enable Only Trailing Stop") long_TP_Input = input(30.0, title='Take Profit %', type=input.float, minval=0)/100 long_SL_Input = input(1.0, title='Stop Loss %', type=input.float, minval=0)/100 long_TS_Input = input(5.0, title='Trailing Stop %', type=input.float, minval=0)/100 cl_low_Input = input(low, title="Trailing Stop Source") long_TP = strategy.position_avg_price * (1 + long_TP_Input) long_SL = strategy.position_avg_price * (1 - long_SL_Input) long_TS = cl_low_Input * (1 - long_TS_Input) sep2 = input(false, title="------ Macd Properties ------") d_res = input(title="Short Term TimeFrame", type=input.resolution, defval="D") // Daily Time Frame w_res = input(title="Long Term TimeFrame", type=input.resolution, defval="W") // Weekly Time Frame src = input(close, title="Source") // Indicator Price Source fast_len = input(title="Fast Length", type=input.integer, defval=12) // Fast MA Length slow_len = input(title="Slow Length", type=input.integer, defval=26) // Slow MA Length sign_len = input(title="Sign Length", type=input.integer, defval=9) // Sign MA Length d_w = input(title="Daily or Weekly?", type=input.bool, defval=true) // Plot Daily or Weekly MACD // Color Plot for Macd col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 // BG Color bg_color = color.rgb(127, 232, 34, 75) // Daily Macd [d_macdLine, d_singleLine, d_histLine] = security(syminfo.tickerid, d_res, macd(src, fast_len, slow_len, sign_len)) // Funcion Security para poder usar correcta resolución plot(d_w ? d_macdLine : na, color=color.blue) plot(d_w ? d_singleLine : na, color=color.orange) plot(d_w ? d_histLine : na, style=plot.style_columns, color=(d_histLine>=0 ? (d_histLine[1] < d_histLine ? col_grow_above : col_fall_above) : (d_histLine[1] < d_histLine ? col_grow_below : col_fall_below))) // Weekly Macd [w_macdLine, w_singleLine, w_histLine] = security(syminfo.tickerid, w_res, macd(src, fast_len, slow_len, sign_len)) // Funcion Security para poder usar correcta resolución plot(d_w ? na : w_macdLine, color=color.blue) plot(d_w ? na : w_singleLine, color=color.orange) plot(d_w ? na : w_histLine, style=plot.style_columns, color=(w_histLine>=0 ? (w_histLine[1] < w_histLine ? col_grow_above : col_fall_above) : (w_histLine[1] < w_histLine ? col_grow_below : col_fall_below))) ///////////////////////////////// Entry Conditions inTrade = strategy.position_size != 0 // Posición abierta notInTrade = strategy.position_size == 0 // Posición Cerrada start_time = true trading_window = w_macdLine > w_singleLine // Weekly Macd Signal enables a trading window bgcolor(trading_window ? bg_color : na) buy_cond = crossover (w_macdLine, w_singleLine) sell_cond = crossunder(d_macdLine, d_singleLine) re_entry_cond = crossover (d_macdLine, d_singleLine) and trading_window // Entry Exit Conditions trailing_stop = 0.0 // Code for calculating Long Positions Trailing Stop Loss trailing_stop := if (strategy.position_size != 0) stopValue = long_TS max(trailing_stop[1], stopValue) else 0 if (buy_cond and notInTrade and start_time) strategy.entry(id="First Entry", long=strategy.long, comment="First Long") if (sell_cond and inTrade) strategy.close(id="First Entry", comment="Close First Long") if (re_entry_cond and notInTrade and start_time) strategy.entry(id="Further Entry", long=strategy.long, comment="Further Entry") if (sell_cond and inTrade) strategy.close(id="Further Entry", comment="Close First Long") if enable_TP if (enable_TS and not enable_SL) strategy.exit("Long TP & TS FiEn", "First Entry", limit = long_TP, stop = trailing_stop) strategy.exit("Long TP & TS FuEn", "Further Entry", limit = long_TP, stop = trailing_stop) else if (enable_SL and not enable_TS) strategy.exit("Long TP & TS FiEn", "First Entry", limit = long_TP, stop = long_SL) strategy.exit("Long TP & TS FuEn", "Further Entry", limit = long_TP, stop = long_SL) else strategy.exit("Long TP & TS FiEn", "First Entry", limit = long_TP) strategy.exit("Long TP & TS FuEn", "Further Entry", limit = long_TP) else if not enable_TP if (enable_TS and not enable_SL) strategy.exit("Long TP & TS FiEn", "First Entry", stop = trailing_stop) strategy.exit("Long TP & TS FuEn", "Further Entry", stop = trailing_stop) else if (enable_SL and not enable_TS) strategy.exit("Long TP & TS FiEn", "First Entry", stop = long_SL) strategy.exit("Long TP & TS FuEn", "Further Entry", stop = long_SL) plot(enable_TP ? long_TP : na, title="TP Level", color=color.green, style=plot.style_linebr, linewidth=2) plot(enable_SL ? long_SL : na, title="SL Level", color=color.red, style=plot.style_linebr, linewidth=2) plot(enable_TS and trailing_stop ? trailing_stop : na, title="TS Level", color=color.red, style=plot.style_linebr, linewidth=2)