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

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


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


<< < 13 14 15 16 17  > >>
Mikhail Sukhov

Avatar
Date: 3/15/2011


IlyaILH
Добрый день.

Приступил к изучению S# в связи с этим у меня возник вопрос:
при экспорте custom table все нормально работает, когда в таблице одна бумага, но как работать с несколькими бумагами
так, например, при завпросе code инструмента выдается только код 1-го по списку инструмента.

Заранее благодарен за помощь.


Чуть подробнее и с деталями.
Thanks:

skuvv

Avatar
Date: 3/15/2011


Mikhail Sukhov
skuvv
Mikhail Sukhov
skuvv
Появилась новая, при использовании для снятия ордера команды TraderHelper, он фризит все потоки(на 20 секунд) и соответсвенно до таймаута не может получить новые события(dde вывод тоже висит)


А как проверялось что и другие потоки замирали? Вообще фриз происходит только на текущий поток. GuarantyCancel напрямую вызывался из кода или через котирование?

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


1. Из GUI потока торговлю делать не нужно.
2. Потому что наверняка вы из других обработчиков делаете GuiSync. А так как GUI поток заблокирован из-за неправильного пункта 1, то виснут и сами обработчики.

Проблема повторяется и не только из мейн потока.
Попробовал TraderHelper в Sample примере, все ок.
Видимо проблема у меня, но раньше её не было(до 3.0.13 включительно)....
Thanks:

VsevolodG

Avatar
Date: 3/15/2011


VsevolodG
Здравствуйте!

Мне нужно сделать робота со следующим алгоритмом:
1. При запуске выставляются две заявки на покупку и на продажу
2. После двух подряд покупок или продаж выставлять стоп-лимиты
3. Когда срабатывает стоп-лимит выставлять тейк-профит на обратную сделку

На основе примеров я создал подключение к Quik. Дальше сразу же затык на получении текущей цены бумаги, на основании которой выставлять первые две заявки.
После выставления заявок, как я понимаю, необходимо отслеживать событие NewTrades. Я прав?

Уточните, пожалуйста, как узнать текущую цену бумаги (которая отображается на "графике цены и объема"). А также правильным ли путем я иду или надо создавать какие-то стратегии?


Не оставляйте, пожалуйста, без внимания мои вопросы
Thanks:

Alexander

Avatar
Date: 3/15/2011


VsevolodG
VsevolodG
Здравствуйте!

Мне нужно сделать робота со следующим алгоритмом:
1. При запуске выставляются две заявки на покупку и на продажу
2. После двух подряд покупок или продаж выставлять стоп-лимиты
3. Когда срабатывает стоп-лимит выставлять тейк-профит на обратную сделку

На основе примеров я создал подключение к Quik. Дальше сразу же затык на получении текущей цены бумаги, на основании которой выставлять первые две заявки.
После выставления заявок, как я понимаю, необходимо отслеживать событие NewTrades. Я прав?

Уточните, пожалуйста, как узнать текущую цену бумаги (которая отображается на "графике цены и объема"). А также правильным ли путем я иду или надо создавать какие-то стратегии?


Не оставляйте, пожалуйста, без внимания мои вопросы



В первую очередь следует изучить документацию и посмотреть примеры более внимательно.

1) Что значит "текущая цена бумаги"? Цена последней сделки бумаги?
В данном вопросе уже содержится ответ.
Security - бумага
LastTrade - последняя сделка
Price - цена

Получаем Security.LastTrade.Price

2) Зачем все сделки, если интересуют только собственные сделки?
NewMyTrades отслеживать

Если это всё что нужно, то можно и без стратегий.
Thanks:

IlyaILH

Avatar
Date: 3/16/2011


Mikhail Sukhov
IlyaILH
Добрый день.

Приступил к изучению S# в связи с этим у меня возник вопрос:
при экспорте custom table все нормально работает, когда в таблице одна бумага, но как работать с несколькими бумагами
так, например, при завпросе code инструмента выдается только код 1-го по списку инструмента.

Заранее благодарен за помощь.


Чуть подробнее и с деталями.


Все с этим разобрался, Спасибо.
Thanks:

VsevolodG

Avatar
Date: 3/16/2011


Alexander
VsevolodG
VsevolodG
Здравствуйте!

