Стратегия торговли на основе прорыва исторического диапазона волатильности


Дата создания: 2023-09-21 20:38:29 Последнее изменение: 2023-09-21 20:38:29
Копировать: 1 Количество просмотров: 677
1
Подписаться
1617
Подписчики

Обзор

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

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

Центральным показателем стратегии является историческое колебание цены.

  1. Рассчитывается разница между максимальной и минимальной ценой на прошедшие N корня Bar, записывается как HL

  2. Вычислите среднее значение наивысшей и наименьшей цены в прошлом N корневой Бар (avg ((H, L))

  3. Колебания = HL / avg (H, L)

где N - параметр “Volatility Length” [2].

После получения колебаний, вычислим:

Поверхность = текущая закрытость + текущая закрытость * волатильность

Нижняя линия = текущая закрытость - текущая закрытость * волатильность

Верхняя и нижняя полосы затем сглаживаются по равной линии WMA, с параметром “Average Length” [2].

Когда цена выходит из строя, делайте больше; когда цена выходит из строя, делайте меньше.

Сигнал равновесия дается в соответствии с параметрами “Exit Type”:

  1. Если Exit Type является Volatility MA, цена возвращается к средней равновесной позиции WMA;

  2. Когда Exit Type стал Range Crossover, цены вернулись вверх и вниз.

Стратегические преимущества

  • Использование волатильности цен, подходящей для улавливания тенденциозных явлений
  • Однородная обработка WMA делает диапазон более стабильным и надежным
  • Прорывный вход в рынок позволяет легко понять переломные моменты
  • Возвращение к равновесию или своевременная остановка поезда вверх и вниз
  • Большое пространство для оптимизации параметров, которые можно адаптировать для разных рынков

Стратегический риск

  • Прорыв в диапазоне может привести к резкому падению
  • При переходе на новый тренд можно потерять больше
  • Средняя линия WMA иногда недостаточно чувствительна к переменам тренда
  • Нелегко оптимизировать параметры, требует много проб и ошибок
  • Риск вывода больше, требуется внимательное управление деньгами

Риски можно снизить следующими способами:

  • Оптимизация параметров для повышения стабильности и надежности интервала
  • Включите другие показатели, чтобы избежать резкого падения
  • Снижение размеров сделок, сосредоточение внимания на управлении капиталом
  • Рассматривается возможность включения в механизм реадмиссии

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

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

  1. Параметры оптимизации

Найдите оптимальное сочетание параметров, тестируя различные параметры Length.

  1. Добавить другие показатели

Например, если MACD вступает в строй, когда цена выходит из строя, то это означает, что MACD вступает в строй, когда цена выходит из строя.

  1. Оптимизация убытков

Оптимизируемый для эластичного отслеживания, а не просто для прорыва в промежутках.

  1. Добавление механизма повторного приема

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

  1. Оптимизация управления позициями

В зависимости от рыночных колебаний можно динамически корректировать позиции.

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

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

Исходный код стратегии
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 5m
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/
// © wbburgin

//@version=5
strategy("Volatility Range Breakout Strategy [wbburgin]", shorttitle = "VRB Strategy [wbburgin]", overlay=true,
 pyramiding=20,max_bars_back=2000,initial_capital=10000)

wma(float priceType,int length,float weight) =>
    norm = 0.0
    sum = 0.0
    for i = 0 to length - 1
        norm := norm + weight
        sum := sum + priceType[i] * weight
    sum / norm

// This definition of volatility uses the high-low range divided by the average of that range.
volatility(source,length) =>
    h = ta.highest(source,length)
    l = ta.lowest(source,length)
    vx = 2 * (h - l) / (h + l)
    vx

vm1 = input.int(100,"Average Length")
volLen = input.int(100,"Volatility Length")
vsrc = input.source(close,"Volatility Source")
cross_type = input.source(close,"Exit Source")
exit_type = input.string("Volatility MA",options=["Volatility MA","Range Crossover"],title="Exit Type")

volatility = volatility(vsrc,volLen)

highband1 = close + (close * volatility)
lowband1 = close - (close * volatility)
hb1 = wma(highband1,vm1,volatility)
lb1 = wma(lowband1,vm1,volatility)
hlavg = math.avg(hb1,lb1)

upcross = ta.crossover(high,hb1)    //Crossing over the high band of historical volatility signifies a bullish breakout
dncross = ta.crossunder(low,lb1)    //Crossing under the low band of historical volatility signifies a bearish breakout

vlong = upcross
vshort = dncross
vlong_exit = switch
    exit_type == "Volatility MA" => ta.crossunder(cross_type,hlavg)
    exit_type == "Range Crossover" => ta.crossunder(cross_type,hb1)
vshort_exit = switch
    exit_type == "Volatility MA" => ta.crossover(cross_type,hlavg)
    exit_type == "Range Crossover" => ta.crossover(cross_type,lb1)

if vlong
    strategy.entry("Long",strategy.long)
if vlong_exit
    strategy.close("Long")
if vshort
    strategy.entry("Short",strategy.short)
if vshort_exit
    strategy.close("Short")

plot(hlavg,color=color.white,title="Weighted Volatility Moving Average")
t = plot(hb1,color=color.new(color.red,50),title="Volatility Reversal Band - Top")
b = plot(lb1,color=color.new(color.green,50),title="Volatility Reversal Band - Bottom")

alertcondition(vlong,"Volatility Long Entry Signal")
alertcondition(vlong_exit,"Volatility Long Exit Signal")
alertcondition(vshort,"Volatility Short Entry Signal")
alertcondition(vshort_exit,"Volatility Short Exit Signal")

fill(t,b,color=color.new(color.aqua,90))