Тестирование на истории 4.0.21 вход по рынку всегда по худшей цене.

Тестирование на истории 4.0.21 вход по рынку всегда по худшей цене.
Atom
3/10/2012
Moadip


Перешел на 4.0.21, запускаю тест на истории и наблюдаю радикальноотличающийся график эквити. Перебрал несколько прошлых сборок: 4.0.17, 4.0.18, 4.0.19, 4.0.20 график примерно одинаковый.

и текущая

[blink] Ну все думаю, накрылся мой грааль.[biggrin]

Запускаю тестовые примеры 4.0.20 и 4.0.21 графики примерно одинаковые(для ускорения тестирования период взят 1месяц)

[blink]

Ковыряние в своем коде результатов не дало. Причина нашлась после изучения отчетов. При сравнении аналогичных входов на 4.0.20 и 4.0.21 вход всегдабыл примерно на 100п. хуже. Почему 100п, у меня стояло проскальзывание в 100п.

Меняю в тестовых примерах вход с помощью котирования

	
	// если произошло пересечение
	if (_isShortLessThenLong != isShortLessThenLong)
	{
		// если короткая меньше чем длинная, то продажа, иначе, покупка.
		var direction = isShortLessThenLong ? OrderDirections.Sell : OrderDirections.Buy;

 		// создаем заявку
                var order = this.CreateOrder(direction, Security.GetMarketPrice(direction), Volume);

		// регистрируем заявку (обычным способом - лимитированной заявкой)
		// RegisterOrder(order);

		// регистрируем заявку (через котирование)
		var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
		ChildStrategies.Add(strategy);

		// запоминаем текущее положение относительно друг друга
		_isShortLessThenLong = isShortLessThenLong;
	}

на вход по рынку с проскальзыванием


	// если произошло пересечение
	if (_isShortLessThenLong != isShortLessThenLong)
	{
		// если короткая меньше чем длинная, то продажа, иначе, покупка.
		var direction = isShortLessThenLong ? OrderDirections.Sell : OrderDirections.Buy;

                
                var slip = Security.MinStepSize * 20;//проскальзование 100п.
                var price = isShortLessThenLong
	                    ? Security.GetMarketPrice(direction) - slip
		            : Security.GetMarketPrice(direction) + slip;
                

		// создаем заявку
                var order = this.CreateOrder(direction, price, Volume);

		// регистрируем заявку (обычным способом - лимитированной заявкой)
		RegisterOrder(order);

		// регистрируем заявку (через котирование)
		//var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
		//ChildStrategies.Add(strategy);

		// запоминаем текущее положение относительно друг друга
		_isShortLessThenLong = isShortLessThenLong;
	}

Картинка примерно не изменилась.

Ок, ставлю проскальзывание в 10 000п.

Т.е. вход по рынку происходит не по лучшей возможной цене, а по худшей и с максимальным проскальзыванием.




Thanks:


< 1 2 3 
InsiderHSE

Avatar
Date: 11/12/2012
Reply


Версия 4.1.5 Тестирую стратегию в EmulationTrader при UseMarketDepth = false. При этом лимитные заявки по заведомо лучшей цене исполняются по цене заявки, а не по цене последней сделки. ТО есть если послать лимитку на покупку фьючерса ртс по 1000000, то сделка пройдет по цене 1000000. При этом параметр EmulationTrader.MarketEmulator.Settings.Slippage на результат не влияет. Задача состоит в том, чтобы совершать сделки по LastPrice с фиксированным проскальзыванием против меня, например, 10 пипсов. Раньше (версии 4.0.х) для этого я входил лимитником с ценой на 1000 пипсов хуже, что обеспечивало мгновенную сделку по LastPrice с проскальзыванием, указанным в EmulationTrader.MarketEmulator.Settings.Slippage. Можно ли получить такую же функциональность в 4.1.5?

Thanks:

Sergey Masyura

Avatar
Date: 11/13/2012
Reply


InsiderHSE: Версия 4.1.5 Тестирую стратегию в EmulationTrader при UseMarketDepth = false. При этом лимитные заявки по заведомо лучшей цене исполняются по цене заявки, а не по цене последней сделки. ТО есть если послать лимитку на покупку фьючерса ртс по 1000000, то сделка пройдет по цене 1000000. При этом параметр EmulationTrader.MarketEmulator.Settings.Slippage на результат не влияет. Задача состоит в том, чтобы совершать сделки по LastPrice с фиксированным проскальзыванием против меня, например, 10 пипсов. Раньше (версии 4.0.х) для этого я входил лимитником с ценой на 1000 пипсов хуже, что обеспечивало мгновенную сделку по LastPrice с проскальзыванием, указанным в EmulationTrader.MarketEmulator.Settings.Slippage. Можно ли получить такую же функциональность в 4.1.5?

Если исполняется по цене заявки, логичный workaround для тестирования выставлять заявку по LastPrice плюс проскальзывание - вероятно результат будет более ожидаем.

Thanks:

InsiderHSE

Avatar
Date: 11/13/2012
Reply


"Если исполняется по цене заявки, логичный workaround для тестирования выставлять заявку по LastPrice плюс проскальзывание - вероятно результат будет более ожидаем"

Обновился до версии 20971 из транка, все работает как надо! Спасибо =)

Thanks:
< 1 2 3 

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

loading
clippy