Мне нужно сделать робота со следующим алгоритмом:
1. При запуске выставляются две заявки на покупку и на продажу
2. После двух подряд покупок или продаж выставлять стоп-лимиты
3. Когда срабатывает стоп-лимит выставлять тейк-профит на обратную сделку

На основе примеров я создал подключение к Quik. Дальше сразу же затык на получении текущей цены бумаги, на основании которой выставлять первые две заявки.
После выставления заявок, как я понимаю, необходимо отслеживать событие NewTrades. Я прав?

Уточните, пожалуйста, как узнать текущую цену бумаги (которая отображается на "графике цены и объема"). А также правильным ли путем я иду или надо создавать какие-то стратегии?


Не оставляйте, пожалуйста, без внимания мои вопросы



В первую очередь следует изучить документацию и посмотреть примеры более внимательно.

1) Что значит "текущая цена бумаги"? Цена последней сделки бумаги?
В данном вопросе уже содержится ответ.
Security - бумага
LastTrade - последняя сделка
Price - цена

Получаем Security.LastTrade.Price

2) Зачем все сделки, если интересуют только собственные сделки?
NewMyTrades отслеживать

Если это всё что нужно, то можно и без стратегий.


Тогда вопрос, как получить значение Security.LastTrade.Price?
В документации написано:
"RegisterSecurity - Начать получать новую информацию (например, LastTrade или BestBid) по инструменту."

Соответственно, делаю так:
this.Trader.RegisterSecurity(_lkoh);
this.Trader.SecuritiesChanged += new Action<IEnumerable<Security>>(Trader_SecuritiesChanged);

В итоге это событие не вызывается в принципе. Хотя в Quik изменения в стакане происходят регулярно.
Thanks:

VsevolodG

Avatar
Date: 3/16/2011


Событие SecuritiesChanged начало отрабатывать, после того как я подписался на событие:
this.Trader.RegisterQuotes(_lkoh);
this.Trader.QuotesChanged += new Action<IEnumerable<MarketDepth>>(Trader_QuotesChanged);

Но, цена последней сделки всегда равна нулю.
"LastTrade: 0, BestBid: Бид 1998,5 2"
Thanks:

Mikhail Sukhov

Avatar
Date: 3/16/2011


VsevolodG
Событие SecuritiesChanged начало отрабатывать, после того как я подписался на событие:
this.Trader.RegisterQuotes(_lkoh);
this.Trader.QuotesChanged += new Action<IEnumerable<MarketDepth>>(Trader_QuotesChanged);

Но, цена последней сделки всегда равна нулю.
"LastTrade: 0, BestBid: Бид 1998,5 2"


А таблица сделок экспортируется?
Thanks: VsevolodG

Igor_B

Avatar
Date: 3/16/2011


Михаил. доброе время.
Создали и экспортируем собственную таблицу из Квик. Данные по ДДЕ получаем (код, цена последней сделки, время посл.сделки...), сейчас пробуем экспорт стакана.
Работаем в своем приложении.
1.Можно ли экспортировать данные стакана (и/или любые другие) без открытия в Квике таблиц Инструменты...
2.Пробовали создавать таблицу инструменты в Квике (пример LKOH), при выполнении
lkoh = new Security();
Trader.RegisterQuotes(lkoh); - ошибка
"Для инструмента не было найдено информации в таблице инструменты.
Parameter name: security"
В чем м.б. ошибка?
Спасибо.


Thanks:

VsevolodG

Avatar
Date: 3/16/2011


Подскажите, пожалуйста, по какой причине может не отрабатывать событие MyNewTrades?
Сделка в Quik появляется, а код, привязанный к событию MyNewTrades не отрабатывает.

Вот мой код:

this.Trader.NewMyTrades += myTrades =>
{
foreach (var myTrade in myTrades)
{
var trade = myTrade.Trade;
MessageBox.Show(String.Format("Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.", trade.Id, trade.Price, trade.Security.Code, trade.Volume, trade.Time));
}
};

this.Trader.Terminal.StartDde(Trader.SecuritiesTable, Trader.MyTradesTable, Trader.EquityPositionsTable);
Thanks:
<< < 13 14 15 16 17  > >>

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

loading
clippy