Количественная стратегия торговли на основе скользящих средних и полос Боллинджера

Автор:Чао Чжан, Дата: 2024-04-26 11:45:05
Тэги:SMAWMAЕМА

img

Обзор

Эта стратегия в основном использует скользящие средние и полосы Боллинджера для улавливания рыночных тенденций и волатильности. Она использует три различных типа скользящих средних: простую скользящую среднюю (SMA), взвешенную скользящую среднюю (WMA) и экспоненциальную скользящую среднюю (EMA). В то же время она использует полосы Боллинджера для установки ценовых каналов, с верхними и нижними полосами, служащими сигналами для открытия и закрытия позиций. Когда цена проходит через верхнюю полосу Боллинджера, она открывает короткую позицию; когда она проходит через нижнюю полосу, она открывает длинную позицию. Она также устанавливает более широкие полосы Боллинджера как уровни стоп-лосса, закрывая позиции, когда цена нарушает эти полосы. В целом эта стратегия пытается оперативно устанавливать позиции при появлении тенденций и решительно сокращать риски при эскалации потерь

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

  1. Вычислить три скользящих средних с различными периодами: медленная SMA, быстрая EMA и средняя WMA, отражающие долгосрочные, краткосрочные и среднесрочные рыночные тенденции соответственно.
  2. Вычислить два набора полос Боллинджера, основанных на стандартном отклонении цены: полосы Боллинджера входа (с более узким расстоянием между верхними и нижними полосами) и полосы Боллинджера стоп-лосса (с более широким расстоянием).
  3. Когда быстрая EMA пересекает верхнюю полосу Боллинджера, открыть короткую позицию; когда быстрая EMA пересекает нижнюю полосу Боллинджера, открыть длинную позицию.
  4. После того, как позиция открыта, если цена дальше пересекает верхнюю полосу стоп-лосса Боллинджера, закрыть все длинные позиции; если цена дальше пересекает нижнюю полосу стоп-лосса Боллинджера, закрыть все короткие позиции.
  5. Вышеуказанный процесс повторяется непрерывно, что позволяет стратегии гибко корректировать позиции в соответствии с тенденциями рынка и своевременно остановить потери, чтобы достичь надежной доходности.

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

  1. В нем рассматриваются три скользящие средние различной скорости, всесторонне отражающие рыночные тенденции на различных уровнях.
  2. Он вводит полосы Боллинджера в качестве условий открытия и закрытия позиций, которые могут быть динамически скорректированы в соответствии с волатильностью рынка, гибко адаптируясь к рыночным условиям.
  3. Он устанавливает стоп-лосс Боллингерские полосы для контроля за снижением и решительно закрывает позиции, когда рынок резко колеблется, избегая увеличения потерь.
  4. Логика ясна, правила просты, их легко реализовать и оптимизировать.
  5. Он имеет широкий спектр применений и может быть эффективен для различных рынков и периодов времени.

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

  1. На боковом рынке частое открытие и закрытие позиций может привести к значительным транзакционным затратам, снижающим прибыль.
  2. На начальной стадии перелома тренда стратегия может по-прежнему торговать в направлении первоначальной тенденции, что приводит к определенным потерям.
  3. При экстремальных рыночных условиях, таких как быстрые ценовые разрывы, полосы Боллинджера для остановки потерь могут не эффективно контролировать риски.
  4. Неправильный выбор параметров (например, периоды скользящей средней, ширины полос Боллинджера и т.д.) может привести к недействительности стратегии.
  5. Если рынок продолжает колебаться, стратегия может не быть в состоянии зафиксировать значительные трендовые возможности в течение длительного периода.

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

  1. Соответственно увеличить параметры скользящих средних периодов и ширины полос Боллинджера для снижения частоты торговли и затрат на боковом рынке.
  2. Внедрить больше технических индикаторов или индикаторов настроения рынка в качестве фильтров для улучшения точности сигналов входа и избежать потерь сделок, которые могут произойти в начале тренда.
  3. Установление специальных правил для экстремальных рыночных условий, таких как приостановление новых позиций при возникновении пробелов, для контроля рисков.
  4. Оптимизировать параметры для поиска наиболее подходящей комбинации для текущего рынка, повышая надежность стратегии.
  5. Добавить правила управления позициями и управления капиталом, такие как корректировка позиций на основе силы тренда или рентабельности, установление общих линий стоп-лосса и т. д., чтобы еще больше контролировать риски стратегии.

Резюме

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


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy ("Marina Parfenova School Project Bot", overlay = true)

sma(price, n) =>
    result = 0.0
    for i = 0 to n - 1
        result := result + price [i] / n    
    result

wma(price, n) =>
    result = 0.0
    sum_weight = 0.0
    weight = 0.0
    for i = 0 to n - 1
        weight := n - 1
        result := result + price [i]*weight
        sum_weight := sum_weight + weight
    result/sum_weight

ema(price, n) =>
    result = 0.0
    alpha = 2/(n + 1)
    prevResult = price 
    if (na(result[1]) == false)
        prevResult := result[1]
    result := alpha * price + (1 - alpha) * prevResult

/// Настройки
n_slow = input.int(50, "Период медленной скользящей средней", step=5)
n_fast = input.int(4, "Период быстрой скользящей средней")
n_deviation = input.int(30, "Период среднеквадратического отклонения", step=5)
k_deviation_open = input.float(1.2, "Коэффициент ширины коридора покупки", step=0.1)
k_deviation_close = input.float(1.6, "Коэффициент ширины коридора продажи", step=0.1)

// ----- Линии индикаторов -----

// Медленная скользящая 
sma = sma(close, n_slow)
plot(sma, color=#d3d3d3)

// Линии Боллинджера, обозначающие коридор цены
bollinger_open = k_deviation_open * ta.stdev(close, n_deviation)
open_short_line = sma + bollinger_open
plot(open_short_line, color=#ec8383)
open_long_line = sma - bollinger_open
plot(open_long_line, color=#6dd86d)

bollinger_close = k_deviation_close * ta.stdev(close, n_deviation)
close_short_line = sma + bollinger_close
plot(close_short_line, color=#e3e3e3)
close_long_line = sma - bollinger_close
plot(close_long_line, color=#e3e3e3)

// Быстрая скользящая
ema = ema(close, n_fast)
plot(ema, color = color.aqua, linewidth = 2)

// ----- Сигналы для запуска стратегии -----

// если ema пересекает линию open_short сверху вниз - сигнал на создание ордера в short
if(ema[1] >= open_short_line[1] and ema < open_short_line)
    strategy.entry("short", strategy.short)

// если ema пересекает линию open_long снизу вверх - сигнал на создание ордера в long
if(ema[1] <= open_long_line[1] and ema > open_long_line)
    strategy.entry("long", strategy.long)

// если свеча пересекает верхнюю линию коридора продажи - закрываем все long-ордера 
if (high >= close_short_line)
    strategy.close("long")

// если свеча пересекает нижнюю линию коридора продажи - закрываем все short-ордера
if (low <= close_long_line)
    strategy.close("short")

Связанные

Больше