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

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

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

Стратегия "MoonHook" и её параметры

Данная стратегия входит в пакет MoonBonus и доступна только пользователям с PRO версией, которые регистрировали аккаунт на бирже по нашим реферальным ссылкам. Список реферальных ссылок для разных бирж можно посмотреть на странице MoonBonus.


Стратегия детектит быстрое падение цены, и выставляет Buy ордер, который в дальнейшем движется в своем коридоре цены, как в стратегии MoonShot, в ожидании повторного прострела.


И коридор, и начальное положение ордера линейно зависят от фактического детекта. Скорость падения определяется параметром HookTimeFrame (интервал времени для анализа). Стратегия разрабатывалась для ловли прострелов (HookTimeFrame = 2 сек), однако можно поиграть и с большими интервалами (до 40 сек.).


Замечания


  1. В силу внутренней механики стратегии MoonHook повторный детект возможен не ранее, чем через HookTimeFrame секунд, без этого внутреннего пенальти может получится спам детектами.

  2. Стратегия пересчитывает условия детекта один раз в половину секунды.

  3. BuyModifier, в отличие от других стратегий, влияет в этой стратегии на ширину и глубину коридора. Как это работает: на момент детекта фиксируются дельты. Далее, если дельты начинают расти, разница текущих дельт и зафиксированных на момент детекта, умноженных на свой коэффициент, влияет на нижнюю и верхнюю границу коридора.


Например:
BuyModifier=-3 (должен быть отрицательным!)
коэффициент Add3hDelta=0.053
hDelta на момент детекта = 10
после, 3hDelta начинает стремительный рост = 50
Разница = 40
Если на момент детекта, коридор движения цены был -2%,-3%, то на момент, когда дельта была = 50 (разница=40), то коридор будет равен:
- Верхняя Граница = -2 + (40*0.05 * (-3)/2) = -5%
- Нижняя Граница = -3 + (40*0.05 * (-3)) = -9%
⚠️ Важно! Верхняя граница увеличивается, но ровно в 2 раза увеличивается меньше, чем нижняя! Этим достигается расширение коридора.


