Вопросы новичка в S#

Вопросы новичка в S# (Locked)
Atom
12/1/2010
ttt


Добрый день. Очень понравилась идея использования Вашей библиотеки для реализации роботов. Подскажите, пожалуйста:

  1. Как идентифицировать заявку? //например, выставляю заявку buy RIZ0 4 контракта по цене 160500. Каким образом далее смогу ее отслеживать? Вариант с использованием таблицы сделок не подходит - необходимо реализовать контроль исполнения заявок пользуясь исключительно информацией из таблицы заявок. С языком C# только начал разбираться, возможно поэтому не нашел в представленных в дистрибутиве S# проектах примеров контроля состояния заявки по ее уникальному признаку.
  2. Верно ли я понимаю суть работы с Квиком: для реализации автономного робота необходимо организовать два потока на C#:
  • первый: выполняет функции получения данных из Квика через DDE сервер (используя библиотеку S#);
  • второй: непосредственно реализует алгоритм выставления и снятия заявок. Можно ли обойтись одним потоком?


<< < 23 24 25 26 27  > >>
Mikhail Sukhov

Avatar
Date: 3/29/2011


MCTuTeJ|19951995: Михаил,а

ReRegisterOrder(order,()=>newPrice,()=>newVolume,true)

>  это тоже самое, что и
> ```

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

Avatar
Date: 3/29/2011


MCTuTeJ|19951995: Проблема в том, что иногда заявка исполняется после проверки на исполнение, в результате чего происходит ошибка - программа пытается передвинуть исполненную заявку. Не подскажете как это лечится ?

Отменять, дожидаться отмены, выставлять новую.

Thanks: MCTuTeJ|19951995

Mikhail Sukhov

Avatar
Date: 3/29/2011


D_Alex: ODE0�

в таком случае обработка этих событий идет как-то в 2 потока, или по очереди?

Сами потоки ITrader в двух работают, так как синхронизация с ГУИ сделана асинхронно (GuiAsync).

Thanks: a.dobryn

MCTuTeJ|19951995

Avatar
Date: 3/29/2011


Mikhail Sukhov:

MCTuTeJ|19951995: Проблема в том, что иногда заявка исполняется после проверки на исполнение, в результате чего происходит ошибка - программа пытается передвинуть исполненную заявку. Не подскажете как это лечится ?

Отменять, дожидаться отмены, выставлять новую. Но если к моменту отмены она уже будет исполнена всё равно ведь будет ошибка ?

Thanks:

Mikhail Sukhov

Avatar
Date: 3/29/2011


MCTuTeJ|19951995:

Mikhail Sukhov:

MCTuTeJ|19951995: Проблема в том, что иногда заявка исполняется после проверки на исполнение, в результате чего происходит ошибка - программа пытается передвинуть исполненную заявку. Не подскажете как это лечится ?

Отменять, дожидаться отмены, выставлять новую. Но если к моменту отмены она уже будет исполнена всё равно ведь будет ошибка ?

Конечно. И этот случай следовательно нужно обрабатывать.

Thanks:

a.dobryn

Avatar
Date: 3/29/2011


Mikhail Sukhov:

D_Alex: ODE0�

в таком случае обработка этих событий идет как-то в 2 потока, или по очереди?

Сами потоки ITrader в двух работают, так как синхронизация с ГУИ сделана асинхронно (GuiAsync).

просто в программе по NewTrades происходит куча действий, в том числе и проверка, есть ли новые сделки (по _myTradesWindow.Trades, а они не всегда обновляются). Может быть такое, что при постоянной обработке NewTrades обработка NewMyTrades просто не успевает выполниться?

Thanks:

Mikhail Sukhov

Avatar
Date: 3/29/2011


D_Alex: просто в программе по NewTrades происходит куча действий, в том числе и проверка, есть ли новые сделки (по _myTradesWindow.Trades, а они не всегда обновляются). Может быть такое, что при постоянной обработке NewTrades обработка NewMyTrades просто не успевает выполниться?

Сами они между собой не синхронизируются внутри QuikTrader. А вот в обработчиках у вас вполне может. Отключайте что-то, смотрите.

Thanks: a.dobryn

IlyaILH

Avatar
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

Avatar
Date: 3/29/2011


IlyaILH: Я получаю следующие сообщения по вышестоящему коду:

VDSB@EQNE Trading LK20000BF1@RTS Trading и т.д.

По видимому, это действительно код и состояние, но у меня в таблице инструменты таких бумаг нет (у меня только сбер и лукойл). И я заметил что, как только у меня появляется сообщение, сразу же эта VDSB проходит в таблице всех сделок, т.е я и подумал, что информация оттуда идет.

Понял. Информация об инструментах идет отовсюду. В том числе и из таблицы сделок.

Thanks:

Vyacheslav

Avatar
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:
<< < 23 24 25 26 27  > >>

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy