Не отрабатывает CloseAtMarket в тестере

Не отрабатывает CloseAtMarket в тестере

  1. RealZuy

    Регистрация:
    18.03.20
    Сообщения:
    8
    Был на сайте:
    15.04.21

    Тестер, свечной график, целые минутки без тиков.

    Открытая лонговая позиция пытается закрыться по рыночной цене и не может.

    _tab.CloseAtMarket(openPositions[i], openPositions[i].OpenVolume);

    Отметил на скриншоте линией уровень выставляемой на основе рыночного приказа заявки на продажу, ее же видно внизу в списке заявок. в итоге заявка тестером не "исполняется"

    Скачать 2020-04-08-22-02-34.png 74 Кб
    RealZuy
    08.04.2020 22:08
    #1
  2. Алексей Ван Команда форума

    Регистрация:
    02.02.13
    Сообщения:
    1172
    Был на сайте:
    19.04.24

    Такое возможно если робот спамит заявки на закрытие на каждой свече. И эта заявка отзывается перед тем как должна бы исполнится.

    Добавьте проверку статуса позиции перед вызовом CloseAtMarket. И если в позиции уже есть ордера на закрытие - ничего не делайте

    Алексей Ван
    09.04.2020 05:54
    #2
  3. RealZuy

    Регистрация:
    18.03.20
    Сообщения:
    8
    Был на сайте:
    15.04.21

    Да, спасибо, нашел логику снятия предыдущих заявок внутри функции :)

    Робот действительно кидает CloseAtMarket на каждой свече, а внутри OSengine если подобная заявка выставлена на текущей свече и она не стоп - заявка игнорируется и исполняется тоолько на следующей свече, а к тому моменту заявка уже снята. Вот и возникает ситуация.

    Проблема решилась добавлением дополнительной проверки перед вызовом  CloseAtMarket .

    Вопрос закрыт.

                    if (openPositions[i].State != PositionStateType.Closing)
                    {
                             ...
                            _tab.CloseAtMarket(openPositions[i], openPositions[i].OpenVolume);
                             ...
                    }
    RealZuy
    09.04.2020 14:24
    #3