Индикаторы мне представлялись сложной, сложной высшей математикой. Сложные расчеты, 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 - но об этом в следующей статье.