Прорыв по тренду - стратегия стоп-лосса Momentum


Дата создания: 2023-11-13 17:20:51 Последнее изменение: 2023-11-13 17:20:51
Копировать: 0 Количество просмотров: 847
1
Подписаться
1617
Подписчики

Прорыв по тренду - стратегия стоп-лосса Momentum

Обзор

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

Стратегический принцип

Стратегия использует динамический стоп-индикатор Volatility Stop для определения направления тренда и отслеживания стопов. Volatility Stop рассчитывает динамическую линию стоп-остановки в зависимости от диапазона колебаний цены.

  1. ATR (средняя реальная волатильность)
  2. Стоп-линия получается из ATR, умноженного на коэффициент остановки
  3. Когда цена повышается, записывается максимальная цена, стоп-линия является максимальной ценой минус ATR умноженный на коэффициент
  4. Когда цена падает, записывается минимальная цена, стоп-линия - это минимальная цена плюс ATR, умноженный на коэффициент

Таким образом, стоп-линия будет колебаться вверх и вниз по мере колебаний цены, образуя динамический канал.

Когда цена пересекает линию стоп-лосса, это означает, что тенденция изменилась, и стратегия открывает позиции:

  • Стратегия открывает позиции, когда цена пересекает линию остановки снизу вверх
  • Стратегия открывает позицию, когда цена переходит от верхней к нижней и пробивает линию остановки

После открытия позиции стратегия использует линию стоп-лосса для отслеживания стоп-лосса:

  • Стоп-линия для множественных позиций равна максимальной цене минус ATR умноженный на коэффициент
  • Стоп-линия на пустую позицию равна минимальной цене плюс ATR умноженный на коэффициент

Когда цена вновь касается линии стоп-лосса, стратегия начинает ликвидировать убытки.

Таким образом, стратегии могут работать по кругу, вовремя отслеживать тенденции, а также использовать остановки для управления рисками.

Анализ преимуществ

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

  1. Мы можем вовремя воспользоваться этим, чтобы не упустить возможности.
  2. Использование динамических стоп-позиций, которые могут быть скорректированы в зависимости от рыночных колебаний, чтобы сделать стоп-позиции более разумными
  3. Стоп-позиции обновляются по мере движения, что позволяет максимально закрепить прибыль.
  4. Победитель в тренде может добиться большей прибыли
  5. Эффективно контролировать риски и избегать чрезмерных потерь

Анализ рисков

Однако эта стратегия также несет в себе некоторые риски:

  1. В шоковых ситуациях может возникнуть ситуация, когда часто срабатывает остановка.
  2. Необходимо разумно установить стоп-коэффициент, слишком маленький будет слишком чувствительным, слишком большой потеряет смысл
  3. Необходимо обратить внимание на влияние комиссионных сделок, которые часто занимают прибыль.
  4. Некоторые из них могут потерять часть прибыли в начале тренда.
  5. Необходимо обратить внимание на риски, связанные с отклонением от стоп-линии

Ответ:

  1. Оптимальные параметры могут быть найдены с помощью обратного измерения оптимального стоп-коэффициента.
  2. Удлинение циклов торговли и снижение частоты торгов
  3. Можно подумать о добавлении фильтра filtrter, чтобы избежать слишком частого обращения
  4. Стойкость может быть расширена, но не слишком.

Направление оптимизации

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

  1. Оптимизация стоп-коэффициента, чтобы найти оптимальное сочетание параметров
  2. Добавление фильтров, чтобы избежать попадания в ловушку при землетрясении
  3. Проверка в сочетании с несколькими временными циклами для улучшения качества сигнала
  4. Оптимизация управления позициями, постепенное увеличение позиций
  5. Динамическая корректировка торгового цикла
  6. Основные акции в сочетании с выбором акций, чтобы уловить основные тенденции

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-11-11 00:00:00
end: 2023-11-12 00:00:00
period: 3m
basePeriod: 1m
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/
//@version=4
strategy(shorttitle='Volatility Stop Strategy',title='Volatility Stop Strategy (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

// Works better on 3h, 1h, 2h, 4h
// Best time frame 2H

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(3.0, "vStop Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
    var max     = src
    var min     = src
    var uptrend = true
    var stop    = 0.0
    atrM        = nz(atr(atrlen) * atrfactor, tr)
    max         := max(max, src)
    min         := min(min, src)
    stop        := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
    uptrend     := src - stop >= 0.0
    if uptrend != nz(uptrend[1], true)
        max    := src
        min    := src
        stop   := uptrend ? max - atrM : min + atrM
    [stop, uptrend]

[vStop, uptrend] = volStop(src, length, factor)


//Entry 


strategy.entry(id="long", long = true, when = crossover(close, vStop) and window())

//Exit
strategy.close("long", when = crossunder(close, vStop))

plot(vStop,"Vstop", color.black, linewidth=2)