Убрал словарь _isinSecurities
Atom Ответить
21.04.2011


Так как теперь это поддерживается BaseTrader. Теперь все события, которые пришли для plaza_security_id, и при этом инструмента такого еще не было получено, "сохраняются" в очередь через метод ProcessSecurityAction. И как только такой инструмент будет получен, то все эти сохраненные действия будут обработаны.

Не понял смысла _quotes. Зачем оно?

Теги:


Спасибо:




35 Ответов
1 2  >
aspirant

Фотография
Дата: 22.04.2011
Ответить


Mikhail Sukhov Перейти
Не понял смысла _quotes. Зачем оно?


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

Если бы у класса Ecng.Trading.BusinessEntities.Quote было уникальное свойство string/long Id, в которое я бы вставлял значение replID, и потом по этому ключу можно было внутри Ecng.Trading.BusinessEntities.MarketDepth находить/редактировать/удалять нужный элемент типа Quote, _quotes было бы не нужно. Можешь что-нибудь похожее сделать? А то сейчас мне приходится самому хранить набор котировок, и всякий раз когда приходит новая котировка, перезаполнять MarketDepth (см. реализацию метода PlazaTrader.OnAggregationDataInserted).

Я думал, что настроил работу стаканов с глубиной 5, но пока писал это сообщение, понял, что похоже неправильно. На выходных буду исправлять.

Еще: у Плазы три разных стакана с глубиной 5, 20 и 50, а нас для каждой бумаги только один стакан. Ломаю голову, как это соединить вместе.
Спасибо:

aspirant

Фотография
Дата: 22.04.2011
Ответить


aspirant Перейти
Я думал, что настроил работу стаканов с глубиной 5, но пока писал это сообщение, понял, что похоже неправильно. На выходных буду исправлять.


Исправил, а то я все недоумевал, почему у меня по некоторым бумагам пустые стаканы.

Кстати, очень важно: фильтрации похоже не будет. Иначе потом не сможем собрать стакан по бумаге, которой не было в фильтре.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 22.04.2011
Ответить


aspirant Перейти
Если бы у класса Ecng.Trading.BusinessEntities.Quote было уникальное свойство string/long Id, в которое я бы вставлял значение replID, и потом по этому ключу можно было внутри Ecng.Trading.BusinessEntities.MarketDepth находить/редактировать/удалять нужный элемент типа Quote, _quotes было бы не нужно.


Как насчет использования Quote.ExtensionInfo?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 22.04.2011
Ответить


aspirant Перейти
aspirant Перейти
Я думал, что настроил работу стаканов с глубиной 5, но пока писал это сообщение, понял, что похоже неправильно. На выходных буду исправлять.


Исправил, а то я все недоумевал, почему у меня по некоторым бумагам пустые стаканы.

Кстати, очень важно: фильтрации похоже не будет. Иначе потом не сможем собрать стакан по бумаге, которой не было в фильтре.


Предлагаю пока забить на фильтр и выбор глубины стакана, пусть будет какой-то. Например, 5, раз ты уже с ним начал работу. Надо уже собирать воедино экспорт и работу с заявками. У меня вот что-то экспорт не работает.
Автор топика
Спасибо:

aspirant

Фотография
Дата: 22.04.2011
Ответить


Mikhail Sukhov Перейти
[quote=aspirant;7603]Как насчет использования Quote.ExtensionInfo?
Не затормозим? Алгоритм такой, что нужно будет каждый раз в него лезть. Посмотри реализацию OnAggregationDataInserted.
Спасибо:

aspirant

Фотография
Дата: 22.04.2011
Ответить


Mikhail Sukhov Перейти
Предлагаю пока забить на фильтр и выбор глубины стакана, пусть будет какой-то. Например, 5, раз ты уже с ним начал работу.

Пятерки работают и с опционами, и с фьючерсами.

Mikhail Sukhov Перейти
У меня вот что-то экспорт не работает.

