Pages:
Actions
  • #1 by sora on 04 Jan 2016
  • Привет всем!

    Обращаюсь к более опытным пользователям МаркетФидера.
    Столкнулся с трудностью при написании триггера.
    Мой триггер выставляет ставки выше линии рынка на несколько тиков. Отменяет ставки, при определенных условиях, и выставляет заново.
    Когда ставки спариваются, я использую переменную bm_backp для уравнения спаренной(ых) ставки(ок).
    Как я вижу алгоритм этой переменной:
    1. При выставлении неспаренной ставки ей присваивается id;
    2. id присваиваются по порядку(1,2,3,4 и т.д.);
    3. При спаривании ставки этот же id остается и у ставки в паре;
    4. Переменная bm_backp возвращает коэффициент последней ставке в паре по крайнему id.
    Таким образом, если мой триггер выставил несколько ставок, например, ЗА по коэффициенту 2.02, 2.04, 2.06, но в различное время, и эти ставки одновременно принимаются, то переменная bm_backp вернет тот коэффициент у которого id крайний, хотя они спарились в одно и тоже время.
    Или я неправ и переменная bm_backp возвращает последний коэффициент по времени заключения.
    В любом случае вопрос. Как мне получить минимальный коэффициент из трёх ставок в паре(или даже больше), если они спарились в одно и тоже время, и id не обязательно у наименьшего коэффициента?
    Минимальный коэффициент мне необходим для того, чтобы уравнять ставки.

    Заранее спасибо!
  • #2 by Oxa (WellDoneSoft) on 04 Jan 2016
  • К сожалению, ставки сортируются по времени их размещения, а не по ID.

    Средний коэффициент размещенных вами парных ставок на определенный исход возвращается переменной bm_backavp. Возможно, он вам также подойдет.

    Если нет, есть вариант найти минимальное значение с помощью громоздкой, но рабочей конструкции вида:

    MINV(IF(bm_1_backp=0, 2000, bm_1_backp), IF(bm_2_backp=0, 2000, bm_2_backp), IF(bm_3_backp=0, 2000, bm_3_backp), IF(bm_4_backp=0, 2000, bm_4_backp))

    Здесь предполагается, что у вас может быть максимум четыре парные ставки ЗА на исходе. Если может быть больше, добавьте еще операндов типа IF(bm_5_backp=0, 2000, bm_5_backp) в формулу.
    Если у вас нет ни одной ставки, эта формула вернет 2000, что вам следует учесть в условиях триггера, например:

    У исхода выражение триггера MINV(IF(bm_1_backp=0, 2000, bm_1_backp), IF(bm_2_backp=0, 2000, bm_2_backp), IF(bm_3_backp=0, 2000, bm_3_backp), IF(bm_4_backp=0, 2000, bm_4_backp)) в пределах 1.01 и 1000
  • #3 by sora on 05 Jan 2016
  • Дело в том, что парных ставок может быть гораздо больше 4-х.
    А важность представляют только последние спаренные, но еще не уравненные. Уравнение происходит на основе коэффициента принятой ставки. Таким образом, bm_backavp не подходит, т.к. он вернет средний от всех парных ставок, а не только от последних.

    При спаривании, например, 3х ставок одновременно, значит время их размещения будет одинаковым? И тогда переменные bm_1_backtime, bm_2_backtime, bm_3_backtime должны вернуть одинаковое число?
  • #4 by Oxa (WellDoneSoft) on 05 Jan 2016
  • А можно поинтересоваться, зачем вам что-то расчитывать вручную, если действие "уравнять прибыль" само определит, какие ставки уже уравнены, а какие нет, и само вычислит нужный размер уравнивающей ставки?
  • #5 by sora on 06 Jan 2016
  • Хорошее замечание!

    Но в функции автоматическое уравнение отсутствует возможность отключить хеджирование. А также нет опции через некоторое время уравнять ставки по доступным коэффициентам, не дожидаясь пока линия рынка достигнет стоп-лосс.

    Таким образом, если функция автоматическое уравнение будет расширена, то не придется придумывать конструкции.
    И соответственно, если будет хеджирование вкл/выкл в уравнении ставок, то нужна и отдельная кнопка "прохеджировать рынок".
Pages:
Actions