← Zurück

Ошибка экспорта стакана

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)

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (4)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

Den: ...

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

Den
Den
Den Autor

Mikhail Sukhov:

Den: ...

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

Спасибо! нашел: Если код и класс инструмента содержат символ дефис, то рекомендуется поменять разделитель на другой символ через свойство 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
Den Autor

Den:

Mikhail Sukhov:

Den: ...

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

Спасибо! нашел: Если код и класс инструмента содержат символ дефис, то рекомендуется поменять разделитель на другой символ через свойство 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==(IList1 #=qGZJOOyj9_11QAXVxoVAHJQ==, Action2 #=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
Mikhail Sukhov

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

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