В процессе загрузки ресурсов... загрузка...

Стратегия торговли в диапазоне многоуровневой волатильности

Автор:Чао Чжан, Дата: 2024-07-31 14:08:36
Тэги:SMAЕМАСММАWMAVWMAATR

img

Обзор

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

Принципы стратегии

  1. Расчет скользящей средней: для расчета базовой линии стратегия использует выбираемые типы скользящих средних (SMA, EMA, SMMA, WMA, VWMA).

  2. Настройка диапазонов волатильности: многочисленные диапазоны волатильности устанавливаются на основе базовой линии с использованием стандартного отклонения, умноженного на фактор.

  3. Уровни Фибоначчи: уровни ретрасценции Фибоначчи (23,6%, 38,2%, 50%, 61,8%) используются для разделения диапазонов волатильности, создавая больше торговых возможностей.

  4. Динамическая корректировка: возможность использования динамических множителей на основе ATR (средний истинный диапазон) для автоматической корректировки ширины диапазонов волатильности.

  5. Логика входа: позиции устанавливаются, когда цена касается или пересекает диапазон волатильности в соответствующем направлении.

  6. Позиция масштабирование: если цена продолжает двигаться неблагоприятно, стратегия добавляет к позиции на дальнейших уровнях волатильности диапазона, воплощая концепцию стратегии Мартингейла.

  7. Логика выхода: прибыль получается, когда цена возвращается к базовой линии.

Преимущества стратегии

  1. Многоуровневый вход: путем установки нескольких диапазонов волатильности и уровней Фибоначчи стратегия предоставляет больше торговых возможностей, улавливая волатильность рынка на разных уровнях цен.

  2. Высокая гибкость: стратегия позволяет пользователям выбирать различные типы скользящих средних, периодов и параметров для адаптации к различным рыночным условиям и торговым инструментам.

  3. Динамическая адаптация: опциональная функция динамического мультипликатора позволяет стратегии автоматически корректироваться в соответствии с волатильностью рынка, повышая адаптивность.

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

  5. Концепция реверсии среднего значения: стратегия основана на идее о том, что цены в конечном итоге вернутся к среднему значению, который хорошо работает на многих рынках и временных рамках.

  6. Настраиваемость: Пользователи могут регулировать такие параметры, как размер акций и уровни Фибоначчи в соответствии с их предпочтениями риска и стилем торговли.

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

  1. Риск последовательных потерь: на рынках с сильным трендом цены могут непрерывно пересекать несколько диапазонов волатильности, что приводит к последовательному увеличению позиций и накоплению значительных потерь.

  2. Давление на управление капиталом: масштабирование позиций в стиле Мартингейла может привести к быстрому увеличению требований к капиталу, потенциально превышающим емкость счета.

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

  4. Чувствительность параметров: производительность стратегии сильно зависит от настроек параметров; ненадлежащие параметры могут привести к плохой производительности.

  5. Риск скольжения и ликвидности: на сильно волатильных рынках может наблюдаться значительный скольжение, особенно при масштабировании позиций.

  6. Риск привлечения средств: Хотя стратегия направлена на снижение средних затрат за счет масштабирования позиций, она все равно может столкнуться с значительным снижением средств в экстремальных рыночных условиях.

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

  1. Введение фильтров тренда: добавление долгосрочных индикаторов тренда для открытия позиций только в направлении тренда, избегая частых контра-тенденционных сделок в сильных тенденциях.

  2. Динамическое размещение позиций: корректировка количества акций, торгуемых на основе размера счета и волатильности рынка для лучшего контроля риска.

  3. Оптимизировать механизмы выхода: рассмотреть возможность введения остановок или динамических остановок потери на основе волатильности для лучшего закрепления прибыли и контроля рисков.

  4. Добавить временные фильтры: внедрить ограничения торгового окна времени, чтобы избежать периодов высокой волатильности или низкой ликвидности.

  5. Интегрировать индикаторы настроения рынка: включить индикаторы волатильности, такие как VIX, для корректировки параметров стратегии или приостановки торговли в периоды высокой волатильности.

  6. Внедрить машинное обучение: использовать алгоритмы машинного обучения для динамической оптимизации параметров, улучшая адаптивность стратегии к изменениям рынка.

  7. Добавление фундаментальных фильтров: включение фундаментальных данных, позволяющих торговать только при определенных фундаментальных условиях, улучшая качество торговли.

Заключение

Стратегия многоуровневой волатильности - это сложная торговая система, сочетающая в себе технический анализ, теорию вероятности и управление рисками.

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

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


