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


mdv

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

Теги:


Спасибо:


1 2 3  >
Mikhail Sukhov

Фотография
Дата: 02.09.2011
Ответить


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

mdv

Фотография
Дата: 05.09.2011
Ответить


Написал вот так (на всякий случай):
Код
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]
Спасибо:

Mikhail Sukhov

Фотография
Дата: 05.09.2011
Ответить


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

mdv

Фотография
Дата: 05.09.2011
Ответить


Код
                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));

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

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

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

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

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

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

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

Mikhail Sukhov

Фотография
Дата: 05.09.2011
Ответить


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


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

mdv

Фотография
Дата: 06.09.2011
Ответить


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

Mikhail Sukhov

Фотография
Дата: 06.09.2011
Ответить


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


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

mdv

Фотография
Дата: 06.09.2011
Ответить


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)
Спасибо:

Mikhail Sukhov

Фотография
Дата: 06.09.2011
Ответить


mdv Перейти
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)


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

Alexander

Фотография
Дата: 06.09.2011
Ответить


Спасибо:
1 2 3  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy