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

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


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

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

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

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


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

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

			base.OnStarting();
		}

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


        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) при создании эмулятора:

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

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

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




Спасибо:


ra81

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


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

Возможно он вот тут

base.Security.WhenNewTrades().Do(NewTrade).Apply(this);

Как вариант предлагается переписать в

this.Security.WhenNewTrades().Do(NewTrade).Apply(this);
Спасибо:

esper

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


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

Спасибо: Oppositus

Oppositus

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


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

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

Спасибо:


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

loading
clippy