Стратегии скользящей средней

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

Типы скользящих средних

Простая скользящая средняя (SMA)

Простая скользящая средняя (SMA) — одна из наиболее прямолинейных форм скользящих средних. Она рассчитывается путем суммирования цен за определенный период и затем деления на этот период.

Формула: [ \text{SMA}_n = \frac{P_1 + P_2 +… + P_n}{n} ]

Где ( P ) представляет цену в заданный момент времени, а ( n ) — временной период.

Экспоненциальная скользящая средняя (EMA)

Экспоненциальная скользящая средняя (EMA) — это тип скользящей средней, которая придает больший вес последним ценам. Это делает ее более отзывчивой к новой информации по сравнению с SMA.

Формула: [ \text{EMA}t = P_t \cdot \alpha + \text{EMA}{t-1} \cdot (1 - \alpha) ]

Где ( \alpha ) — сглаживающий коэффициент, рассчитанный как: [ \alpha = \frac{2}{n+1} ]

Взвешенная скользящая средняя (WMA)

Взвешенная скользящая средняя (WMA) назначает разный вес каждой ценовой точке в пределах периода. Самая последняя цена получает наибольший вес, и веса уменьшаются линейно.

Формула: [ \text{WMA} = \frac{n \cdot P_1 + (n-1) \cdot P_2 +… + 1 \cdot P_n}{\sum_{i=1}^n i} ]

Конвергентно-дивергентная скользящая средняя (MACD)

Хотя MACD не является скользящей средней как таковой, она получена из разницы между 26-периодной EMA и 12-периодной EMA. Линия MACD затем контрастирует с 9-периодной EMA самой себя для генерирования сигналов покупки и продажи.

Формула: [ \text{MACD} = \text{EMA}{12} - \text{EMA}{26} ] [ \text{Сигнальная линия} = \text{EMA}_{9}(\text{MACD}) ]

Применение в торговых стратегиях

Стратегия кроссовера

Стратегия кроссовера использует две скользящие средние: краткосрочную и долгосрочную. Сигнал на покупку генерируется, когда краткосрочная средняя пересекает долгосрочную среднюю выше, и сигнал на продажу срабатывает, когда она пересекает ниже.

Лента скользящей средней

Эта стратегия использует несколько SMA или EMA для создания ленты скользящих средних. Стратегия ищет точки, где все скользящие средние начинают сходиться или расходиться, сигнализируя о потенциальных возможностях покупки или продажи.

Огибающие скользящей средней

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

Адаптивная скользящая средняя (AMA)

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

Программирование скользящих средних

Реализация на Python

Python — популярный язык для реализации стратегий алгоритмической торговли благодаря его надежным библиотекам типа pandas, NumPy и TA-Lib.

import pandas as pd
import numpy as np

def calculate_sma(data, period):
    return data.rolling(window=period).mean()

def calculate_ema(data, period):
    return data.ewm(span=period, adjust=False).mean()

def calculate_wma(data, period):
    weights = np.arange(1, period+1)
    return data.rolling(period).apply(lambda prices: np.dot(prices, weights)/weights.sum(), raw=True)

# Пример использования
data = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
sma = calculate_sma(data, 3)
ema = calculate_ema(data, 3)
wma = calculate_wma(data, 3)

Тестирование на исторических данных

Тестирование на исторических данных необходимо для оценки эффективности стратегий скользящей средней. Библиотеки типа Backtrader и Zipline предоставляют надежные платформы для тестирования на исторических данных:

import backtrader as bt

class MovingAverageStrategy(bt.SignalStrategy):
    def __init__(self):
        self.sma = bt.indicators.SimpleMovingAverage(self.data.close, period=15)
        self.ema = bt.indicators.ExponentialMovingAverage(self.data.close, period=30)
        self.cross = bt.indicators.CrossOver(self.sma, self.ema)

    def next(self):
        if self.cross > 0:  # сигнал на покупку
            self.buy()
        elif self.cross < 0:  # сигнал на продажу
            self.sell()

# Загрузка данных и запуск тестирования на исторических данных
data = bt.feeds.YahooFinanceData(dataname='AAPL', fromdate=dt.datetime(2018, 1, 1),
                                  todate=dt.datetime(2020, 12, 31))
cerebro = bt.Cerebro()
cerebro.adddata(data)
cerebro.addstrategy(MovingAverageStrategy)
cerebro.run()
cerebro.plot()

Применение в отрасли

StockSharp

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

Терминал Bloomberg

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

AlgoTrader

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

TradingView

TradingView — онлайн-платформа, которая предоставляет инструменты построения графиков и индикаторы скользящей средней для трейдеров. Она поддерживает написание сценариев на Pine Script для разработки пользовательских стратегий и тестирования на исторических данных.

Заключение

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