/*backtest
start: 2024-06-30 00:00:00
end: 2024-07-30 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © abtov

//@version=5
strategy("Spider Strategy", overlay=true)

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

stdev = input.int(56, "STDEV", group="Stdev")
mult = input.float(2.3, "Multiplier", group="Stdev")
ma_len = input.int(230, "Basis Length", group="Stdev")
ma_type = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Stdev")
auto_mult = input.bool(true, "Dynamic Mult.", group="Stdev")
basis_exit = input.bool(false, "Basis Exit", group="Stdev")

col_int = input.int(12, "Collective Value", group="Collective")
col_input = input.bool(true, "Collective Input", group="Collective")


fib1 = input.float(0.236, "Fibonacci Level 1", group = "Fibonacci")
fib2 = input.float(0.382, "Fibonacci Level 2", group = "Fibonacci")
fib3 = input.float(0.5, "Fibonacci Level 3", group = "Fibonacci")
fib4 = input.float(0.618, "Fibonacci Level 4", group = "Fibonacci")

atr_len = input.int(30, "ATR", group="ATR")
atr_bias = input.float(0.72, "Bias", group="ATR")

shares = input.int(1, "Shares Amount", group="Strategy")

if(col_input == true)
    stdev := col_int
    ma_len := col_int
    atr_len := col_int

if(auto_mult == true)
    mult := ma(ta.tr(true), atr_len, ma_type) * atr_bias


basis = ma(close, ma_len, ma_type)
lower = basis - stdev * mult
upper = basis + stdev * mult

lower2 = basis - stdev * mult * fib1
upper2 = basis + stdev * mult * fib1

lower3 = basis - stdev * mult * fib2
upper3 = basis + stdev * mult * fib2

lower4 = basis - stdev * mult * fib3
upper4 = basis + stdev * mult * fib3

lower5 = basis - stdev * mult * fib4
upper5 = basis + stdev * mult * fib4


var lowerAct = false
var lower2Act = false
var lower3Act = false
var lower4Act = false
var lower5Act = false

var upperAct = false
var upper2Act = false
var upper3Act = false
var upper4Act = false
var upper5Act = false


plot(upper, "limit short", color.red)
plot(upper2, "limit 1 short", color.red)
plot(upper3, "limit 2 short", color.red)
plot(upper4, "limit 3 short", color.red)
plot(upper5, "limit 4 short", color.red)
plot(basis, "basis", color.white)
plot(lower, "limit long", color.green)
plot(lower2, "limit 1 long", color.green)
plot(lower3, "limit 2 long", color.green)
plot(lower4, "limit 3 long", color.green)
plot(lower5, "limit 4 long", color.green)


if(lowerAct == false)
    if(close < lower)
        strategy.entry("long", strategy.long, shares)
        lowerAct := true
else
    if(low > basis)
        lowerAct := false


if(lower2Act == false)
    if(close < lower2)
        strategy.entry("long", strategy.long, shares)
        lower2Act := true
else
    if(low > basis)
        lower2Act := false


if(lower3Act == false)
    if(close < lower3)
        strategy.entry("long", strategy.long, shares)
        lower3Act := true
else
    if(low > basis)
        lower3Act := false


if(lower4Act == false)
    if(close < lower4)
        strategy.entry("long", strategy.long, shares)
        lower4Act := true
else
    if(low > basis)
        lower4Act := false


if(lower5Act == false)
    if(close < lower5)
        strategy.entry("long", strategy.long, shares)
        lower5Act := true
else
    if(low > basis)
        lower5Act := false





if(upperAct == false)
    if(close > upper)
        strategy.entry("short", strategy.short, shares)
        upperAct := true
else
    if(high < basis)
        upperAct := false


if(upper2Act == false)
    if(close > upper2)
        strategy.entry("short", strategy.short, shares)
        upper2Act := true
else
    if(high < basis)
        upper2Act := false


if(upper3Act == false)
    if(close > upper3)
        strategy.entry("short", strategy.short, shares)
        upper3Act := true
else
    if(high < basis)
        upper3Act := false


if(upper4Act == false)
    if(close > upper4)
        strategy.entry("short", strategy.short, shares)
        upper4Act := true
else
    if(high < basis)
        upper4Act := false


if(upper5Act == false)
    if(close > upper5)
        strategy.entry("short", strategy.short, shares)
        upper5Act := true
else
    if(high < basis)
        upper5Act := false


if((ta.crossover(close, basis) and basis_exit == true))
    strategy.close("short")
    strategy.close("long")

Связанные

Больше