Специальные параметры стратегий
Скачать бесплатно

Специальные параметры стратегий

Быстрый поиск по статье

Стратегия "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. Набор секундных средних от текущей цены (1 сек.) до 300 сек. назад. Считаются по средним ценам за каждую секунду как классические EMA: Pслед[N] = (Pпред[N] * N + Pтекущ) / (N + 1), где N это время в секундах;

  2. Минутные средние от 2 минут назад до 90 минут назад. Считаются как просто средняя цена за минуту;

  3. Часовые средние от 1 часа назад до примерно 41 часов назад (ограничение биржи на свечи по которым считаются часовые средние). Считаются как средние цены за час по 5м свечам. Исходя из этого, параметры X,Y в формуле EMA могут быть: 1s..300s или 2m..90m или 1h..41h (конкретные диапазоны параметров X и Y смотрите выше рядом со своим параметром MIN MAX EMA);

  4. Если Y ставить 1s, то будет сравнение с текущей ценой, при указании секунд s можно не ставить;

  5. Пересчёт часовых MAX/MIN производится раз в 5 минут, по мере появления новой 5м свечи. Чтобы записи MAX(1h)/MIN(1h) и MAX(60m)/MIN(60m) не дублировали друг друга, часовые идут сразу от 1 часа назад. К примеру, для MAX(1h,1) максимальное значение берётся по 5м свечам от 60 по 120 минуту назад;

  6. Пересчёт минутных 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


  1. 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 сек. назад.
    Вместе эти условия означают, что детект произойдёт после падения, за которым следует рост.

  2. Формула MAX(1h,1s)>0.1 означает перехай цены, то есть текущая средняя цена EMA 1s стала больше, чем +0.1% от часового максимума MAX 1h;

  3. Формула MAX(1h,1s)<-5 = означает падение текущей средней цены EMA 1s ниже на 5% от её часового максимума MAX 1h;

  4. Формула 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 фильтр.