Эта стратегия определяет направление тренда путем прорыва динамической линии стоп-лосса. Она вступает в торговлю, когда цена проникает в линию стоп-лосса и использует линию стоп-лосса для отслеживания тенденций и блокировки прибыли. Стратегия направлена на захват средне-долгосрочных тенденций при одновременном контроле риска с динамическими остановками.
Стратегия использует индикатор волатильности остановки для определения направления тренда и отслеживания остановки потери.
Линия стоп-лосса колеблется вверх и вниз с ценой, образуя динамический канал.
Когда цена проникает в линию стоп-лосса, это сигнализирует об обратном тренде.
После открытия позиции стратегия отслеживает стоп-лосс с линией:
Когда цена снова достигнет линии остановки, позиция будет закрыта.
Таким образом, стратегия может своевременно отслеживать тенденции, контролируя риск с помощью остановок.
Стратегия имеет следующие преимущества:
Также следует учитывать некоторые риски:
Решения:
Стратегия может быть дополнительно оптимизирована в следующих аспектах:
В целом, эта стратегия прорыва импульса с остановкой волатильности является очень практичной системой, следующей за трендом. Она может захватить возможности перехода тренда и следовать за трендом, эффективно контролируя риск с динамическими остановками. При правильной настройке параметров она может достичь хорошей доходности во время трендовых рынков. Но некоторые проблемы необходимо решить, такие как чрезмерно чувствительные остановки, высокая частота торговли и т. Д. Дальнейшая оптимизация может превратить ее в эффективную и надежную квантовую торговую стратегию.
/*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)