Для открытия позиции использую BuyIfGreater.
Торговля в связке TSLab + QUIK.
Срочный рынок FORTS, инструмент RTS
Обнаружилось две проблемы.
BuyIfGreater (int barNum, double shares, double price, string signalName) - Открыть новую длинную позицию если цена станет выше цены в заявке.
Проблема первая.Цена входа в позицию рассчитывается как цена закрытия бара плюс некоторое значение ATR.
orderEntry = symbol.ClosePrices[i] + atr;
symbol.Positions.BuyIfGreater(i + 1, 1, orderEntry, "Открытие Лонг");
В результате, TSLab отправляет в QUIK стоп-заявку с orderEntry (Стоп-лимит, при котором заявка должна сработать) и некоторым ограничением максимальной цены (Цена).
Довольно часто, торговая система биржи отклоняет выставленные таким образом заявки с формулировкой «Цена вне лимита».
В частности, по отвергнутой заявке выставленной 23.12.2015 в 18:30:23 с Ценой 81390 и Стоп-лимитом 78390 был задан вопрос в тех.поддержку брокера, на что был получен ответ: «Выяснили причину отклонения заявки: в текущую сессию верхний лимит по инструменту составлял 81290, поэтому заявка с ценой 81390 не прошла.»
Получается, что TSLab исполняет оператор BuyIfGreater через QUIK некорректно. Выставление заявок может происходить с ценой за границей лимита.
Прошу подсказать решение этой проблемы. Проблема вторая.Когда происходит отклонение заявки торговой системой, то в QUIK, в таблице стоп-заявок, статус отклоненной заявки стоит «Исполнена», а в колонке примечание – «Отвергнута ТС».
RTS-3.16 Купля 4*****2W 81390 1 1790234122 Исполнена Стоп-лимит 78390 Отвергнута ТС SPBFUT
TSLab принимает такую отвергнутую заявку как исполненную, что приводит к нарушению в работе алгоритма. Алгоритм ведет позицию, которая на самом деле открыта не была, и когда приходит сигнал на выход – «закрывает» её. Но по факту происходит не закрытие не открытой лонговой позиции, а открытие позиции в шорт. В результате шорт болтается сам по себе и приводит к убыткам.
Прошу подсказать решение и этой проблемы тоже.