Стратегия торговли волатильностью стремится захватить ценовые спады, вызванные повышенной волатильностью рынка. Стратегия использует индикатор среднего истинного диапазона (ATR) для измерения волатильности актива в течение определенного периода. Длинные и короткие сигналы генерируются, когда цена превышает или ниже двух уровней, определенных ATR.
Стратегия сначала рассчитывает ATR за выбранный период. Затем она использует ATR для расчета верхнего и нижнего уровней прорыва. Когда цена закрытия превышает верхний уровень, генерируется длинный сигнал. Когда цена закрытия превышает нижний уровень, генерируется короткий сигнал. Для дальнейшего подтверждения сигналов текущий бар должен закрыться для своей части тела.
Когда цена закрытия превышает верхний или нижний уровни, зона прорыва заполняется цветом, указывающим на направление прорыва.
Когда генерируется длинный сигнал и отсутствует текущая позиция, стратегия идет длинной. Когда генерируется короткий сигнал и отсутствует текущая позиция, стратегия идет короткой.
Ввод длины определяет период, в течение которого измеряется волатильность. Более высокое значение длины подразумевает сосредоточение внимания на более длинных ценовых движениях. Например, при установке длины на 20, каждая сделка охватывает около 100 бар, захватывая несколько колебаний.
Снижение значения длины позволяет ориентироваться на краткосрочные движения цен и потенциально увеличивать частоту торговли.
Стратегия использует принципы прорыва, чтобы поймать значительные движения, возникающие из-за волатильности рынка.
Использование твердой строки закрывается для подтверждения сигналов фильтрует ложные прорывы.
Ввод длины обеспечивает гибкость для оптимизации стратегии для конкретных рыночных условий.
Стоп-потери могут контролировать потери на отдельных сделках.
Сигналы прорыва могут генерировать ложные сигналы, которые приводят к переоценке.
Оптимизация параметров требует достаточного количества торговых данных. Плохие начальные параметры могут привести к низкой производительности.
Болинджерские диапазоны могут быть введены в течение периода ATR для расчета новых уровней прорыва.
Тенденции могут быть отслежены после прорывов вместо того, чтобы остановиться сразу.
На рынках с ограниченным диапазоном можно рассматривать различные параметры или вообще избегать сделок, чтобы предотвратить сбои.
Стратегия трейдинга по изменению волатильности использует повышенную волатильность рынка для входа в движения тренда, когда цены значительно прорываются. Индикатор ATR динамически устанавливает уровни прорыва, а твердые панели фильтруют ложные прорывы. Ввод длины обеспечивает гибкость для корректировки периода стратегии. Стратегия подходит для средне- и долгосрочного следования тренду, но риски прорыва должны управляться посредством оптимизации параметров.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m 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=5 strategy("Volatility Breakout Strategy [Angel Algo]", overlay = true) // Inputs length = input(title="Length", defval=20) // Calculate the average true range (ATR) atr = ta.atr(length) // Plot the ATR on the chart plot(atr, color=color.blue, linewidth=2, title="ATR") // Calculate the upper and lower breakouts upper_breakout = high + atr lower_breakout = low - atr // Plot the upper and lower breakouts on the chart ul = plot(upper_breakout[1], color = color.new(color.green, 100), linewidth=2, title="Upper Breakout Level") ll = plot(lower_breakout[1], color = color.new(color.red, 100), linewidth=2, title="Lower Breakout Level") // Create the signals long_entry = ta.crossover(close, upper_breakout[1]) and barstate.isconfirmed short_entry = ta.crossunder(close, lower_breakout[1]) and barstate.isconfirmed active_signal_color =ta.barssince(long_entry) < ta.barssince(short_entry) ? color.new(color.green,85) : color.new(color.red,85) // Plot the signals on the chart plotshape(long_entry and ta.barssince(long_entry[1]) > ta.barssince(short_entry[1]), location=location.belowbar, style=shape.triangleup, color=color.green, size=size.normal, text = "Bullish breakout", textcolor = color.green) plotshape(short_entry and ta.barssince(long_entry[1]) < ta.barssince(short_entry[1]), location=location.abovebar, style=shape.triangledown, color=color.red, size=size.normal,text = "Bearish breakout", textcolor = color.red) // Fill the space between the upper and lower levels with the color that indicates the latest signal direction fill(ul,ll, color=active_signal_color) long_condition = long_entry and strategy.position_size <= 0 and barstate.isconfirmed short_condition = short_entry and strategy.position_size >= 0 and barstate.isconfirmed if long_condition strategy.entry("Volatility Breakout Long", strategy.long) if short_condition strategy.entry("Volatility Breakout Short", strategy.short)