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

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


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

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


<< < 22 23 24 25 26  > >>
a.dobryn

Avatar
Date: 3/28/2011


а как корректно обрабатывать новые сделки? в обработчике своих сделок было


foreach (var myTrade in myTrades)
            ...

и в итоге обрабатывалась одна сделка, все в порядке =)

а если таким же образом обрабатывать все сделки, их в IEnumerable<Trade> trades целая куча. Как нужно делать, брать просто последнюю? Или, наоборот, первую? Какая самая "свежая" из них? =)

**upd:**хм, и первая и последняя давностью 2,5 часа [confused]

Thanks:

Mikhail Sukhov

Avatar
Date: 3/28/2011


D_Alex: **upd:**хм, и первая и последняя давностью 2,5 часа [confused]

Потому что при старте экспорта все сделки передаются всем скопом.

Thanks:

a.dobryn

Avatar
Date: 3/28/2011


Mikhail Sukhov:

D_Alex: **upd:**хм, и первая и последняя давностью 2,5 часа [confused]

Потому что при старте экспорта все сделки передаются всем скопом.

то есть надо дождаться, пока свежие будут? и если да, то как?

Thanks:

Mikhail Sukhov

Avatar
Date: 3/28/2011


D_Alex:

Mikhail Sukhov:

D_Alex: **upd:**хм, и первая и последняя давностью 2,5 часа [confused]

Потому что при старте экспорта все сделки передаются всем скопом.

то есть надо дождаться, пока свежие будут? и если да, то как?

Запоминаем время начала экспорта. Ждем когда появятся сделки с таким временем. Только понятие свежее тут сильно сказано. Все сделки - это устаревшие данные. Другое дело - насколько. И мне кажется, что это лучше делать через логику работы с программой, чем закладывать в код.

Thanks: a.dobryn

a.dobryn

Avatar
Date: 3/28/2011


Mikhail Sukhov:

D_Alex:

Mikhail Sukhov:

D_Alex: **upd:**хм, и первая и последняя давностью 2,5 часа [confused]

Потому что при старте экспорта все сделки передаются всем скопом.

то есть надо дождаться, пока свежие будут? и если да, то как?

Запоминаем время начала экспорта. Ждем когда появятся сделки с таким временем. Только понятие свежее тут сильно сказано. Все сделки - это устаревшие данные. Другое дело - насколько. И мне кажется, что это лучше делать через логику работы с программой, чем закладывать в код.

свежие - те, которые после старта программы появились =) точно, что-то не подумала я по времени смотреть

Thanks:

IlyaILH

Avatar
Date: 3/28/2011


Михаил, подскажите, что я делаю не так.

Я реализовал следующее:

Подписался на событие NewSecurities

Trader.ProcessDataError - идет без ошибок.

Trader.NewSecurities += securities => {

                foreach (Security tool in securities)
                {
                    
                    MessageBox.Show(tool.Id +" "+ tool.State.ToString());
                                           
                }
            }; 

На этот код, мне выводится не понятно что, но предположительно данные из таблицы Все сделки.

Помогите разобраться с таблицей Инструменты.

Спасибо.

Thanks:

Mikhail Sukhov

Avatar
Date: 3/28/2011


IlyaILH: Trader.NewSecurities += securities => {

                foreach (Security tool in securities)
                {

                    MessageBox.Show(tool.Id +" "+ tool.State.ToString());

                }
            };

На этот код, мне выводится не понятно что, но предположительно данные из таблицы Все сделки.

Выделенное можете как-то подробнее описать? Код выводит идентификатор инструмента и его состояние. Причем здесь сделки?

Thanks:

MCTuTeJ|19951995

Avatar
Date: 3/29/2011


Михаил,а

 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:

MCTuTeJ|19951995

Avatar
Date: 3/29/2011


Есть такая проблема: В стратегии мониторятся различные параметры и исходя из них переставляется заявка:


     // если заявка ещё активна (не отменена), то перерегистрировать заявку
                        if (!(order.State==OrderStates.Done))
                        {
                            newOrder=  this.ReRegisterOrder(order,()=>TheorOptPrice,()=>newOrder.Volume,true);
                            orderIdList.Add(newOrder.Id);
                        }

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

Thanks:

a.dobryn

Avatar
Date: 3/29/2011



this.Trader.NewMyTrades += trades => this.GuiAsync(() => _myTradesWindow.Trades.AddRange(trades));
this.Trader.NewTrades += trades => this.GuiAsync(() => _tradesWindow.Trades.AddRange(trades));

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

Thanks:
<< < 22 23 24 25 26  > >>

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

loading
clippy