EmulationTrader - как пройтись по всем сделкам?

EmulationTrader - как пройтись по всем сделкам?
Atom
8/23/2012


Здравствуйте.

Ситуация такая.

1. Скачал Гидрой тиковые сделки по фьючу RTS
2. Взял за основу SampleHistoryTesting
3. Заменил стратегию на собственную
4. Не работает :)

Если запустить SampleHistoryTesting - то все тестируется, данные по сделкам читаются, свечки приходят. То есть для SmaStrategy вызывается событие ProcessCandle, которое задано как

Code

		protected override void OnStarting()
		{
			_series
				.WhenCandlesFinished()
				.Do(ProcessCandle)
				.Apply(this);

			// запоминаем текущее положение относительно друг друга
			_isShortLessThenLong = ShortSma.LastValue < LongSma.LastValue;

			base.OnStarting();
		}


Моя же стратегия основана не на свечках, мне нужно обработать каждую сделку. Делаю так:

Code

        protected override void OnStarting()
        {
            base.Security.Exchange.IsSupportAtomicReRegister = false;

            this.SuspendRules(() =>
            {
                base.Security.WhenNewTrades().Do(NewTrade).Apply(this);
            });

            base.OnStarting();
        }


И метод NewTrade никогда не вызывается. Дополнительно пробовал:

1. Менял MarketTimeChangedInterval = TimeSpan.FromMilliseconds(1) при создании эмулятора:
Code

                m_Trader = new EmulationTrader(new[] { Sec }, new[] { Por }, Str)
                {
                    MarketTimeChangedInterval = TimeSpan.FromMilliseconds(1),
                    WorkingTime = Exchange.Rts.WorkingTime,
                    UseMarketDepth = false,
                };


2. Пробовал правило base.Security.WhenChanged().Do(NewTrade).Apply(this);

Вопрос - как заставить эмулятор прогнать через стратегию все исторические сделки, а не свечки? Спасибо.



Thanks:


ra81

Avatar
Date: 8/24/2012
Reply


Вообще сделки приходят нормально. Сам тестил на 4.1.2 версии стратегию со стоплосями и они бы не работали без сделок. В вашем коде вроде ничего не вижу кривого. Но где-то косяк есть это точно.

Возможно он вот тут
Code
base.Security.WhenNewTrades().Do(NewTrade).Apply(this);


Как вариант предлагается переписать в
Code
this.Security.WhenNewTrades().Do(NewTrade).Apply(this);
Thanks:

esper

Avatar
Date: 8/24/2012
Reply


Возможно, еще не хватает Trader.RegisterTrades.
Thanks: Oppositus

Oppositus

Avatar
Date: 8/24/2012
Reply


esper Go to
Возможно, еще не хватает Trader.RegisterTrades.


Да! С Trader.RegisterTrades все заработало.
Thanks:


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

loading
clippy