А что конкретно не работает? У меня приходят инструменты и стаканы.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 22.04.2011
Ответить


aspirant Перейти

А что конкретно не работает? У меня приходят инструменты и стаканы.


Они отображаются в SampleGUI?
Автор топика
Спасибо:

aspirant

Фотография
Дата: 22.04.2011
Ответить


Mikhail Sukhov Перейти
Они отображаются в SampleGUI?


Да, конечно, я думаю, у тебя дело в номере порта.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 22.04.2011
Ответить


aspirant Перейти
Mikhail Sukhov Перейти
Они отображаются в SampleGUI?


Да, конечно, я думаю, у тебя дело в номере порта.


На 3001 вообще не подключалось... А ты можешь проверить на последних исходниках?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 22.04.2011
Ответить


Mikhail Sukhov Перейти
aspirant Перейти
Mikhail Sukhov Перейти
Они отображаются в SampleGUI?


Да, конечно, я думаю, у тебя дело в номере порта.


На 3001 вообще не подключалось... А ты можешь проверить на последних исходниках?


Ну я лошара. Там же фильтры стоятLOL

upd: У меня работает и с 4001. Зачем тогда менять порт по умолчанию?
Автор топика
Спасибо:

aspirant

Фотография
Дата: 22.04.2011
Ответить


Mikhail Sukhov Перейти
Там же фильтры стоятLOL


Какие фильтры?
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 22.04.2011
Ответить


aspirant Перейти
Mikhail Sukhov Перейти
Там же фильтры стоятLOL


Какие фильтры?


В окне Инструменты есть выпадающие списки.
Автор топика
Спасибо:

aspirant

Фотография
Дата: 22.04.2011
Ответить


Mikhail Sukhov Перейти
aspirant Перейти
Mikhail Sukhov Перейти
Там же фильтры стоятLOL


Какие фильтры?


В окне Инструменты есть выпадающие списки.


А ну да, я тоже не сразу додумал. А зачем, кстати, два выпадающих списка? У всех же оцпионов класс бумаги OPT, а у всех фьючерсов - FUT. Может второй список убрать?
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 22.04.2011
Ответить


aspirant Перейти
А зачем, кстати, два выпадающих списка? У всех же оцпионов класс бумаги OPT, а у всех фьючерсов - FUT. Может второй список убрать?


Это же копи-пастинг.
Автор топика
Спасибо:

aspirant

Фотография
Дата: 25.05.2011
Ответить


Попытался запустить PlazaTrader. В OnSessionContentsFutureStreamInserted вылетело исключение:

Цитата:
InvalidOperationException: Инструмент инструмента 158622 торговой системы уже имеет ассоциацию


Не посмотришь, почему?
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 25.05.2011
Ответить


aspirant Перейти
Попытался запустить PlazaTrader. В OnSessionContentsFutureStreamInserted вылетело исключение:

Цитата:
InvalidOperationException: Инструмент инструмента 158622 торговой системы уже имеет ассоциацию


Не посмотришь, почему?


Залью фикс. Вкратце - http://forum.rts.ru/viewtopic.asp?t=21079
Автор топика
Спасибо:

aspirant

Фотография
Дата: 26.05.2011
Ответить


Mikhail Sukhov Перейти


Вообще, конечно, это досадно, что isin_id не уникален. Залей побыстрее. Хочу с заявками покопаться.
Спасибо:

esper

Фотография
Программист
Дата: 26.05.2011
Ответить


Он уникален, но только в пределах сессии, вот почему в текущую сессию могут придти данные по инструментам за следующую сессию довольно интересно.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 26.05.2011
Ответить


aspirant Перейти
Mikhail Sukhov Перейти


Вообще, конечно, это досадно, что isin_id не уникален. Залей побыстрее. Хочу с заявками покопаться.


Так уже.
Автор топика
Спасибо:

aspirant

Фотография
Дата: 27.05.2011
Ответить