Общие параметры


  • BuyOrderReduce: поле для указания интервала в миллисекундах, на котором считать средний объем торгов. Стратегия выставит ордер размером не больше, чем средний объём. По умолчанию BuyOrderReduce = 100 (мс). Если значение равно 0, то не применяется.

    Объём считается так: суммируется объём всех сделок покупки + продажи (BV + SV) на интервале TimeInterval и делится на BuyOrderReduce.
    Например, если TimeInterval = 5 (сек.), то есть 5000 мс, BuyOrderReduce = 100 (мс), объём всех сделок за 5 сек. был 10 000$, то средний объем за 100 мс будет равен 10000 / 5000мс * 100мс = 200$. В этом случае стратегия выставит Buy ордер не более 200$.
    Иначе говоря, смотрим какой же был средний объем за 100 (мс) / 10мс / 5мс, это и есть наш максимальный ордер, который выставит стратегия.

    Работу функции уменьшения ордера можно увидеть в логе по такой записи:
    IOTA: [1] (40) Buy order reduced: 1000.00$ => 23$ (Vol: 23$)
    В этом логе OrderSize в стратегии стоял 1000$, но средний объем торгов за 100 мс составил всего 23$, поэтому стратегия выставила Buy ордер размером 23$;

  • MinReducedSize: поле для указания минимального значения размера Buy ордера в USDT, после применения параметра BuyOrderReduce, ниже которого Buy ордер не выставляется.
    Например, MinReducedSize = 50 (USDT), после применения параметра BuyOrderReduce посчитано, что можно выставить Buy ордер только на 23$, но это меньше 50$ и Buy ордер на 23$ выставлен не будет. Если значение равно 0, то не применяется;

  • HookTimeFrame: поле для указания интервала времени для анализа в полных секундах (от 1 до 40 сек.);

  • HookDetectDepth: поле для указания минимальной глубины детекта, в процентах;

  • HookDetectDepthMax: поле для указания минимальной глубины детекта, в процентах. Если значение равно 0, то не применяется;

  • HookAntiPump: галочка YES/NO.
    Если значение равно YES, то для расчёта глубины детекта берётся средняя цена перед детектом, что позволяет исключить прострелы сразу после быстрого роста;

  • HookPriceRollBack: поле для указания минимального процента отката цены, в процентах от общей глубины.
    Например, HookPriceRollBack = 33 (%) означает откат на треть от всего хода цены;

  • HookPriceRollBackMax: поле для указания максимального процента отката цены, в процентах от общей глубины. Если значение равно 0, то не применяется;

  • HookRollBackWait: поле для указания времени в миллисекундах, в течение которого цена держится выше HookPriceRollBack. Рекомендуемое значение 100 мс – это позволит отсечь ситуации с 1 случайным крестиком-трейдом, которым может появиться сразу после прострела в спреде цены. Можно ставить и больше, но все событие прострела, отката и ожидания отката должно уложиться в HookTimeFrame секунд;

  • HookDropMin: поле для указания минимального процента падения цены перед детектом, считается от зафиксированной глубины прострела за последние 2 минуты. Если значение равно 0, то не применяется;

  • HookDropMax: поле для указания максимального процента падения цены перед детектом, считается от зафиксированной глубины прострела за последние 2 минуты. Если значение равно 0, то не применяется;
    Например, произошёл прострел на 10%. При этом монета уже падала 2 минуты и перед прострелом уже упала на 20%. Тогда HookDrop = 20 / 10 * 100 = 200%, то есть предыдущее падение на 200% больше, чем сам прострел;

  • HookDirection: меню с выбором в какую сторону искать детекты:

    • Both – в обе стороны;

    • OnlyShort – прострел вверх; 

    • OnlyLong – прострел вниз.

  • HookOppositeOrder: галочка YES/NO.
    Если значение равно YES - терминал будет выставлять Buy ордер в обратную сторону от детекта.
    Например:

    • При HookDirection = OnlyShort (прострел вверх) и HookOppositeOrder = YES, будет выставлен Buy ордер в лонг;

    • При HookDirection = OnlyShort (прострел вверх) и HookOppositeOrder = NO, будет выставлен Buy ордер в шорт;

    • При HookDirection = OnlyLong (прострел вниз) и HookOppositeOrder = YES, будет выставлен Buy ордер в шорт;

    • При HookDirection = OnlyLong (прострел вниз) и HookOppositeOrder = NO, будет выставлен Buy ордер в лонг.

  • HookInterpolate: поле для указания числа 0, 1, 2, 3, 4:

    • Если значение равно 0, то стратегия выставит Buy ордер от верхней цены до прострела;

    • Если значение равно 1, то стратегия выставит Buy ордер от отката после прострела (от цены RollBack);

    • Если значение равно 2, то отдаётся приоритет параметру HookInitialPrice;

    • Если значение равно 3, то ордер и коридор считаются от текущей цены относительно глубины прострела;

    • Если значение равно 4, то считается относительно глубины отката.
      Если он противоречит коридору цены, то верхняя граница коридора двигается выше, на половину расстояния между вашим ордером и текущей ценой.
      Если это невозможно физически, то детект не срабатывает.
      В этой логике уменьшена нижняя граница.
      Аналогичная логика и на шорте и на лонге. 
      Если HookInterpolate установлен 0, то модификатор BuyModifier не применяется.    

  • HookInitialPrice: поле для указания относительного процента, на который выставлять Buy ордер от общей глубины падения цены.
    Например, цена упала на 10% со 110 до 100. Если HookInitialPrice = 25 (%), то Buy ордер будет выставлен на относительные 25% от абсолютного процента падения цены 10%, то есть на 2.5% выше нижней точки: 100 + 2.5% = 102.5. В этом параметре можно выставлять отрицательное значение, тогда Buy ордер будет выставляться ниже, чем нижняя точка падения;

  • HookPriceDistance: поле для указания ширина коридора цены в процентах от общей глубины детекта.
    Например, был детект на 5% падения. HookPriceDistance = 10 (%) будет означать, что Buy ордер может ходить в пределах:
    - верхняя граница 5-5/100*10=4,5%
    - нижняя граница 5+5/100*10=5,5% от текущей цены.
    И коридор будет ходить вверх или вниз при движении цены, а Buy ордер будет переставляться снова в коридор, если выпадет из него. Таким образом, получается следование за ценой, как в стратегии MoonShot. Если значение равно 0, то Buy ордер не имеет коридора и не следует за ценой, а просто стоит на своём первоначальном месте до его исполнения или отмены;

  • HookPartFilledDelay: поле для указания задержки времени в миллисекундах до отмены Buy ордера после частичного его заполнения. Если 0, то задержки нет, а частично заполненный ордер сразу отменяется (как в стратегии MoonShot);

  • HookSellLevel: поле для указания значения SellPrice в процентах от глубины детекта.
    Например, HookSellLevel = 75 (%) означает, что нужно выставить Sell ордер в верхней четверти прострела. SellPrice = 100% означает, что нужно выставить Sell ордер в верхней точке, из которой начался прострел;

  • HookSellFixed: галочка YES/NO. Если YES, то считать Sell всегда как (HookSellLevel * глубина) процентов, вне зависимости от цены покупки;

  • HookReplaceDelay: поле для указания времени задержки в дробных секундах перед перестановкой вниз (для лонга) или вверх (для шорта) Buy ордера после падения цены (для лонга) или роста цены (для шорта) и выхода Buy ордера из «коридора Мунхука», тогда он снова в него переставится (отдалится от текущей цены), но только после этой задержки;

  • HookRaiseWait: поле для указания времени задержки в дробных секундах перед перестановкой вверх (для лонга) или вниз (для шорта) Buy ордера после роста цены (лонга) или падения цены (для шорта), то есть после выхода Buy ордера из «коридора Мунхука», тогда он снова в него переставится (приблизится к текущей цене), но только после этой задержки;

  • HookRepeatAfterSell: галочка YES/NO.
    Если значение равно YES, то выставлять повторный Buy ордер после исполнения Sell ордера;

  • HookRepeatIfProfit: поле для указания процента текущей цены от цены покупки, выше которой возможно выставление повторного Buy ордера. Если была изначально выставлена сетка Buy ордеров, то повторно будет выставлен только один повторный Buy ордер, а не такая же сетка Buy ордеров;

  • FastShotAlgo: галочка YES/NO.
    Если значение равно YES, то активируется более быстрый алгоритм работы Buy ордеров в стратегии MoonHook, для этого рекомендуется установить эту галочку, а замедлением перестановок управлять через параметр MoonReplaceDelay. Параметр FastShotAlgo работает на всех биржах, однако фактическое ускорение зависит от конкретной биржи. Активация этого параметра приводит к небольшому росту загрузки ЦПУ (примерно на 10%).

    Особенности работы алгоритма при FastShotAlgo = YES:

    • при HookRaiseWait = 0 используется алгоритм 1; 

    • иначе алгоритм 2.

      Можно использовать, к примеру HookRaiseWait = 0.01, на торги не повлияет, но при этом включит использование алгоритма 2.   

      Алгоритм 1: в этом случае цена для Buy ордера стратегии MoonHook считается за несколько последних трейдов.

      Алгоритм 2: в этом случае цена для Buy ордера стратегии MoonHook считается по минимальному трейду за 100мс. Побочный эффект - такой алгоритм приведёт к "встроенному raisewait в 100мс", то есть возвращается не раньше чем через 100мс, так как вместо текущей цены для расчёта используем минимальную цену за 100мс. Поэтому "цена" теперь в течение 100мс остаётся равной минимальной, но удаляться от цены такой Buy ордер должен ещё быстрее.