Специальные параметры стратегий
Стратегия "EMA" и её параметры
Для использования EMA фильтров с формулами для всех стратегий в терминале и EMA стратегии для выставления Buy ордеров с реальным депозитом необходимо активировать платный пакет расширений для Автоторговли, если он не активирован, то функции из этого пакета будут работать только в общем режиме Эмулятора, включённого через Меню → Режим эмуляции.
EMA-фильтр и стратегия EMA
В настройках стратегий для параметров CustomEMA (фильтр-условие для входа в позицию) и SellByCustomEMA (условие для выхода из позиции) можно записывать формулы, которые реализуют идею задания произвольных фильтров-условий, построенных на сравнении цен на графиках монет или объемов за разные интервалы времени.
В поле параметра CustomEMA или SellByCustomEMA в строчку пишется набор функций для сравнения в виде:
EMA(X,Y) > A AND MAX(X,Y) < B AND... любое количество формул, разделенное словами AND или OR (порядок применения - алгебраический: сначала между собой все AND, потом OR).
Пример: A AND B OR C AND D означает одно из двух: (A AND B) или (C AND D).
Типы формул
-
EMA(X,Y) > или < A: Сравнение цен за EMA X секунд, минут или часов назад и EMA Y секунд, минут или часов назад.
Допустимые значения: X=1s...300s или 2m...90m или 1h...41h, Y=1s...300s или 2m...90m или 1h...41h); -
MAX(X,Y) > или < A: Сравнение максимальной цены за X минут или часов назад и EMA Y секунд, минут или часов назад.
Допустимые значения: X=5m...90m или 1h...41h, Y=1s...300s или 2m...90m или 1h...41h.
Пояснения к расчету максимумов смотрите ниже "Методика расчета"; -
MIN(X,Y) > или < A: Сравнение минимальной цены за X минут или часов назад и EMA Y секунд, минут или часов назад.
Допустимые значения: X=5m...90m или 1h...41h, Y=1s...300s или 2m...90m или 1h...41h.
Пояснения к расчету минимумов смотрите ниже "Методика расчета"; -
BTC(X,Y) > или < A: Сравнение цен BTC/USDT за EMA X секунд, минут или часов назад и EMA Y секунд, минут или часов назад.
Допустимые значения: X=1s...300s или 2m...90m или 1h...41h, Y=1s...300s или 2m...90m или 1h...41h). -
MAvg(X,Y) > или < A: Сравнение средних цен всего рынка (маркета) за EMA X секунд, минут или часов назад и EMA Y секунд, минут или часов назад.
Допустимые значения: X=1s...300s или 2m...90m или 1h...41h, Y=1s...300s или 2m...90m или 1h...41h).
На расчет средней цены рынка (маркета) влияют 2 настройки: -
На вкладке Настройки → Основные, Черный список и Исключить из дельт, если галочки стоят, то в средней цене рынка исключены маркеты Черного списка;
-
На вкладке Настройки → Специальные → Настройка движка, Weighted mAvg, если галочка стоит, то цена маркета в среднем берется с весом, равным суточному объему.
Иначе говоря, чем меньше суточный объем на монете, тем меньше она влияет на среднее.
Расчет можно сравнить с капитализацией: это сумма (цена * объем). -
Avg(X,Y) > или < A: запись по аналогии с EMA(X, Y). Сравнивается цена X секунд или минут назад и Y секунд или минут назад.
Допустимые значения: X=1s...300s или 2m...90m или 1h...41h, Y=1s...300s или 2m...90m или 1h...41h).
Если Y=1, то берётся текущая цена. Линию средней цены можно увидеть на графике, включив галку AvgPrice; -
Vol(X,Y) > или < A: формула сравнения объёмов. X и Y могут быть: 5s, 15s, 30s, 1m, 3m, 5m, 15m, 30m, 1h, 3h, 24h.
Расчёт выполняется по формуле: (средний минутный объем за время Y) делить на (средний минутный объём за время X).
Пример: Объём за час 120000 USDT (средний минутный объем за час будет 2000 USDT).
Объём за посл. минуту: 4000 USDT.
Тогда Vol(1h,1m) = 4000/2000 = 2, то есть объём в эту минуту в 2 раза больше минутного среднего за последний час.
Частный случай: Vol(0,Y) дает просто средний минутный объём за время Y, без сравнения.
Каждая формула (X, Y) > или < A означает:
1) X,Y - время: число, после которого есть буква s или m или h (секунды, минуты, часы соответственно) или нет буквы (тогда число считается секундами).
2) Знак больше или меньше.
3) A - с чем сравнивать (в процентах).
Принцип расчёта: средняя цена Y секунд назад сравнивается со средней ценой X секунд назад:
Цена(Y) / Цена(X) > 1 + A / 100
Иначе говоря, Цена(Y) больше чем Цена(X) на A процентов (или меньше, если в формуле знак <)
Методика расчёта и ограничения
Поскольку все возможные комбинации хранить в памяти невозможно, то терминал MoonBot считает цены по следующему принципу:
-
Набор секундных средних от текущей цены (1 сек.) до 300 сек. назад. Считаются по средним ценам за каждую секунду как классические EMA: Pслед[N] = (Pпред[N] * N + Pтекущ) / (N + 1), где N это время в секундах;
-
Минутные средние от 2 минут назад до 90 минут назад. Считаются как просто средняя цена за минуту;
-
Часовые средние от 1 часа назад до примерно 41 часов назад (ограничение биржи на свечи по которым считаются часовые средние). Считаются как средние цены за час по 5м свечам. Исходя из этого, параметры X,Y в формуле EMA могут быть: 1s..300s или 2m..90m или 1h..41h (конкретные диапазоны параметров X и Y смотрите выше рядом со своим параметром MIN MAX EMA);
-
Если Y ставить 1s, то будет сравнение с текущей ценой, при указании секунд s можно не ставить;
-
Пересчёт часовых MAX/MIN производится раз в 5 минут, по мере появления новой 5м свечи. Чтобы записи MAX(1h)/MIN(1h) и MAX(60m)/MIN(60m) не дублировали друг друга, часовые идут сразу от 1 часа назад. К примеру, для MAX(1h,1) максимальное значение берётся по 5м свечам от 60 по 120 минуту назад;
-
Пересчёт минутных MAX/MIN идёт через каждый тик (1 тик = 2 сек), то есть с задержкой от 2 до 4 сек. При этом последние 60 секунд не включены в расчёт уровней минутных MAX/MIN.
Таким образом, резкий рост на последней минуте (для минутных интервалов) и за последние 60 минут (для часовых интервалов) не учитывается в определении уровней MAX/MIN, а следовательно в моменте значение MAX может быть больше нуля, а MIN меньше нуля. Так сделано, чтобы можно было формулой задать перехай/перелоу, то есть записать условие, что текущая цена стала больше максимума либо меньше минимума за последние N минут/часов.
Вывести расчётные точки MAX/MIN, EMA и MAvg, соединённые для наглядности синими линиями на график, можно в меню кнопки Показывать графики\стаканы спотовых торгов (кнопка находится левее от кнопки Воронка), см. рис. выше.
⚠️ Обратите внимание! Это не индикатор, а всего лишь наглядное представление о том, как по точкам считаются значения для EMA фильтра. По причинам, изложенным выше, синяя линия средней цены может иметь разрывы - это места, где 300s заканчивается, где начинается 2m и заканчивается 90m.
Фильтр CustomEMA срабатывает, когда выполняются все условия в формулах. Таким образом, можно задать самые разные условия входа, например условие «падение цены за длинный период с последующим ростом за короткий» и т.п.
Примеры выражений в поле CustomEMA
Примеры того, что можно записывать в поле CustomEMA
-
EMA(15m,3s)< -1 AND EMA(5s,1s) > 0.1
EMA(15m,3s)<-1 = означает, что было падение, то есть средняя цена EMA 3 сек. назад на -1% меньше средней цены EMA 15 минут назад.
EMA(5s,1s)>0.1 = означает, что был рост, то есть цена текущая EMA 1s больше на 0.1%, чем средняя цена EMA 5 сек. назад.
Вместе эти условия означают, что детект произойдёт после падения, за которым следует рост. -
Формула MAX(1h,1s)>0.1 означает перехай цены, то есть текущая средняя цена EMA 1s стала больше, чем +0.1% от часового максимума MAX 1h;
-
Формула MAX(1h,1s)<-5 = означает падение текущей средней цены EMA 1s ниже на 5% от её часового максимума MAX 1h;
-
Формула MAX(1h,1s)<-5 AND MIN(1h,1s)<0.1 AND MIN(1h,1s)>-0.1 = означает падение текущей средней цены EMA 1s ниже на 5% от часового максимума MAX 1h, при этом текущая средняя цена EMA 1s находится у часового минимума цены в пределах MIN 1h от -0.1 до +0.1%.
Для простоты тестирования этих формул добавлена стратегия EMA, в которой нет своих специальных параметров, так как она построена исключительно на детекте по условию фильтра CustomEMA. То есть, детект происходит в момент, когда выполняются условия фильтров, поэтому используйте её осторожно!
Возможны неограниченные покупки, поэтому на вкладке Filters настройки стратегии выставляйте задержку в параметре NextDetectPenalty.
Замечания:
1. Важно использовать фильтры по Latency в стратегии, поскольку значения цен EMA зависят от цен трейдов; если цены поступают с задержкой, то расчёт EMA будет неточен.
2. Линии EMA сохраняются в отчёте на момент детекта стратегий, а для стратегии MoonShot - на момент срабатывания Buy ордера, если в стратегии был включён EMA фильтр.