Mikhail Sukhov
|
Date: 3/29/2011
MCTuTeJ|19951995 Михаил,а Code ReRegisterOrder(order,()=>newPrice,()=>newVolume,true) это тоже самое, что и Code Trader.CancelOrder(order); Order newOrder = new Order(); newOrder.Portfolio=order.Portfolio; newOrder.Security = order.Security; newOrder.Price = newPrice; newOrder.Direction= order.Direction; newOrder.Volume= newVolume; Trader.RegisterOrder;
? Для ФОРТС нет. Для всего остального да.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/29/2011
MCTuTeJ|19951995 Проблема в том, что иногда заявка исполняется после проверки на исполнение, в результате чего происходит ошибка - программа пытается передвинуть исполненную заявку. Не подскажете как это лечится ?
Отменять, дожидаться отмены, выставлять новую.
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/29/2011
D_Alex Code this.Trader.NewMyTrades += trades => this.GuiAsync(() => _myTradesWindow.Trades.AddRange(trades)); this.Trader.NewTrades += trades => this.GuiAsync(() => _tradesWindow.Trades.AddRange(trades));
в таком случае обработка этих событий идет как-то в 2 потока, или по очереди? Сами потоки ITrader в двух работают, так как синхронизация с ГУИ сделана асинхронно (GuiAsync).
|
|
|
|
|
MCTuTeJ|19951995
|
Date: 3/29/2011
Mikhail Sukhov MCTuTeJ|19951995 Проблема в том, что иногда заявка исполняется после проверки на исполнение, в результате чего происходит ошибка - программа пытается передвинуть исполненную заявку. Не подскажете как это лечится ?
Отменять, дожидаться отмены, выставлять новую. Но если к моменту отмены она уже будет исполнена всё равно ведь будет ошибка ?
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/29/2011
MCTuTeJ|19951995 Mikhail Sukhov MCTuTeJ|19951995 Проблема в том, что иногда заявка исполняется после проверки на исполнение, в результате чего происходит ошибка - программа пытается передвинуть исполненную заявку. Не подскажете как это лечится ?
Отменять, дожидаться отмены, выставлять новую. Но если к моменту отмены она уже будет исполнена всё равно ведь будет ошибка ? Конечно. И этот случай следовательно нужно обрабатывать.
|
|
Thanks:
|
|
|
|
|
a.dobryn
|
Date: 3/29/2011
Mikhail Sukhov D_Alex Code this.Trader.NewMyTrades += trades => this.GuiAsync(() => _myTradesWindow.Trades.AddRange(trades)); this.Trader.NewTrades += trades => this.GuiAsync(() => _tradesWindow.Trades.AddRange(trades));
в таком случае обработка этих событий идет как-то в 2 потока, или по очереди? Сами потоки ITrader в двух работают, так как синхронизация с ГУИ сделана асинхронно (GuiAsync). просто в программе по NewTrades происходит куча действий, в том числе и проверка, есть ли новые сделки (по _myTradesWindow.Trades, а они не всегда обновляются). Может быть такое, что при постоянной обработке NewTrades обработка NewMyTrades просто не успевает выполниться?
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/29/2011
D_Alex просто в программе по NewTrades происходит куча действий, в том числе и проверка, есть ли новые сделки (по _myTradesWindow.Trades, а они не всегда обновляются). Может быть такое, что при постоянной обработке NewTrades обработка NewMyTrades просто не успевает выполниться? Сами они между собой не синхронизируются внутри QuikTrader. А вот в обработчиках у вас вполне может. Отключайте что-то, смотрите.
|
|
|
|
|
IlyaILH
|
Date: 3/29/2011
Mikhail Sukhov IlyaILH Trader.NewSecurities += securities => { foreach (Security tool in securities) { MessageBox.Show(tool.Id +" "+ tool.State.ToString()); } };
На этот код, мне выводится не понятно что, но предположительно данные из таблицы Все сделки.
Выделенное можете как-то подробнее описать? Код выводит идентификатор инструмента и его состояние. Причем здесь сделки? Я получаю следующие сообщения по вышестоящему коду: VDSB@EQNE Trading LK20000BF1@RTS Trading и т.д. По видимому, это действительно код и состояние, но у меня в таблице инструменты таких бумаг нет (у меня только сбер и лукойл). И я заметил что, как только у меня появляется сообщение, сразу же эта VDSB проходит в таблице всех сделок, т.е я и подумал, что информация оттуда идет.
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 3/29/2011
IlyaILH Я получаю следующие сообщения по вышестоящему коду:
VDSB@EQNE Trading LK20000BF1@RTS Trading и т.д.
По видимому, это действительно код и состояние, но у меня в таблице инструменты таких бумаг нет (у меня только сбер и лукойл). И я заметил что, как только у меня появляется сообщение, сразу же эта VDSB проходит в таблице всех сделок, т.е я и подумал, что информация оттуда идет. Понял. Информация об инструментах идет отовсюду. В том числе и из таблицы сделок.
|
|
Thanks:
|
|
|
|
|
Vyacheslav
|
Date: 3/29/2011
Михаил, спасибо за Ваш огромный труд!
Только начал изучать S#. Сразу вопрос: запускаю sampleconsole.exe, однако возникают ошибки:
Введите номер счета, через который будет выставлена заявка: NL0011100043 Производим подключение... Подключение было произведено успешно. Дожидаемся появления в программе инструмента Лукойл и портфеля NL0011100043... Инструмент Лукойл появился. Портфель NL0011100043 появился. Первоначальное значение середины спреда 0 System.ArgumentException: Транзакции 'ACCOUNT=NL0011100043; CLIENT_CODE=S#; TRAN S_ID=83785079; CLASSCODE=QJSIM; SECCODE=LKOH; QUANTITY=1; OPERATION=B; TYPE=L; A CTION=NEW_ORDER; PRICE=0; EXECUTION_CONDITION=PUT_IN_QUEUE;' не была зарегистрир ована. Причина 'Цена заявки должна быть положительна'. Parameter name: transactionTxt at #=qoXwOPiKu6rKxfqRbyQH_8kmNOB382r_Z62UoStG__20=.#=qqqjfNu5FDvUnmIHLI7eIpqU LYCdQ6s45iJpvRMufTTo=(String #=qMyxjjZn7gcLlgrKmKE6fdw==, OrderStatus& #=qfMzUMV woA9vTKeRIC2yVBg==, UInt32& #=qx89Qmj8$YdXkVw2g47iBHA==, Int64& #=qru3jL$hLUeCws hCq6a0lcA==, String& #=qJTAyuLuvPwQ9HQzhdHWM2g==) at Ecng.Trading.Quik.QuikTrader.#=q54MTj4O0HyGlsuBk4LMgvyLClWnXw07g5l8N_CZjZX o=(Order #=qfB2F85tURLB4YdJcjKMYgg==, TransactionBuilder #=qk_SbqcrTyofJ_NTgcHp8 Fg==) at Ecng.Trading.Quik.QuikTrader.OnRegisterOrder(Order order) at Ecng.Trading.Algo.BaseTrader.RegisterOrder(Order order) at SampleConsole.Program.Main() in E:\StockSharpReleases\StockSharp_3.0.19\So urces\SampleConsole\Program.cs:line 143
C:\StockSharp_3.0.19\Exe\SampleConsole>
QUIK также выбрасывает сообщение: DDE сервер 'wrapper'.Документ 'стакан [LKOH-QJSIM]'. Таблица 'LKOH-QJSIM'. Произошла ошибка: Ошибка при передаче таблицы, вывод приостановлен. Неверные параметры.
Использую Ваш info.wnd Verifier показывает отсутствие ошибок. S# 3.0.19, QUIK-JUNIOR 5.21 Однако, такое чувство, что нет экспорта стакана по DDE.
Что делать?
|
|
Thanks:
|
|
|
|