Каким образом вы выставляете стопы на фортс, чтобы они гарантировано
исполнились?
По идее, их исполнение надо ставить по маркету - т.е. по ценам планки.
Но ситуация в следующем - загружаю роботов утром, добавляю в экспорт
всё что надо (ГО, цены планки, ...) для каждого зарегистрированного
quikTrader:
quikTrader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MarginBuy);
quikTrader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MarginSell);
quikTrader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MaxPrice);
quikTrader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MinPrice);
quikTrader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MinStepPrice);
Отлично, теперь при регистрации стоп заявки использую в стратегии
Security.MaxPrice для стопа для шорта и Security.MinPrice для стопа
для лонга.
Всё отлично работает до клиринга или до остановки торгов - когда цена
планки смещается. Т.е. старая выставленная заявка с ценой старой
планки, в случае срабатывания условия стопа, может уже не
удовлетворять новым лимитам, и просто будет отвергнута ТС.
Вот, к примеру, вчера у меня был выставлен стоп до дневного клиринга -
продать, если <= 138000, по цене 130510. После клиринга был уже новый
нижний лимит цены и стоп, после срабатывания, не был выставлен в ТС.
Выход, который я вижу - регистрировать событие SecuritiesChanged и, в
случае изменения лимитов, для каждой запущенной стратегии запускать
метод, который будет выполнять проверку всех выставленных стоп заявок.
Если это необходимо - снимать старые стоп-заявки и выставлять новые,
уже с новыми ценами лимитов.