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

SMA WMA EMA
Дата создания: 2024-04-26 11:45:05 Последнее изменение: 2024-04-26 11:45:05
Копировать: 4 Количество просмотров: 596
1
Подписаться
1617
Подписчики

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

Обзор

В этой стратегии используются три различных типа движущихся средних: простое движущееся среднее (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")