Для работы со свечками в ActionStrategy доступны
NewCandle(CandleToken)
Changed(Candle, ICandleManager)
Finished(Candle, ICandleManager)
А как получить доступ к _candleManager.CandlesFinished() ? т.е. как вызывать Action каждый раз по окончанию свечи ? Я делаю так:
When(_candleToken.NewCandle()).Do(delegate()
{
var finishedCandle = _candleManager.GetTimeFrameCandles(Security, _timeFrame, 2).FirstOrDefault();
}).MakePeriodical();
Но это явно не джедайский подход, хотелось бы что-то поэлегатнее, в идеале в духе _candleManager.CandlesFinished() - чтобы сразу получать список законченных свечек и работать с ними как-то так:
When(_candleToken.NewCandleFinished()).Do(Action(Candle newCandle);
コメント (18)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
When(_candleToken.NewCandleFinished()).Do(Action(Candle newCandle);
Как передать в метод OnCandlesFinished сформированные свечи?
this .When(_candleToken.CandlesFinished()) .Do(OnCandlesFinished);
Второе событие вызывается отлично. А первое - ни разу не вызвалось. Оно должно вызываться при каждом изменении цены инструмента?
При каждом изменении инструмента. А вот кода меняется сам инструмент - вопрос. Если Квик - то он никогда не меняется.
В документации http://stocksharp.com/doc/html/8c0327db-494a-4fe0-aba8-0d4b93dea60e.htm есть фрагмент:
this .When(base.Security.Changed()) .Do(ReHedge);
В документации http://stocksharp.com/doc/html/8c0327db-494a-4fe0-aba8-0d4b93dea60e.htm есть фрагмент:
this .When(base.Security.Changed()) .Do(ReHedge);
Понятно.
Тогда пример: Security.LastTrade.Price = 190000 (фьючерс RIU1) Нужно поставить событие на условие превышения Security.LastTrade.Price уровня 190200.
Ни так, ни эдак MyAction не запускается. :(
Наверное не запущен стакан :)
Стакан не запущен, но ведь речь идет не про BestBidPriceMore/BestAskPriceMore, а про LastTradePriceMore.
А значение Security.LastTrade.Price меняется синхронно с данными в квике.
Включил экспорт стакана
Ничего не изменилось, события не вызываются.
_trader.RegisterQuotes(_strategy.Security);
Тоже ни разу не вызывается и ничего не передается.
Потому что Квик транслирует изменения по таблице, а не по инструменту. В таблице что-то визуально изменяется?
Цифры в таблице Квика не меняются. Цвет строки меняется (красный - зеленый) в соответствии с ценой.
Михаил, у меня не вызывается и LastTradePriceMore. Хотя цена последней сделки передается правильно и регулярно. CandlesFinished тоже работает безукоризненно.
Это особенность квика. SecurityChanged не приходит, т.к. ничего физически в таблице не меняется. В 3.2.5 были изменения немного логики работы, может поможет.
Как вариант - добавить дополнительную колонку с последней ценой инструмента, тогда SecurityChanged приходить будет.