Творог
|
Дата: 24.02.2013
Продолжаю поток новичковских вопросов [rolleyes] Что такое Правило и Токен?
Например, создаю переменную rule. Как я её могу практически использовать во благо?
MarketRule<Security, MarketDepth> rule = MarketRuleHelper.WhenMarketDepthChanged(sec);
|
|
|
|
Спасибо:
|
|
|
|
|
|
Moadip
|
Дата: 24.02.2013
Как сделать такое событие, которое бы мониторило ордера и передавала в обработчик коллекцию активных заявок? Ну типа trader.ActiveOrders += actords => и т.д.
Класс, в нем таймер. По таймеру проверяется наличие активных заявок и вызывается событие.
Два вопроса.
Зачем это надо и как часто должен будет срабатывать таймер.
OrdersChanged - может это подойдет.
Что такое Правило и Токен?
Справку читать не пробовали? Событийная модель.
|
|
|
|
Спасибо:
|
|
|
|
|
|
Творог
|
Дата: 24.02.2013
Как сделать такое событие, которое бы мониторило ордера и передавала в обработчик коллекцию активных заявок? Ну типа trader.ActiveOrders += actords => и т.д.
Класс, в нем таймер. По таймеру проверяется наличие активных заявок и вызывается событие.
Два вопроса.
Зачем это надо и как часто должен будет срабатывать таймер.
OrdersChanged - может это подойдет.
Что такое Правило и Токен?
Справку читать не пробовали? Событийная модель.
Пока думаю над оптимальным алгоритмом. Получается, без всяких заморочек просто рефрешить таблицу и генерировать своё событие? А если периодичность задавать через MarketTimeChanged, там счёт идёт на единицы миллисекунд? А если такую функцию зациклить, то ведь лучше это сделать асинхронно, в другом потоке?
Справку читать пробовал, но не получилось. Не нашёл. Спасиб за наводку. Неплохо было бы делать ссылки в хэлпе на подобные материалы по ключевым словам, это вопрос по организации навигации.
|
|
|
|
Спасибо:
|
|
|
|
|
|
Moadip
|
Дата: 25.02.2013
Получается, без всяких заморочек просто рефрешить таблицу и генерировать своё событие?
Какую таблицу?[blink]
А если периодичность задавать через MarketTimeChanged, там счёт идёт на единицы миллисекунд?
Период срабатывания таймера можно задать любой. Хоть в мс, хоть нс.
А если такую функцию зациклить, то ведь лучше это сделать асинхронно, в другом потоке?
Зачем что то циклить. Если использовать таймер, то это тот же бесконечный цикл. Будет работать до тех пор, пока не остановить таймер.
Метод который вызывается по таймеру, будет отрабатывать в отдельном потоке.
Вы напишите зачем вам это надо, возможно это можно сделать без циклов, рекурсии, таймеров, потоков, async/await и прочей хрени.[smile]
|
|
|
|
Спасибо:
|
|
|
|
|
|
Творог
|
Дата: 25.02.2013
Сейчас у меня в QPILE так: раз в секунду пробегаюсь по заявкам. Если заявка активна, то беру её цену и проверяю насколько она адекватна текущей ситуации в стакане. Если не адекватна - снимаю. В следующую секунду выставляю новую заявку и по новой начинаю её мониторить.
|
|
|
|
Спасибо:
|
|
|
|
|
|
Moadip
|
Дата: 25.02.2013
|
|
|
|
Спасибо:
|
|
|
|
|
|
Творог
|
Дата: 25.02.2013
|
|
|
|
Спасибо:
|
|
|
|
|
|
Moadip
|
Дата: 25.02.2013
Нашли нужный инструмент, зарегистрировали стакан, создали правило.
_quikTrader.NewSecurities += securities =>
{
if (_security.IsNull())
{
_security = securities.FirstOrDefault(sec => sec.Code == _securityCode);
_quikTrader.RegisterMarketDepth(_security);
_security
.WhenMarketDepthChanged()
.Do(MarketDepthChaged)
.Apply();
}
};
...
private void MarketDepthChaged()
{
что то делаем
}
Если внутри стратегии, то вместо Apply(), Apply(this);
|
|
|
|
Спасибо:
|
|
|
|
|
|
Творог
|
Дата: 25.02.2013
А в чём преимущества правил перед событиями? В каких случаях предпочтительнее применять и те и другие?
|
|
|
|
Спасибо:
|
|
|
|
|
|
Moadip
|
Дата: 25.02.2013
Все зависит от конкретной ситуации.
Если на примере MarketDepthsChanged и WhenMarketDepthChanged
Допустим зарегистрировали стаканы по 10 инструментам.
И теперь каждый раз когда будет изменятся стакан по одному из этих инструментов, каждый раз будет срабатывать событие MarketDepthsChanged.
Что может быть не совсем удобно. Поэтому создаем правило для конкретного инструмента и обрабатываем изменение стакана именно по нему.
C правилами много чего можно делать. Почитайте справку, попробуйте применить, посмотрите как работает.
|
|
|
|
|
|