Ошибка экспорта стакана
Atom Ответить
10.06.2011


Den

Фотография
S# 2.6.2 + Quik 5.17

Вызываю для текущего фьюча на RTS:

Код
this.Trader.RegisterQuotes(_RI);

Стакан открывается сам.

Потом использую код из примера:

Код
foreach (var qoute in this.Trader.GetMarketDepth(_RI))
{
Console.WriteLine("Направление {0} Объем {1} Цена {2}", qoute.OrderDirection, qoute.Volume, qoute.Price);
}


Получаю серию ошибок:

Код
System.InvalidOperationException: Название таблицы со стаканом оформлено неверно '[стакан]RTS-6.11-SPBFUT'.
at Ecng.Trading.Quik.QuikTrader.#=qTre19CdRPyKpnVO8WaQdUkvQrIiCuIHe9XcW7RXbC04=.#=qwQWcSTSHTT$2hNIl5pTVwA==()
at Ecng.Trading.Algo.BaseTrader.ProcessEvents(Action handler)

Скриншот настроек:


Помогите разобраться в чем дело, пожалуйста!

Теги:


Спасибо:




4 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 10.06.2011
Ответить


Den Перейти

Код
System.InvalidOperationException: Название таблицы со стаканом оформлено неверно '[стакан]RTS-6.11-SPBFUT'.
at Ecng.Trading.Quik.QuikTrader.#=qTre19CdRPyKpnVO8WaQdUkvQrIiCuIHe9XcW7RXbC04=.#=qwQWcSTSHTT$2hNIl5pTVwA==()
at Ecng.Trading.Algo.BaseTrader.ProcessEvents(Action handler)



В документации написано про случай с дефисом.
Спасибо: Den

Den

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


Mikhail Sukhov Перейти
Den Перейти

Код
System.InvalidOperationException: Название таблицы со стаканом оформлено неверно '[стакан]RTS-6.11-SPBFUT'.
at Ecng.Trading.Quik.QuikTrader.#=qTre19CdRPyKpnVO8WaQdUkvQrIiCuIHe9XcW7RXbC04=.#=qwQWcSTSHTT$2hNIl5pTVwA==()
at Ecng.Trading.Algo.BaseTrader.ProcessEvents(Action handler)



В документации написано про случай с дефисом.


Спасибо! нашел: Если код и класс инструмента содержат символ дефис, то рекомендуется поменять разделитель на другой символ через свойство QuikTerminal::MarketDepthDelimiter.

Но, проблемы продолжились...
Сделал
Код
this.Trader.Terminal.MarketDepthDelimiter = "@";


После вызова

Код
MarketDepth md = this.Trader.GetMarketDepth(_RI);


Получаю md со значениями BestAsk.{Price, Volume} все время равными 0.
А Trader.ProcessDataError выдает:


Код
System.ArgumentException: An item with the same key has already been added.
at Ecng.Trading.Quik.QuikTrader.#=qTre19CdRPyKpnVO8WaQdUkvQrIiCuIHe9XcW7RXbC04=.#=qIP9csWbWPPOGL_MWOFxf4w==(Exception #=qUOhrk6Em1lNQ6backpqQJg==)
at Ecng.Trading.Quik.DdeTable.#=qZiwPb3v2t_oT0D7mrAAKDQ==(IList`1 #=qGZJOOyj9_11QAXVxoVAHJQ==, Action`2 #=qytkU$YIpb54LPXCs3YXrAA==, Action`1 #=qrtTaqcpDj5SIhcizQIpeJg==)
at Ecng.Trading.Quik.QuikTrader.#=qTre19CdRPyKpnVO8WaQdUkvQrIiCuIHe9XcW7RXbC04=.#=qwQWcSTSHTT$2hNIl5pTVwA==()
at Ecng.Trading.Algo.BaseTrader.ProcessEvents(Action handler)


Что можно с этим сделать?
Автор топика
Спасибо:

Den

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


Den Перейти
Mikhail Sukhov Перейти
Den Перейти

Код
System.InvalidOperationException: Название таблицы со стаканом оформлено неверно '[стакан]RTS-6.11-SPBFUT'.
at Ecng.Trading.Quik.QuikTrader.#=qTre19CdRPyKpnVO8WaQdUkvQrIiCuIHe9XcW7RXbC04=.#=qwQWcSTSHTT$2hNIl5pTVwA==()
at Ecng.Trading.Algo.BaseTrader.ProcessEvents(Action handler)



В документации написано про случай с дефисом.


Спасибо! нашел: Если код и класс инструмента содержат символ дефис, то рекомендуется поменять разделитель на другой символ через свойство QuikTerminal::MarketDepthDelimiter.

Но, проблемы продолжились...
Сделал
Код
this.Trader.Terminal.MarketDepthDelimiter = "@";


После вызова

Код
MarketDepth md = this.Trader.GetMarketDepth(_RI);


Получаю md со значениями BestAsk.{Price, Volume} все время равными 0.
А Trader.ProcessDataError выдает:


Код
System.ArgumentException: An item with the same key has already been added.
at Ecng.Trading.Quik.QuikTrader.#=qTre19CdRPyKpnVO8WaQdUkvQrIiCuIHe9XcW7RXbC04=.#=qIP9csWbWPPOGL_MWOFxf4w==(Exception #=qUOhrk6Em1lNQ6backpqQJg==)
at Ecng.Trading.Quik.DdeTable.#=qZiwPb3v2t_oT0D7mrAAKDQ==(IList`1 #=qGZJOOyj9_11QAXVxoVAHJQ==, Action`2 #=qytkU$YIpb54LPXCs3YXrAA==, Action`1 #=qrtTaqcpDj5SIhcizQIpeJg==)
at Ecng.Trading.Quik.QuikTrader.#=qTre19CdRPyKpnVO8WaQdUkvQrIiCuIHe9XcW7RXbC04=.#=qwQWcSTSHTT$2hNIl5pTVwA==()
at Ecng.Trading.Algo.BaseTrader.ProcessEvents(Action handler)


Что можно с этим сделать?


Удалось воспроизвести на Quik-Junior:

Если в стакане наряду с колонками "покупка, продажа" также присутствуют колонки "сумма лучшей {покупки,продажи}", и при этом
в настройках нет галочки "Покупку показывать сверху", то BestAsk.{Price, Volume} все время равны 0.
Особо интересен факт, что даже если потом галочку поставить, то все равно будут эксепшены и BestAsk.{Price, Volume} равными 0.
Чтобы избавиться от нее нужно закрывать стакан и настраивать новый.

Если колонок "сумма лучшей {покупки,продажи}" в стакане нет, то настройка "Покупку показывать сверху" ни на что не влияет.


Михаил,

возможно это стоит добавить в Verifier.
Еще Verifier неверно выдает ошибку названия стакана если в программе изменено значение Trader.Terminal.MarketDepthDelimiter.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 19.06.2011
Ответить


Den Перейти
Еще Verifier неверно выдает ошибку названия стакана если в программе изменено значение Trader.Terminal.MarketDepthDelimiter.


Начиная с 3.x это свойство вообще исчезло как рудимент. Так что рекомендую обновиться.
Спасибо:


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

loading
clippy