Mikhail Sukhov
|
Дата: 15.03.2011
IlyaILH Добрый день.
Приступил к изучению S# в связи с этим у меня возник вопрос: при экспорте custom table все нормально работает, когда в таблице одна бумага, но как работать с несколькими бумагами так, например, при завпросе code инструмента выдается только код 1-го по списку инструмента.
Заранее благодарен за помощь.
Чуть подробнее и с деталями.
|
|
Спасибо:
|
|
|
|
|
skuvv
|
Дата: 15.03.2011
Mikhail Sukhov skuvv Mikhail Sukhov skuvv Появилась новая, при использовании для снятия ордера команды TraderHelper, он фризит все потоки(на 20 секунд) и соответсвенно до таймаута не может получить новые события(dde вывод тоже висит)
А как проверялось что и другие потоки замирали? Вообще фриз происходит только на текущий поток. GuarantyCancel напрямую вызывался из кода или через котирование? Вызывался из основного потока и соответсвенно весь мой GUI замирал. По логам никаких ивентов в этот промежуток небыло, зато сразу после фриза, накопленные данные пачкой выливаются из квика(сильный пик активности) 1. Из GUI потока торговлю делать не нужно. 2. Потому что наверняка вы из других обработчиков делаете GuiSync. А так как GUI поток заблокирован из-за неправильного пункта 1, то виснут и сами обработчики. Проблема повторяется и не только из мейн потока. Попробовал TraderHelper в Sample примере, все ок. Видимо проблема у меня, но раньше её не было(до 3.0.13 включительно)....
|
|
Спасибо:
|
|
|
|
|
VsevolodG
|
Дата: 15.03.2011
VsevolodG Здравствуйте!
Мне нужно сделать робота со следующим алгоритмом: 1. При запуске выставляются две заявки на покупку и на продажу 2. После двух подряд покупок или продаж выставлять стоп-лимиты 3. Когда срабатывает стоп-лимит выставлять тейк-профит на обратную сделку
На основе примеров я создал подключение к Quik. Дальше сразу же затык на получении текущей цены бумаги, на основании которой выставлять первые две заявки. После выставления заявок, как я понимаю, необходимо отслеживать событие NewTrades. Я прав?
Уточните, пожалуйста, как узнать текущую цену бумаги (которая отображается на "графике цены и объема"). А также правильным ли путем я иду или надо создавать какие-то стратегии?
Не оставляйте, пожалуйста, без внимания мои вопросы
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 15.03.2011
VsevolodG VsevolodG Здравствуйте!
Мне нужно сделать робота со следующим алгоритмом: 1. При запуске выставляются две заявки на покупку и на продажу 2. После двух подряд покупок или продаж выставлять стоп-лимиты 3. Когда срабатывает стоп-лимит выставлять тейк-профит на обратную сделку
На основе примеров я создал подключение к Quik. Дальше сразу же затык на получении текущей цены бумаги, на основании которой выставлять первые две заявки. После выставления заявок, как я понимаю, необходимо отслеживать событие NewTrades. Я прав?
Уточните, пожалуйста, как узнать текущую цену бумаги (которая отображается на "графике цены и объема"). А также правильным ли путем я иду или надо создавать какие-то стратегии?
Не оставляйте, пожалуйста, без внимания мои вопросы В первую очередь следует изучить документацию и посмотреть примеры более внимательно. 1) Что значит "текущая цена бумаги"? Цена последней сделки бумаги? В данном вопросе уже содержится ответ. Security - бумага LastTrade - последняя сделка Price - цена Получаем Security.LastTrade.Price 2) Зачем все сделки, если интересуют только собственные сделки? NewMyTrades отслеживать Если это всё что нужно, то можно и без стратегий.
|
|
Спасибо:
|
|
|
|
|
IlyaILH
|
Дата: 16.03.2011
Mikhail Sukhov IlyaILH Добрый день.
Приступил к изучению S# в связи с этим у меня возник вопрос: при экспорте custom table все нормально работает, когда в таблице одна бумага, но как работать с несколькими бумагами так, например, при завпросе code инструмента выдается только код 1-го по списку инструмента.
Заранее благодарен за помощь.
Чуть подробнее и с деталями. Все с этим разобрался, Спасибо.
|
|
Спасибо:
|
|
|
|
|
VsevolodG
|
Дата: 16.03.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 изменения в стакане происходят регулярно.
|
|
Спасибо:
|
|
|
|
|
VsevolodG
|
Дата: 16.03.2011
Событие SecuritiesChanged начало отрабатывать, после того как я подписался на событие: this.Trader.RegisterQuotes(_lkoh); this.Trader.QuotesChanged += new Action<IEnumerable<MarketDepth>>(Trader_QuotesChanged);
Но, цена последней сделки всегда равна нулю. "LastTrade: 0, BestBid: Бид 1998,5 2"
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 16.03.2011
VsevolodG Событие SecuritiesChanged начало отрабатывать, после того как я подписался на событие: this.Trader.RegisterQuotes(_lkoh); this.Trader.QuotesChanged += new Action<IEnumerable<MarketDepth>>(Trader_QuotesChanged);
Но, цена последней сделки всегда равна нулю. "LastTrade: 0, BestBid: Бид 1998,5 2" А таблица сделок экспортируется?
|
|
|
|
|
Igor_B
|
Дата: 16.03.2011
Михаил. доброе время. Создали и экспортируем собственную таблицу из Квик. Данные по ДДЕ получаем (код, цена последней сделки, время посл.сделки...), сейчас пробуем экспорт стакана. Работаем в своем приложении. 1.Можно ли экспортировать данные стакана (и/или любые другие) без открытия в Квике таблиц Инструменты... 2.Пробовали создавать таблицу инструменты в Квике (пример LKOH), при выполнении lkoh = new Security(); Trader.RegisterQuotes(lkoh); - ошибка "Для инструмента не было найдено информации в таблице инструменты. Parameter name: security" В чем м.б. ошибка? Спасибо.
|
|
Спасибо:
|
|
|
|
|
VsevolodG
|
Дата: 16.03.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);
|
|
Спасибо:
|
|
|
|