Стратегия трейдинга с отслеживанием импульса является автоматизированной торговой стратегией, которая в основном отслеживает тенденции рыночного импульса и использует несколько технических индикаторов в качестве вспомогательных суждений.
В целом, эта стратегия подходит для средне- и долгосрочной трендовой торговли, и может эффективно улавливать рыночные тенденции и уменьшать частоту торговли для достижения более высоких единичных прибылей.
Основой стратегии отслеживания импульса является определение направления основных фондов рынка. Стратегия рассчитывает индикатор ATR для мониторинга волатильности рынка в режиме реального времени. Когда волатильность увеличивается, это означает, что основные фонды накапливаются или распределяются, и стратегия временно выйдет с рынка, чтобы избежать периода, когда основные фонды работают.
Когда волатильность ослабевает, это означает, что накопление или распределение основной силы завершено, и стратегия снова войдет на рынок, чтобы определить конкретное направление основной силы. Метод суждения заключается в расчете позиций поддержки и давления на рынке, чтобы увидеть, есть ли признаки прорыва. Если есть ясный прорыв, это докажет, что основные фонды выбрали это направление.
После определения направления основных фондов стратегия также введет несколько вспомогательных технических индикаторов для повторной проверки, чтобы избежать ошибочных оценок.
Только когда направление основных фондов и вспомогательных индикаторов дают сигналы в одном направлении, стратегия будет открывать позиции.
После открытия позиций стратегия отслеживания импульса будет отслеживать изменения цен в режиме реального времени и использовать расширение значений ATR в качестве сигнала остановки потери.
Кроме того, если движение цены превышает определенный диапазон, а затем снижается, также произойдет стоп-лосс.
Самое большое преимущество стратегий отслеживания импульса заключается в их высокой степени систематизации и стандартизации.
Это делает эту стратегию очень эффективной, и пользователи могут применять ее для длительного использования после настройки без ручного вмешательства.
Стратегия имеет встроенные многоуровневые механизмы контроля риска, такие как оценки основной мощности, вспомогательная проверка, установка линии остановки потерь и т. д., которые могут эффективно контролировать несистемные риски.
В частности, стратегия открывает позиции только в ситуациях с высокой вероятностью и устанавливает научные точки остановки убытков, чтобы максимально избежать убытков.
По сравнению с краткосрочными стратегиями, период хранения стратегий отслеживания импульса длиннее, и каждая прибыль выше.
Кроме того, стратегия отслеживает среднесрочные и долгосрочные тенденции, которые могут полностью отразить волатильность тенденций.
Стратегия отслеживания импульса включает в себя несколько параметров, таких как параметры ATR, параметры проникновения, параметры остановки потерь и т. Д. Существует определенная корреляция между этими параметрами, что требует повторного тестирования для поиска оптимальной комбинации параметров.
Неправильная конфигурация параметров может легко привести к чрезмерной частоте торговли или недостаточному контролю рисков.
Когда стратегия определяет основные сигналы мощности и индикатора, она опирается на прорыв цен для подтверждения.
Если ключевой прорыв не удастся, это может привести к большим потерям.
Алгоритмы машинного обучения могут использоваться для автоматического обнаружения корреляций между параметрами и поиска оптимальных комбинаций параметров. Это намного эффективнее, чем ручное тестирование.
В частности, алгоритм EnvironmentError может использоваться для непрерывной итерации параметров на основе обучения усилению для максимизации доходности стратегии.
На основе существующих показателей, таких как показатели объема торговли, показатели потоков капитала и т. д., можно ввести дополнительные фильтры для трех-четырехкратной проверки сигналов прорыва для повышения надежности.
Но слишком много фильтров также может привести к упущенным возможностям. Интенсивность фильтра должна быть сбалансирована. Кроме того, сами фильтры также должны избегать корреляции.
Комбинировать стратегию отслеживания импульса с другими стратегиями, чтобы использовать преимущества различных стратегий для достижения ортогональности и улучшения общей стабильности.
Например, внедрение краткосрочных стратегий обратной торговли и открытие обратных сделок после прорыва может обеспечить большую прибыль.
В целом, стратегия трейдинга с отслеживанием тренда является систематизированной стратегией отслеживания тренда, которую стоит рекомендовать.
Но сама стратегия также имеет некоторые врожденные недостатки. Она требует от пользователей иметь возможность оптимизировать параметры и интегрировать стратегии, чтобы максимизировать эффективность этой стратегии. В целом стратегия отслеживания импульса является количественным продуктом, подходящим для количественных энтузиастов с некоторой основой.
/*backtest start: 2023-12-12 00:00:00 end: 2023-12-15 01:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Created by frasmac2k Strategy credit to Alex Morris //@version=5 strategy("Mechanical", shorttitle="MECH", overlay=true) // Get the current date and time currentYear = year currentMonth = month currentDay = dayofmonth // Create a timestamp for the present date and time currentTimestamp = timestamp(currentYear, currentMonth, currentDay) // Define time interval for backtesting dStart = input(timestamp('2023-07-01'), title='Set Start date', tooltip='Select a start date to run the script from') // Define direction of strategy direction = input.string('Forward',title='Direction', tooltip='Forward will go LONG on a Green anchor candle. Inverse will go short on a Green anchor candle and vice versa for Red candle', options=['Forward', 'Inverse']) // Define the anchor hour as user input with a range of 0 to 23 anchorHour = input.int(11, title="Anchor Hour", tooltip='Set the hour to trade', minval=0, maxval=23) // Define the take profit and stop loss in pips takeProfitPips = input.int(10, title='Define TP Pips', tooltip='How many pips do you want to set TP. Choose a sensible value related to the instrument', minval=5) stopLossPips = input.int(10,'Define SL Pips', tooltip='How many pips do you want to set SL. Choose a sensible value related to the instrument', minval=5) // Define Tick size tick10p = input.int(100, title='tick size', tooltip='Choose how many ticks equal 10 pips. This can vary by broker so measure 10 pips on the chart and select how many ticks that equates to. Forex is typically 100. Some instruments such as indices can be 1000', options=[100,1000]) // Declare TP/SL variables var float takeProfit = na var float stopLoss = na // Calculate take profit and stop loss levels in ticks if tick10p == 100 takeProfit := takeProfitPips * 10 stopLoss := stopLossPips * 10 if tick10p == 1000 takeProfit := takeProfitPips * 100 stopLoss := stopLossPips * 100 // Declare offset time var int offset = na if currentTimestamp > timestamp('2023-10-29') offset := 4 else offset := 5 //adjust for exchange time anchorHour := anchorHour - offset // Define the anchor hour as user input with a range of 0 to 23 tradeHour = anchorHour // Define logical check for strategy date range isStratTime = true // Calculate the time condition for placing the order at the user-defined hour (start of the next hour) isTradeTime = true // Logic condition for forwards or inverse isForward = direction == 'Forward' isInverse = direction == 'Inverse' // Declare entry condition variables var bool longCondition = na var bool shortCondition = na // Declare and initialize variables for anchorCandle open and close prices var float anchorOpen = na var float anchorClose = na var float tradeOpen = na var float tradeClose = na // Set logic by direction if isForward // Strategy logic if isTradeTime and isStratTime //Obtain candle open/close anchorOpen := open anchorClose := close // Define entry conditions longCondition := anchorClose > anchorOpen shortCondition := anchorClose < anchorOpen // Entry logic if longCondition strategy.entry("Long", strategy.long) strategy.exit("Exit Long", from_entry="Long", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL') if shortCondition strategy.entry("Short", strategy.short) strategy.exit("Exit Short", from_entry="Short", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL') if isInverse // Strategy logic if isTradeTime and isStratTime //Obtain candle open/close anchorOpen := open anchorClose := close // Define entry conditions shortCondition := anchorClose > anchorOpen longCondition := anchorClose < anchorOpen // Entry logic if longCondition strategy.entry("Long", strategy.long) strategy.exit("Exit Long", from_entry="Long", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL') if shortCondition strategy.entry("Short", strategy.short) strategy.exit("Exit Short", from_entry="Short", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL') // Define the time range for the background shade startHour = anchorHour startMinute = 0 endHour = anchorHour endMinute = 0 // Check if the current time is within the specified range isInTimeRange = (hour == startHour and minute >= startMinute) or (hour == endHour and minute <= endMinute) or (hour > startHour and hour < endHour) // Define the background color for the shade backgroundColor = color.new(color.red, 90) // Apply the background shade bgcolor(isInTimeRange ? backgroundColor : na)