Жесть, убил вчера часов пять на эту асинхронную отправку. Прикол весь был в том, что в плазовском примере все работало, а в PlazaTrader все время выкидывало InvalidCastException. Причем под конец код отправки сообщения в обоих случаях был идентичен. Путем перебора всего что можно пять минут назад нашел решение: у наследника IP2AsyncSendEvent2 (в PlazaTrader - это MessageDispatcher внутри TransactionManager) не должно быть ничего (методов, свойств и т.д.) кроме void IP2AsyncSendEvent2.SendAsync2Reply(CP2BLMessage reply, uint errCode, long eventParam). Еврика!!!
Ничего пока не заливал. Попробую сделать вечером.
Спасибо:

esper

Фотография
Программист
Дата: 27.05.2011
Ответить


Возможно там просто атрибута [System.Runtime.InteropServices.ComVisible(true)] не было?
У меня в другом проекте такой код
Цитата:

/// <summary>
/// Объект обратного вызова для получения результата доставки сообщения
/// </summary>
[System.Runtime.InteropServices.ComVisible(true)]
public class SendAsync2Event : IP2AsyncSendEvent2
{
ExecutedEventHandler handler = null;

/// <summary>
/// Инициализировать объект обратного вызова
/// </summary>
/// <param name="handler">Делегат для вызова при доставке сообщения</param>
public SendAsync2Event(ExecutedEventHandler handler)
{
this.handler = handler;
}

/// <summary>
/// Метод вызывается после доставки сообщения плазой
/// </summary>
/// <param name="reply"></param>
/// <param name="errCode"></param>
/// <param name="type"></param>
void IP2AsyncSendEvent2.SendAsync2Reply(CP2BLMessage reply, uint errCode, long type)
{
if (handler != null)
{
handler(new OrderResult(reply, errCode, type));
}
}
}

работает без проблем.
Спасибо:

aspirant

Фотография
Дата: 27.05.2011
Ответить


esper Перейти
Возможно там просто атрибута [System.Runtime.InteropServices.ComVisible(true)] не было?


Забираю эврику обратноSad Дело действительно в [System.Runtime.InteropServices.ComVisible(true)] + класс обязательно должен быть public (в нашем случае MessageDispatcher). Без public атрибута [System.Runtime.InteropServices.ComVisible(true)] недостаточно. Его я поставил вчера на 30-ой минуте, но исключения сыпаться не перестали.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 27.05.2011
Ответить


aspirant Перейти
esper Перейти
Возможно там просто атрибута [System.Runtime.InteropServices.ComVisible(true)] не было?


Забираю эврику обратноSad Дело действительно в [System.Runtime.InteropServices.ComVisible(true)] + класс обязательно должен быть public (в нашем случае MessageDispatcher). Без public атрибута [System.Runtime.InteropServices.ComVisible(true)] недостаточно. Его я поставил вчера на 30-ой минуте, но исключения сыпаться не перестали.


А зачем закомментил AddMyTrade(0, orderTransactionId, trade);? Не работает?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 27.05.2011
Ответить


aspirant Перейти
esper Перейти
Возможно там просто атрибута [System.Runtime.InteropServices.ComVisible(true)] не было?


Забираю эврику обратноSad Дело действительно в [System.Runtime.InteropServices.ComVisible(true)] + класс обязательно должен быть public (в нашем случае MessageDispatcher). Без public атрибута [System.Runtime.InteropServices.ComVisible(true)] недостаточно. Его я поставил вчера на 30-ой минуте, но исключения сыпаться не перестали.


Мне кажется, достаточно только public сделать.
Автор топика
Спасибо:

aspirant

Фотография
Дата: 27.05.2011
Ответить


Mikhail Sukhov Перейти
А зачем закомментил AddMyTrade(0, orderTransactionId, trade);? Не работает?


Этого метода нетConfused У меня с ним не проект не компилился.
Спасибо:
1 2  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy