Эта стратегия - это стратегия, которая использует индикатор динамики цены. Она оценивает тенденцию рынка, рассчитывая изменение цены закрытия за определенный период и делает соответствующие длинные или короткие записи, когда существует постоянная тенденция к росту или снижению цены.
Основным показателем этой стратегии является динамика цен, которая рассчитывается как:
momentum = close - close[n]
где n представляет собой длину периода импульса. Когда импульс > 0, это означает, что цена росла в течение текущего периода. Когда импульс < 0, это означает, что цена падала в течение текущего периода.
Стратегия сначала устанавливает параметр confirmBars, который представляет количество свечей, необходимых для оценки тренда перед выполнением сделок. В пределах диапазона обратного теста, если импульс > 0 сохраняется для свечей confirmBars, производится длинный вход. Если импульс < 0 сохраняется для свечей confirmBars, производится короткий вход.
Ключ к суждению о тренде стратегии заключается в подсчете количества последовательных свечей, где импульс больше или меньше 0, что достигается с помощью переменных bcount и scount. Они увеличиваются на 1, когда соответствующее условие выполняется, и сброса на 0, когда условие не выполняется. Когда подсчет достигает confirmBars, соответствующая длинная или короткая торговля выполняется.
Это относительно простая тенденция, следующая за стратегией со следующими преимуществами:
Стратегия также сопряжена с некоторыми рисками:
Стратегия может быть оптимизирована в нескольких аспектах:
В целом, эта стратегия является простой и практичной, следующей за трендом, подходящей как вводная стратегия торговли количеством. При применении необходимо уделить внимание контролю частоты торговли и предотвращению переоценки. Между тем, параметры и фильтры должны быть скорректированы и оптимизированы на основе фактических продуктов и рыночной среды для достижения максимальной производительности стратегии.
/*backtest start: 2024-01-09 00:00:00 end: 2024-01-16 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Momentum Strategy [TS Trader]", overlay=true) confirmBars = input(1) momentumLength = input(14, title="Momentum Length") price = close momentum = close - close[momentumLength] // === INPUT BACKTEST RANGE === fromYear = input.int(2019, title="Backtest Start Year") fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12) fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31) toYear = input.int(2023, title="Backtest End Year") toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12) toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31) startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00) endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59) inBacktestRange = true // === STRATEGY LOGIC === bcond = momentum > 0 bcount = 0 bcount := bcond ? nz(bcount[1]) + 1 : 0 if (bcount == confirmBars and inBacktestRange) strategy.entry("Buy", strategy.long, comment="Long") scond = momentum < 0 scount = 0 scount := scond ? nz(scount[1]) + 1 : 0 if (scount == confirmBars and inBacktestRange) strategy.entry("Sell", strategy.short, comment="Short") // Plotting Momentum plot(momentum, title="Momentum", color=color.purple)