ak
|
Дата: 02.02.2012
|
|
|
|
Столкнулся с такой же проблемой дважды причем подряд (QuikTrader, 4.0.17). Код
var takeProfit = new TakeProfitStrategy(trade, this.TakeProfitUnit) { UseQuoting = true };
var stopLoss = new StopLossStrategy(trade, StopLossUnit) { UseQuoting = true };
ChildStrategies.Add(new TakeProfitStopLossStrategy(takeProfit, stopLoss));
Один раз для TP стратегии, второй раз для SL - симптомы те же, исполняются 2 одинаковые по цене заявки с минимальной разницей во времени. Лог одного из случаев (SL): Цитата: SLS | 31.01.2012 13:13:11 || Защита активирована. SLS | 31.01.2012 13:13:11 || Регистрация защитного котирования. MQS | 31.01.2012 13:13:11 || Стратегия запущена. MQS | 31.01.2012 13:13:11 || Котирование на Sell объема 1. MQS | 31.01.2012 13:13:11 || Цена текущей NULL и лучшей 9080. MQS | 31.01.2012 13:13:11 || Лучший бид 9078 и лучший аск 9080. MQS | 31.01.2012 13:13:11 || Регистрация новой заявки на Sell с ценой 9080 и объемом 1. MQS | 31.01.2012 13:13:11 || Заявка 38516284 на Sell отправлена с ценой 9080 объемом 1. SLS | 31.01.2012 13:13:11 || Цена текущей NULL и лучшей 9080. SLS | 31.01.2012 13:13:11 || Лучший бид 9078 и лучший аск 9080. SLS | 31.01.2012 13:13:11 || Регистрация новой заявки на Sell с ценой 9080 и объемом 1. SLS | 31.01.2012 13:13:11 || Заявка 38516285 на Sell отправлена с ценой 9080 объемом 1. MQS | 31.01.2012 13:13:11 || Заявка 38516284 принята биржей. SLS | 31.01.2012 13:13:11 || Заявка 38516285 принята биржей. EmaCore | 31.01.2012 13:13:12 || Новая позиция 0. Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -39 :(, Slippage: 1, Position: 0, Latency: 00:00:00.5404569 Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -39 :(, Slippage: 1, Position: 0, Latency: 00:00:01.0506864 TPSLS | 31.01.2012 13:13:12 || Новая позиция -1. SLS | 31.01.2012 13:13:12 || Новая позиция -1. SLS | 31.01.2012 13:13:12 || Позиция изменилась на -1. Оставшийся объем 0. SLS | 31.01.2012 13:13:12 || Заканчиваем котирование. TPSLS | 31.01.2012 13:13:12 || Стратегия останавливается. Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -39 :(, Slippage: 1, Position: 0, Latency: 00:00:01.0506864 TPS | 31.01.2012 13:13:12 || Заканчиваем котирование с неисполненным объемом равный 1. TPS | 31.01.2012 13:13:12 || Стратегия останавливается. TPS | 31.01.2012 13:13:12 || Стратегия остановлена. SLS | 31.01.2012 13:13:12 || Отмена заявки 38516285. SLS | 31.01.2012 13:13:12 || Стратегия останавливается. MQS | 31.01.2012 13:13:12 || Заканчиваем котирование с неисполненным объемом равный 1. MQS | 31.01.2012 13:13:12 || Стратегия останавливается. MQS | 31.01.2012 13:13:12 || Стратегия остановлена. TPSLS | 31.01.2012 13:13:12 || Стратегия остановлена. EmaCore | 31.01.2012 13:13:12 || Новая позиция -1. Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -39 :(, Slippage: 1, Position: -1, Latency: 00:00:01.0506864 Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -39 :(, Slippage: 1, Position: -1, Latency: 00:00:01.5628213 EmaCore | 31.01.2012 13:13:12 || Новая Sell сделка 497392045 по цене 9080 на 1 заявки 38516284. Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -39 :(, Slippage: 1, Position: -1, Latency: 00:00:01.5628213 Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -37 :(, Slippage: 1, Position: -1, Latency: 00:00:01.5628213 Main App | 31.01.2012 13:13:12 || I've sold 1 futures contracts at 9080 EmaCore | 31.01.2012 13:13:12 || Новая Sell сделка 497392046 по цене 9080 на 1 заявки 38516285. Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -37 :(, Slippage: 1, Position: -1, Latency: 00:00:01.5628213 Main App | 31.01.2012 13:13:12 || Stat Changed. State: Started, PnL: -37 :(, Slippage: 1, Position: -1, Latency: 00:00:01.5628213 Main App | 31.01.2012 13:13:12 || I've sold 1 futures contracts at 9080
Кто может помочь советом, как починить?
|
|
Спасибо:
|
|
|
|
|
Serg
|
Дата: 02.02.2012
А можно посмотреть код MarketQuotingStrategy? если это квик то тут скорее всего проблема с тем что приходит раньше(заявка/сделка).
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 02.02.2012
ak Цитата: MQS | 31.01.2012 13:13:11 || Заявка 38516284 принята биржей. SLS | 31.01.2012 13:13:11 || Заявка 38516285 принята биржей. EmaCore | 31.01.2012 13:13:12 || Новая позиция 0.
Кто может помочь советом, как починить? А что чинить? Заявка зарегистрирована на бирже. Нужно сделать так, чтобы она не могла зарегистрироваться? По проблеме автора этого топика отписал в той ссылке, которую он привел изначально. Не понятно, зачем было кросс посты вводить.
|
|
Спасибо:
|
|
|
|
|
ak
|
Дата: 02.02.2012
|
|
|
|
OK. Михаил, поясните пожалуйста еще раз. Есть стратегия: Код
var stopLoss = new StopLossStrategy(trade, StopLossUnit) { UseQuoting = true };
Я предполагаю, что выставив фалг UseQuoting, при касании ценой StopLossUnit, стратегия SLS создаст стратегию MQS, которая, выставляя лимитные ордера, и двигая их по необходимости, добьется исполнения защитного ордера. Затем завершится сама MQS (поражденная SLS стратегией), а затем и родительская SLS. По факту исполняется 2а ордера с одинаковым объемом, причем: 1ый ордер создается MQS стратегией: Цитата: MQS | 31.01.2012 13:13:11 || Регистрация новой заявки на Sell с ценой 9080 и объемом 1. MQS | 31.01.2012 13:13:11 || Заявка 38516284 на Sell отправлена с ценой 9080 объемом 1.
2ой ордер создается SLS стратегией: Цитата: SLS | 31.01.2012 13:13:11 || Регистрация новой заявки на Sell с ценой 9080 и объемом 1. SLS | 31.01.2012 13:13:11 || Заявка 38516285 на Sell отправлена с ценой 9080 объемом 1.
Естественно, если выставить флаг UseQuoting в false, никакого дублирования не происходит. Так же как и обычные (не защитные) MQS стратегии отрабатывают нормально. Откуда берется второй ордер?
|
|
Спасибо:
|
|
|
|
|
vfreeman
|
Дата: 02.02.2012
ak Столкнулся с такой же проблемой дважды причем подряд (QuikTrader, 4.0.17). Код
var takeProfit = new TakeProfitStrategy(trade, this.TakeProfitUnit) { UseQuoting = true };
var stopLoss = new StopLossStrategy(trade, StopLossUnit) { UseQuoting = true };
ChildStrategies.Add(new TakeProfitStopLossStrategy(takeProfit, stopLoss));
Один раз для TP стратегии, второй раз для SL - симптомы те же, исполняются 2 одинаковые по цене заявки с минимальной разницей во времени. Лог одного из случаев (SL): Кто может помочь советом, как починить? мне помогло Security.Exchange.IsSupportAtomicReRegister = false
|
|
Спасибо:
|
|
|
|
|
ak
|
Дата: 02.02.2012
Благодарю за совет, обязательно попробую! Но вероятно у меня все же другая ошибка, потому что обычные MQS, созданные мной, вроде этой: Код
MarketQuotingStrategy marketQuotingStrategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
base.ChildStrategies.Add(marketQuotingStrategy);
работают нормально, происходит переставление ордера (без ошибок, которые появлялись у вас) и исполнение приказа без дублирования ордеров. А вот внутри защитных стратегий - дублируются. Важное дополнение: при использовании RealTimeEmulationTrader<QuikTrader> вместо QuikTrader ошибка не реплицируется. На QuikTrader повторяется в 100% случаев у меня.
|
|
Спасибо:
|
|
|
|
|
ak
|
Дата: 08.02.2012
Проблема сохраняется, флаг Security.Exchange.IsSupportAtomicReRegister = false не помог.
|
|
Спасибо:
|
|
|
|
|
ET
|
Дата: 08.02.2012
_
|
|
Спасибо:
|
|
|
|
|
Moadip
|
Дата: 24.02.2012
MQS конкурирует со своими заявками. Хотя в этом посте написано что нет. IsSupportAtomicReRegister = false IsAsyncMode = false Это хорошо видно вечером или на неликвиде, когда стакан не двигается. Допустим мне надо скотировать один лот на продажу. Создается MQS, PriceOffset = Security.MinStepSize Например лучший бид 90, оффер 100, стакан не двигается. Так MQS будет постоянно снимать и переставлять заявку на 99,98,97. Т.е не держит ее на 99. Бывает что стратегия отрабатывает нормально, но в основном завершается с ошибкой Плюс вопрос в конце данного поста тоже никак не решился. Думал что что нибудь изменится в последней сборке 4.0.20 но ничего не изменилось.
|
|
Спасибо:
|
|
|
|
|
ET
|
Дата: 24.02.2012
_
|
|
Спасибо:
|
|
|
|