Как устроены индикаторы. Часть 1: SMA

Индикаторы мне представлялись сложной, сложной высшей математикой. Сложные расчеты, 20-строчные формулы, плоды трудов гениев от математики, программирования и торговли. Что стоит взять чужой, отлаженный и проверенный код, чем корпеть вечерами, реализуя то, что давно написано и баги отловлены.

Так вот, друзья мои, это всё не так. Чужой код не настолько проверен и обезбажен, как этого бы хотелось, а идеи, на которых базируются индикаторы весьма просты (если разобраться). 

Я думаю, вам стоит знать, как считается то, на основе чего принимаются решения. Начать нужно со скользящей средней (MA, SMA, машка и т.п.)

SMA

В основе очень. очень многих индикаторов лежит простая скользящая средняя. Уже страшно от математических терминов и неохота вникать, правда?  :) Но дайте мне минуту.

Идея очень проста. У нас есть, допустим, 30 значений. Пускай это будет количество воды, которое вы каждый день выпиваете.

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

На тридцатый день взяли 1.5, прибавили 1 (вчера), разделили на 2, получилось 1.25.

На 29й день взяли за 29й и 28й (1 + 2.5 = 3.5), поделили на 2. получили 1.75, и т.п. 

Вот собственно, и всё, такая простая скользящая средняя. Давайте посмотрим, как это считается на биржах.

Пускай это будет график, и график будет BNBBTC по дням на бирже Binance. Вот такой:

Обратите внимание на желтую, красную и синюю (назовем цвета так) линии. Сверху подписана легенда:

MA 7 CLOSE, 

MA 25 CLOSE,

MA 99 CLOSE

Вы уже догадались что это? Это те самые скользящие средние, взятые по ценам закрытия каждого периода (каждого дня в нашем случае). Т.е. взяли close каждой свечи, посчитали скользящую с периодом 7, потом такую же с периодом 25, потом 99. Нарисовали график. Бешеная аналитика!

Сейчас мы будем воспроизводить это в Экселе, для этого скачаем свечи в нужном формате по этой ссылке: https://api.binance.com/api/v1/klines?symbol=BNBBTC&interval=1d&limit=200 (более подробно о работе с Binance через API можно узнать тут)

Мы получим свечи в таком формате: [[самая старая свеча], [чуть более ранная свеча], ....., [текущая свеча]]

Каждая свеча предоставлена в таком виде:

[
  [
    1499040000000,      // Время открытия
    "0.01634790",       // Цена открытия (Open)
    "0.80000000",       // Максимальная цена (High)
    "0.01575800",       // Минимальная цена (Low)
    "0.01577100",       // Цена закрытия (Close)
    "148976.11427815",  // Объем
    1499644799999,      // Время закрытия
    "2434.19055334",    // Объем квотируемой валюты
    308,                // Кол-во сделок
    "1756.87402397",    // Сколько альтов было куплено тейкерами
    "28.46694368",      // Сколько основной валюты куплено тейкерами
    "17928899.62484339" // Ignore
  ]
]

Вообще вы можете все привести руками к нужному виду для экселя (нужны 4 колонки - Open, High, Low, Close, это стандарт - OHLC график), но можно взять скрипт и набросать по быстрому:

import requests

klines = requests.get("https://api.binance.com/api/v1/klines?symbol=BNBBTC&interval=1d&limit=200").json()

for kline in klines:
    print(
        kline[1].replace('.', ','),
        kline[2].replace('.', ','),
        kline[3].replace('.', ','),
        kline[4].replace('.', ','),
    )

Скрипт выведет нужные 4 колонки, мы их вставим в эксель, там данные по столбцам, разобьем по пробелам.. Получится вот так:

Далее вставка, диаграммы, все диаграммы, биржевая.. И получаем вот такой график:

Вообще я собирался прямо на этот график добавлять линии, но эксель такого не умеет. придется рисовать отдельно

Построим по тем же самым принципам, что и описано выше, скользящие за 7 дней, за 25 дней и за 99 дней, в качестве данных возьмем цены закрытия.

Я поставил примерно такие же цвета, как на изначальном графике, и вы можете видеть, что линии в общем то совпадают с исходной картинкой- самая короткая скользящая идет почти вровень с ohlc графиком (ohlc = open, high, low, close если кто еще не понял), чем длинее MA тем дальше она отстает.

Это вообще общее правило - чем длиннее МА тем дальше она от графика. Многие трейдеры используют 100-дневки, 200-дневки и т.п. Более того, берутся разные МА, ищутся пересечения, взаимоотношение и прочее, прочее, прочее. Использовать их или нет - ваш выбор.

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


Реклама


Недостатки MA

У машек (MA) есть сильный недостаток, как и у любого усреднения - они не знают, какой параметр важнее.

Например, вы берете среднюю за 100 дней. 50 первых из них биткойн рос как ненормальный, бил рекорды, твиттер распирало от "а я вам говорил..".. Вторую половину биткойн сокрушительно падал, и продолжает падение сейчас. Он опять бьет все рекорды, и в этих ваших интернетах все преуныли.. Кроме тех, кто строит МА за 100 дней - у них средняя за 100 дней - "нормально всё".  

Или наоборот, 95 дней все было глухо, а последние 5 все просто сказочно - но средняя за 100 дней все равно не айс.

Для того, что бы данные последних дней имели больший вес, и больше влияли на график, придумали EMA - но об этом в следующей статье.

 


Это статья из цикла "Теханализ + Разработка индикаторов"
Все статьи цикла:

Последнее изменение:

Не забудьте рассказать друзьям об этой статье.
Чтобы поддержать ресурс Bablofil достаточно просто поделиться с друзьями этой статьей в социальных сетях. Каждый репост - это самая высокая оценка качества материала. Спасибо, что читаете этот блог.



Комментарии
Пожалуйста, авторизуйтесь, что бы оставить свой комментарий
Крипто-кошельки для помощи и благодарности проекту:

Bitcoin адрес проекта: [[address]]

Перевод на сумму [[value]] BTC получен. Спасибо!.
[[error]]

Ethereum адрес проекта: [[address]]