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

Категории технических индикаторов

Технические индикаторы можно разделить на четыре категории:

Индикаторы тренда

Эти индикаторы используются для определения направления тренда и того, является ли он бычьим (восходящим) или медвежьим (нисходящим). Простая скользящая средняя (SMA) — популярный пример индикатора тренда.

Индикаторы импульса

Эти индикаторы измеряют скорость или скорость движения цены. Они используются для определения условий перекупленности и перепроданности, а также потенциальных разворотов тренда. Схождение-расхождение скользящих средних (MACD) – это пример индикаторов импульса.

Индикаторы волатильности

Эти индикаторы измеряют волатильность рынка или степень колебаний цен. Полосы Боллинджера (BB) – это пример индикатора волатильности.

Индикаторы объема

Эти индикаторы измеряют объем торговой активности на рынке. Они используются для подтверждения ценового действия и выявления потенциальных разворотов тренда. Денежный поток Чайкина (CMF) является примером индикатора объема.

Эти категории не являются взаимоисключающими, и многие показатели могут относиться более чем к одной категории. Например, MACD является одновременно индикатором импульса и индикатором тренда.

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

Расчет технических индикаторов с помощью Python

Мы будем использовать комбинацию четырех технических индикаторов, упомянутых выше (SMA, MACD, BB и CMF), чтобы построить набор данных для машинного обучения.

Прежде всего, как описано в Получение данных, первый шаг к использованию машинного обучения для торговли акциями (drl4t-01), давайте в качестве примера загрузим некоторые исторические торговые данные Apple:

import yfinance as yf

stock = yf.Ticker('AAPL')
hist = stock.history(period='2y', interval='1d', actions=False)

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

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

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

Используя торговые данные, которые мы получили ранее с помощью yfinance, можно легко рассчитать 10-дневную и 20-дневную SMA следующим образом:

hist['SMA10'] = hist['Close'].rolling(window=10).mean()
hist['SMA20'] = hist['Close'].rolling(window=20).mean()

Схождение-расхождение скользящих средних (MACD)

Схождение-расхождение скользящих средних (MACD) показывает взаимосвязь между двумя экспоненциальными скользящими средними (EMA) цены акции. MACD рассчитывается путем вычитания 26-дневной EMA из 12-дневной EMA.

Помимо линии MACD (разница между двумя EMA), индикатор MACD также включает в себя сигнальную линию и гистограмму. Сигнальная линия представляет собой 9-дневную EMA линии MACD, а гистограмма представляет собой разницу между линией MACD и сигнальной линией.

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

Расчет MACD с помощью Python по-прежнему прост:

ema_short = hist['Close'].ewm(span=12, adjust=False).mean()
ema_long = hist['Close'].ewm(span=26, adjust=False).mean()
hist['MACD_DIF'] = ema_short - ema_long
hist['MACD_SIGNAL'] = hist['MACD_DIF'].ewm(span=9, adjust=False).mean()
hist['MACD'] = hist['MACD_DIF'] - hist['MACD_SIGNAL']

Полосы Боллинджера (BB)

Полосы Боллинджера основаны на скользящей средней цены акции и предназначены для отображения волатильности и потенциального торгового диапазона акции.

Полосы Боллинджера включают среднюю линию, которая представляет собой 20-дневную простую скользящую среднюю, которая представляет тренд цены акции, в то время как верхняя и нижняя полосы рассчитываются как двойные стандартные отклонения от средней линии.

Когда цена актива выходит за пределы полос, считается, что он перекуплен или перепродан.

Полосы Боллинджера можно рассчитать с помощью Python следующим образом:

sma = hist['Close'].rolling(window=20).mean()
std = hist['Close'].rolling(window=20).std()
hist['UB'] = sma + 2 * std
hist['LB'] = sma - 2 * std

Денежный поток Чайкина (CMF)

Денежный поток Чайкина (CMF) измеряет средневзвешенное значение накопления и распределения за определенный период времени. CMF используется для определения давления покупателей и продавцов акций.

CMF рассчитывается путем умножения объема каждого торгового периода на разницу между ценой закрытия и серединой торгового диапазона (среднее значение максимальной и минимальной цен). Затем это значение накапливается за 21 день и делится на общий объем за период, чтобы получить значение CMF.

Высокий CMF указывает на то, что запас накапливается, а низкий CMF указывает на то, что он распределяется.

CMF можно рассчитать с помощью Python следующим образом:

mfm = ((hist['Close'] - hist['Low']) - (hist['High'] - hist['Close'])) / (hist['High'] - hist['Low'])
mfv = mfm * hist['Volume']
hist['CMF'] = mfv.rolling(21).sum() / hist['Volume'].rolling(21).sum()

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

hist[['SMA10', 'SMA20', 'MACD_DIF', 'MACD_SIGNAL', 'MACD', 'UB', 'LB', 'CMF']]