Проблема с котированием


Проблема с котированием
Atom
9/2/2011


mdv

Avatar
Здравствуйте! Проблема такая. Стратегия котирования запускается, пишет в лог, что запустилась и на этом зависает, не выставляя никакие заявки.
Что характерно, этот же самый код отлично работает под QUIK JUNIOR котирование выполняется и завершается. Под нормальным квиком обычные заявки работают правильно, то есть настройки базовой стратегии правильные. Экспорт стакана запускаю (иначе бы под джуниором не работало). Может кто сталкивался? Я чувствую, что тут какая-то совсем глупая ошибка, но не могу понять даже, с какого боку копать ее. Может есть возможность посмотреть более подробные логи стратегии?...

Tags:


Thanks:


1 2 3  >
Mikhail Sukhov

Avatar
Date: 9/2/2011
Reply


Установить для каждого Strategy.Rules EnableLog = true.
Thanks:

mdv

Avatar
Date: 9/5/2011
Reply


Написал вот так (на всякий случай):
Code
OrderDirections od = volume > 0 ? OrderDirections.Buy : OrderDirections.Sell;

MarketQuotingStrategy quotingStrategy = new MarketQuotingStrategy(od, Math.Abs(volume))
{
    PriceType = MarketPriceTypes.Opposite,
    PriceOffset = 1000,
};

quotingStrategy.Rules.ForEach(r => r.EnableLog(true));
quotingStrategy.Log += (st, es, s) => printLine("Котирование: " + st + " || " + es + " || " + s);

this.Rules.ForEach(r => r.EnableLog(true));
this.Log += (st, es, s) => printLine("Стратегия: " + st + " || " + es + " || " + s);

this.ChildStrategies.Add(quotingStrategy);


Получил только это:
Code
Котирование: MQS || None || Стратегия запущена.
Стратегия: TLS || None || [MQS] Стратегия запущена.


Дальше ничего... [confused]
Thanks:

Mikhail Sukhov

Avatar
Date: 9/5/2011
Reply


В котировании правила создаются в OnStarting. Сделайте сначала добавление стратегии (только убедитесь, что и после этого правил > 0), а затем уже включение для правил логирование.
Thanks:

mdv

Avatar
Date: 9/5/2011
Reply


Code
                OrderDirections od = volume > 0 ? OrderDirections.Buy : OrderDirections.Sell;
                quotingStrategy = new MarketQuotingStrategy(od, Math.Abs(volume))
                {
                    PriceType = MarketPriceTypes.Opposite,
                    PriceOffset = 1000,
                };

                printLine("В стратегии правил " + this.Rules.Count);
                printLine("В котировании правил " + quotingStrategy.Rules.Count);

                quotingStrategy.Log += (st, es, s) => printLine("Котирование: " + st + " || " + es + " || " + s);
                this.Log += (st, es, s) => printLine("Стратегия: " + st + " || " + es + " || " + s);  

                this.ChildStrategies.Add(quotingStrategy);

                printLine("В стратегии правил " + this.Rules.Count);
                printLine("В котировании правил " + quotingStrategy.Rules.Count);

                quotingStrategy.Rules.ForEach(r => r.EnableLog(true));
                this.Rules.ForEach(r => r.EnableLog(true));

Вывод такой:
Code
В стратегии правил 1

В котировании правил 0

Котирование: MQS || None || Стратегия запущена.

Стратегия: TLS || None || [MQS] Стратегия запущена.

В стратегии правил 2

В котировании правил 3

Однако, насколько я понимаю, какое-то сообщение (всмысле ошибка) могло появиться в потоке дочерней стратегии раньше, чем я включил для правил логирование из потока родительской стратегии. Нет ли способа включить логирование после создания правил, но до запуска стратегии?
Thanks:

Mikhail Sukhov

Avatar
Date: 9/5/2011
Reply


mdv Go to
Однако, насколько я понимаю, какое-то сообщение (всмысле ошибка) могло появиться в потоке дочерней стратегии раньше, чем я включил для правил логирование из потока родительской стратегии. Нет ли способа включить логирование после создания правил, но до запуска стратегии?


В текущей версии только через переопределение MarketQuotingStrategy.OnStarting Но в случае ошибок вы получите информацию через ProcessDataError или Strategy.Log.
Thanks:

mdv

Avatar
Date: 9/6/2011
Reply


ProcessDataError помог сдвинуться с мертвой точки. С периодом порядка секунды вылетает System.ArgumentException "An item with the same key has already been added."
Вы понимаете, почему это может происходить? Или куда копать дальше?
Thanks:

Mikhail Sukhov

Avatar
Date: 9/6/2011
Reply


mdv Go to
ProcessDataError помог сдвинуться с мертвой точки. С периодом порядка секунды вылетает System.ArgumentException "An item with the same key has already been added."
Вы понимаете, почему это может происходить? Или куда копать дальше?


Полный стек ошибки приведите.
Thanks:

mdv

Avatar
Date: 9/6/2011
Reply


at StockSharp.Quik.QuikTrader.#=qb8UK6OIUIbJMVeHlbOI65jq9T0y5i1xFvpi9bwfv_5k=.#=qyDUX5HBx_RonawnavrhbQw==(Exception #=qJGoxPFUzgnr6CSAPMnl52Q==)\r\n at #=qcHY9fPFm5xqxdHpgEdv8N_FH3JjHn$UY1TnoF9bcYJwclTD9DAZWJnJhLed70G8K.#=qvqiiUmdD8eJCMhhy$DCE3A==(DdeTable #=qwv6c0ugxXuL7ObO0x8XKGA==, IList`1 #=qqsMwosJewabRBWbSGqFU7Q==, Action`2 #=q1GmEBNmz2CVGWiCKhcsWPA==, Action`1 #=qtPK2$9KjpId7xK1QohVWEg==)\r\n at StockSharp.Quik.QuikTrader.#=qb8UK6OIUIbJMVeHlbOI65jq9T0y5i1xFvpi9bwfv_5k=.#=qhiRmc7JSZYbx7AaRjum3jQ==()\r\n at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)
Thanks:

Mikhail Sukhov

Avatar
Date: 9/6/2011
Reply


mdv Go to
at StockSharp.Quik.QuikTrader.#=qb8UK6OIUIbJMVeHlbOI65jq9T0y5i1xFvpi9bwfv_5k=.#=qyDUX5HBx_RonawnavrhbQw==(Exception #=qJGoxPFUzgnr6CSAPMnl52Q==)\r\n at #=qcHY9fPFm5xqxdHpgEdv8N_FH3JjHn$UY1TnoF9bcYJwclTD9DAZWJnJhLed70G8K.#=qvqiiUmdD8eJCMhhy$DCE3A==(DdeTable #=qwv6c0ugxXuL7ObO0x8XKGA==, IList`1 #=qqsMwosJewabRBWbSGqFU7Q==, Action`2 #=q1GmEBNmz2CVGWiCKhcsWPA==, Action`1 #=qtPK2$9KjpId7xK1QohVWEg==)\r\n at StockSharp.Quik.QuikTrader.#=qb8UK6OIUIbJMVeHlbOI65jq9T0y5i1xFvpi9bwfv_5k=.#=qhiRmc7JSZYbx7AaRjum3jQ==()\r\n at StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)


Похоже что такая же проблема что и здесь. Попробуйте так же сделать, как я написал там.
Thanks:

Alexander

Avatar
Date: 9/6/2011
Reply


Thanks:
1 2 3  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy