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

SMA EMA SMMA WMA VWMA ATR
Дата создания: 2024-07-31 14:08:36 Последнее изменение: 2024-07-31 14:08:36
Копировать: 1 Количество просмотров: 583
1
Подписаться
1617
Подписчики

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

Обзор

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

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

  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")