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


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


ttt

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


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

Avatar
Date: 3/28/2011


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

foreach (var myTrade in myTrades)
...

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

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

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

Mikhail Sukhov

Avatar
Date: 3/28/2011


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


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

a.dobryn

Avatar
Date: 3/28/2011


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


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


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

Mikhail Sukhov

Avatar
Date: 3/28/2011


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


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


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


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

a.dobryn

Avatar
Date: 3/28/2011


Mikhail Sukhov Go to
D_Alex Go to
Mikhail Sukhov Go to
D_Alex Go to
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 Go to
Trader.NewSecurities += securities =>
{

foreach (Security tool in securities)
{

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

}
};

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


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

MCTuTeJ|19951995

Avatar
Date: 3/29/2011


Михаил,а
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:

MCTuTeJ|19951995

Avatar
Date: 3/29/2011


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

// если заявка ещё активна (не отменена), то перерегистрировать заявку
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


Code

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