
Стратегия торговли с отслеживанием движения - это автоматизированная торговая стратегия, основанная на тренде, отслеживающем движение рынка, в сочетании с несколькими техническими показателями в качестве вспомогательного суждения. Эта стратегия анализирует информацию о K-линии, определяет направление и силу текущего капитала, а затем в сочетании с техническими показателями, такими как индикатор величины цены, движущаяся средняя линия, посылает торговый сигнал, чтобы реализовать отслеживание тенденции.
В целом, эта стратегия подходит для торговли средними и длинными линиями, способна эффективно улавливать рыночные тенденции, снижать частоту торгов и стремиться к более высокой разовой прибыли. В то же время, после оптимизации параметров стратегии, она также может использоваться для торговли короткими линиями.
В основе стратегии отслеживания движения лежит определение направления основных средств на рынке. Стратегия отслеживает волатильность рынка в режиме реального времени путем вычисления показателей ATR. Когда волатильность увеличивается, то волатильность накапливается или распределяется, и стратегия временно выходит из рынка, избегая периода времени, когда волатильность работает.
Когда волатильность ослабевает, а значит, преобладающая сила накопилась или распределена, стратегия возвращается в игру, чтобы судить о конкретном направлении преобладающей силы. Осуждение осуществляется путем расчета позиции поддерживающего давления на рынке, чтобы увидеть, есть ли признаки прорыва. Если есть четкий прорыв, подтверждайте, что преобладающая сила выбрала это направление.
После определения направления главной силы, стратегия также вводит различные вспомогательные технические показатели для повторной проверки, чтобы избежать ошибочного суждения. В частности, рассчитываются такие показатели, как MACD, KDJ, чтобы определить, соответствуют ли они направлению главной силы.
Стратегия открывает позиции только тогда, когда основные и вспомогательные индикаторы дают односторонние сигналы. Это эффективно контролирует частоту торговли и допускает вход только при высокой вероятности.
После создания позиции, стратегия отслеживания движения будет отслеживать изменения цены в реальном времени и использовать расширение значения 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)