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

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


Здравствуйте! Проблема такая. Стратегия котирования запускается, пишет в лог, что запустилась и на этом зависает, не выставляя никакие заявки. Что характерно, этот же самый код отлично работает под 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


Написал вот так (на всякий случай):

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);

Получил только это:

Котирование: 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


                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));

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

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

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

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

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

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

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

Mikhail Sukhov

Avatar
Date: 9/5/2011
Reply


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

В текущей версии только через переопределение 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: 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==, IList1 #=qqsMwosJewabRBWbSGqFU7Q==, Action2 #=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: at StockSharp.Quik.QuikTrader.#=qb8UK6OIUIbJMVeHlbOI65jq9T0y5i1xFvpi9bwfv_5k=.#=qyDUX5HBx_RonawnavrhbQw==(Exception #=qJGoxPFUzgnr6CSAPMnl52Q==)\r\n at #=qcHY9fPFm5xqxdHpgEdv8N_FH3JjHn$UY1TnoF9bcYJwclTD9DAZWJnJhLed70G8K.#=qvqiiUmdD8eJCMhhy$DCE3A==(DdeTable #=qwv6c0ugxXuL7ObO0x8XKGA==, IList1 #=qqsMwosJewabRBWbSGqFU7Q==, Action2 #=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