
Стратегия динамического прорыва основана на концепции, выдвинутой в 1984 году Ричардом Букстабером, о том, что, когда возникают большие колебания, рынок, как правило, продолжает работать в этом направлении. Таким образом, стратегия использует ATR для измерения волатильности и посылает торговый сигнал, когда изменение цены закрытия превышает несколько раз предел ATR.
Эта стратегия сначала рассчитывает показатель ATR, чтобы измерить волатильность рынка. Затем рассчитывает абсолютные значения ежедневных изменений в цене закрытия. Когда изменения в цене закрытия превышают показатель ATR в несколько раз, генерируется торговый сигнал.
Стратегия использует показатели ATR для динамического определения прорыва. Когда рыночная волатильность увеличивается, прорыв повышается, что позволяет сократить ошибочные сделки. Когда рыночная волатильность уменьшается, прорыв снижается, что позволяет вовремя уловить возможность прорыва.
Можно рассматривать возможность выбора оптимальных параметров для выбора времени торговли в сочетании с другими показателями, чтобы повысить эффективность. Также можно выбрать наиболее предпочтительные параметры для характеристик разновидности. Использование технологий, таких как алгоритм Мартингеля, для контроля частоты торгов.
Стратегия динамического прорыва проста и проста, используя прорыв для создания торговых сигналов. Стоп ATR позволяет ей адаптироваться к волатильности рынка. Стратегия может получить хорошие результаты, опираясь на оптимизацию параметров. Но есть и некоторые проблемы, такие как пропущенный первый прорыв, частые сделки и т. Д. Это требует дальнейших улучшений в сочетании с другими технологиями, чтобы стабильно получать прибыль на сложных рынках.
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © EduardoMattje
//@version=5
strategy("Volatility System", overlay=false, margin_long=0, margin_short=0, default_qty_type=strategy.percent_of_equity,
default_qty_value=100, process_orders_on_close=true, initial_capital=20000)
// Inputs
var averageLength = input.int(14, "Average length", 2)
var multiplier = input.float(2.0, "Multiplier", 0.0, step=0.1)
// Calculations
atr = ta.atr(averageLength) * multiplier
closingChange = ta.change(close, 1)
atrPenetration(int signal) =>
res = closingChange * signal > atr[1]
longCondition = atrPenetration(1)
shortCondition = atrPenetration(-1)
// Order calls
if (longCondition)
strategy.entry(strategy.direction.long, strategy.long)
if (shortCondition)
strategy.entry(strategy.direction.short, strategy.short)
// Visuals
plot(atr, "ATR", color.white, 2)
plot(math.abs(closingChange), "Absolute close change", color.red)