Не отрабатывает CloseAtMarket в тестере
Тестер, свечной график, целые минутки без тиков.
Открытая лонговая позиция пытается закрыться по рыночной цене и не может.
_tab.CloseAtMarket(openPositions[i], openPositions[i].OpenVolume);
Отметил на скриншоте линией уровень выставляемой на основе рыночного приказа заявки на продажу, ее же видно внизу в списке заявок. в итоге заявка тестером не "исполняется"
Такое возможно если робот спамит заявки на закрытие на каждой свече. И эта заявка отзывается перед тем как должна бы исполнится.
Добавьте проверку статуса позиции перед вызовом CloseAtMarket. И если в позиции уже есть ордера на закрытие - ничего не делайте
Да, спасибо, нашел логику снятия предыдущих заявок внутри функции :)
Робот действительно кидает CloseAtMarket на каждой свече, а внутри OSengine если подобная заявка выставлена на текущей свече и она не стоп - заявка игнорируется и исполняется тоолько на следующей свече, а к тому моменту заявка уже снята. Вот и возникает ситуация.
Проблема решилась добавлением дополнительной проверки перед вызовом CloseAtMarket .
Вопрос закрыт.
if (openPositions[i].State != PositionStateType.Closing)
{
...
_tab.CloseAtMarket(openPositions[i], openPositions[i].OpenVolume);
...
}
ООО «ВАН ТЕХНОЛОГИИ»т: +7 953 769 56 45
* Торговля на финансовых рынках связана с риском, который лежит на Вас.
* Ничто из написанного на сайте o-s-a.net не является рекомендацией.
* Если Вы этого не понимаете, не читайте этот сайт, ничего не покупайте.