
Обзор
Стратегия представляет собой динамическую, основанную на волатильности, выборную торговую систему, которая сочетает в себе тенденционное отслеживание и управление рисками. В основе стратегии лежит идентификация изменений в рыночных тенденциях через канал волатильности, а также внедрение механизма управления динамическими позициями на основе ATR, что позволяет точно контролировать торговые риски.
Стратегический принцип
Основная логика стратегии основана на следующих ключевых компонентах:
- Расчет каналов волатильности: используйте показатель ATR (Average True Range) для измерения волатильности рынка и создания динамического канала волатильности. Ширина канала определяется значениями ATR и множительным фактором и может быть гибко скорректирована в зависимости от особенностей рынка.
- Механизм определения тренда: определение направления тренда путем сравнительного расположения ценового и волатильного каналов. Установление восходящего тренда, когда цена проходит верхний канал, и установление нисходящего тренда, когда цена проходит нижний канал.
- Система управления позициями: основанная на начальном капитале и заранее заданной пропорции риска для каждой сделки, в сочетании с динамическим расчетом количества открытых позиций в режиме реального времени с учетом стоп-лост-дистанции, обеспечивает единообразное раскрытие риска для каждой сделки.
- Механизм управления рисками: установлена динамическая остановка, основанная на канале волатильности, автоматическая ликвидация позиций, когда цена достигает пределов остановки, и принудительная ликвидация позиций до закрытия, чтобы избежать риска на ночь.
Стратегические преимущества
- Самостоятельная адаптация: стратегия может автоматически корректировать торговые параметры в зависимости от изменения рыночной волатильности и адаптироваться к различным рыночным условиям.
- Контролируемый риск: с помощью динамического управления позициями и механизмов остановки убытков, гарантируя, что риск для каждой сделки находится в заданных пределах.
- Точность определения трендов: использование каналов волатильности позволяет эффективно отфильтровывать ложные прорывы и повышать точность определения трендов.
- Нормализация операций: четкость условий входа и выхода стратегии, уменьшение неопределенности, вызванной субъективным суждением.
- Наука управления капиталом: внедрение методов управления позициями, основанных на риске, чтобы избежать чрезмерного риска, который может быть связан с фиксированными позициями.
Стратегический риск
- Риск колебаний рынка: возможна частота торгов на колебаниях рынка, что приводит к последовательным небольшим убыткам.
- Влияние на скольжение: во время высокой волатильности может возникнуть более высокий риск скольжения, влияющий на эффективность стратегии.
- Чувствительность к параметрам: эффекты стратегии более чувствительны к выбору ATR-циклов и множительного фактора, неправильный выбор параметров может повлиять на эффективность стратегии.
- Требования к финансированию: управление динамическими позициями может потребовать больших первоначальных капиталов, чтобы обеспечить эффективный контроль риска.
Направление оптимизации стратегии
- Фильтрация рыночной конъюнктуры: можно добавить индикатор интенсивности тренда, приостановить торговлю на горизонтальном рынке и снизить потери в рыночных колебаниях.
- Анализ многократных временных циклов: в сочетании с более длительными периодами, для определения тенденций и повышения точности направления торговли.
- Оптимизация механизма остановки: можно проектировать динамические условия остановки на основе волатильности, повышая прибыльность.
- Оптимизация времени входа: можно добавить в качестве вспомогательных показателей ценовые модели или динамические показатели, чтобы повысить точность времени входа.
- Контроль вывода: увеличение динамического механизма контроля риска, основанного на чистой стоимости счета, снижение позиции или приостановка торговли при последовательных убытках.
Подвести итог
Это полная торговая система, объединяющая волатильность, отслеживание тенденций и управление рисками. Стратегия улавливает изменения тенденций через каналы волатильности и одновременно контролирует риски с помощью научных методов управления капиталом. Хотя она может плохо работать на волатильных рынках, она может стабильно работать в большинстве рыночных условий с помощью разумной оптимизации параметров и дополнительных механизмов фильтрации.
Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BNF FUT 5 min Volatility Strategy", overlay=true)
// Inputs
length = input.int(20, "Length", minval=2)
src = input.source(close, "Source")
factor = input.float(2.0, "Multiplier", minval=0.25, step=0.25)
initial_capital = input.float(100000, "Initial Capital ($)")
risk_per_trade = input.float(1.0, "Risk per Trade (%)", minval=0.1, maxval=10.0)
// Volatility Stop Function
volStop(src, atrlen, atrfactor) =>
if not na(src)
var max = src
var min = src
var uptrend = true
var float stop = na
atrM = nz(ta.atr(atrlen) * atrfactor, ta.tr)
max := math.max(max, src)
min := math.min(min, src)
stop := nz(uptrend ? math.max(stop, max - atrM) : math.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]
// Calculate Volatility Stop
[vStop, uptrend] = volStop(src, length, factor)
// Plot Volatility Stop
plot(vStop, "Volatility Stop", style=plot.style_cross, color=uptrend ? #009688 : #F44336)
// Risk Management and Position Sizing
atr = ta.atr(length)
stop_distance = math.abs(close - vStop) // Distance to stop level
position_size = (initial_capital * (risk_per_trade / 100)) / stop_distance // Position size based on risk per trade
position_size := math.max(position_size, 1) // Ensure minimum size of 1
// Strategy Logic
if not na(vStop)
if uptrend and not uptrend[1] // Transition to uptrend
strategy.close("Short")
strategy.entry("Long", strategy.long, qty=position_size)
if not uptrend and uptrend[1] // Transition to downtrend
strategy.close("Long")
strategy.entry("Short", strategy.short, qty=position_size)
// Exit on Stop Hit
if strategy.position_size > 0 and low < vStop // Exit long if stop hit
strategy.close("Long", comment="Stop Hit")
if strategy.position_size < 0 and high > vStop // Exit short if stop hit
strategy.close("Short", comment="Stop Hit")
if (hour == 15 and minute == 15)
strategy.close_all()