TimeFrameStrategy стратегия не видит своих своих сделок

TimeFrameStrategy стратегия не видит своих своих сделок
Atom
16.10.2012
Maniac


После перехода на 4.1.5 стратегия TimeFrameStrategy перестала видеть свои сделки. Итерации идут, в OnProcess заходит. Там регистрируются заявки RegisterOrder, и по ним проходят сделки. В логах эти сделки идут только от Trader, от Strategy их нет, соответственно, стратегия эти сделки не видит, и позиция не менятся. (в 4.1.4 все работало корректно). Возможно, что [url=http://www.stocksharp.com/forum/3086/S--4-1-5--pieriestalo-srabatyvat--pravilo-WhenNewMyTrades/]S# 4.1.5: перестало срабатывать правило WhenNewMyTrades()[/url] по той же самой причине: стратегия не видит своих сделок.


Теги:


Спасибо:


Mikhail Sukhov

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


Тоже эмулятор?

Спасибо:

Maniac

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


Нет, не эмулятор, терминал - Quik.

Спасибо:

Mikhail Sukhov

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


[quote=Maniac;21826]Нет, не эмулятор, терминал - Quik.[/quote]

Там событие не вызывается потому что в эмуляторе ошибка. А почему у вас - не понятно. Надо больше логов.

Спасибо:

Maniac

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


Создание стратегии и OnProcess

[code=csharp] _strategy = new ChaosStrategy(_timeFrame) { Volume = 1, Security = _sec, Portfolio = _portfolio, Trader = _trader, CancelOrdersWhenStopping = false, Name = "Chaos", WaitAllTrades = true };

			_logManager.Sources.Add(_strategy);	// добавление логирования

	public ChaosStrategy(TimeSpan timeFrame)
		: base(timeFrame)
	{
		
	}
	
	protected override void OnStarted()
	{
		base.StopOrderRegistered += o => this.AddInfoLog("New StopOrder {3}: Id={0}, Securuty={1}, State={2}", o.Id, o.Security.Code, o.State, o.Type);
		base.StopOrderChanged += o => this.AddInfoLog("Стоп заявка {0}, объём {2}, баланс {3}, TransactionId={4}, Price={5} изменилась на {1} в {7}, Latency={6}",
			o.Id, o.State, o.Volume, o.Balance, o.TransactionId, o.Price, o.LatencyCancellation, o.Time);
		base.NewMyTrades += trades =>
		{
			foreach (var myTrade in trades)
			{
				var trade = myTrade.Trade;
				this.AddInfoLog("ChaosStrategy Trade: Id={0}, {5}, Price={1}, Security={2}, Volume={3}, Date={4}",
					trade.Id, trade.Price, trade.Security.Code, trade.Volume, trade.Time, trade.OrderDirection);
			}

			Thread.Sleep(500);

			if (base.PositionManager.Position != 0)
			{
				// protect current position with stop order
				CreateTakeProfitAndStopLimit();
			}
		};
		base.OnStarted();
	}

	protected override ProcessResults OnProcess()
	{
		if (PositionManager.Position == 0)
		{
		MakeTrade(_direction);
		_direction = _direction.Invert();
		}
		this.AddInfoLog("Очередная итерация. Позиция: {0}", this.Position.ToString());
		return ProcessResults.Continue;
	}

	public void MakeTrade(OrderDirections _direction)
	{
		// создаем заявку
		decimal _price = _direction == OrderDirections.Buy ? 
			Security.BestAsk.Price + Security.MinStepSize * 10 : Security.BestAsk.Price - Security.MinStepSize * 10;
		var order = this.CreateOrder(_direction, _price, Volume);

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

Логи

[SPOILER] 2012.10.16 22:24:27.406| |Chaos |Стратегия запущена. [0,-1]. Позиция при старте 0. 2012.10.16 22:24:57.390| |QuikTrader|RegisterOrder: 80642079/0 Покупка Цена=1926,0 Объем=1 Сост=None Бал=1 2012.10.16 22:24:57.406| |Chaos |Очередная итерация. Позиция: 0 2012.10.16 22:24:58.328| |QuikTrader|New order: 80642080/1921961359 Покупка Цена=1926 Объем=1 Сост=Done Бал=0 2012.10.16 22:24:58.328| |QuikTrader|Order changed: 80642080/1921961359 Покупка Цена=1926 Объем=1 Сост=Done Бал=0 2012.10.16 22:24:58.343| |QuikTrader|QuikTrader Trade : Id=1184336309, Price=1924,5, Security=LKOH, Volume=1, Date=16.10.2012 22:24:40 2012.10.16 22:25:27.375| |QuikTrader|RegisterOrder: 80642081/0 Продажа Цена=1921,7 Объем=1 Сост=None Бал=1 2012.10.16 22:25:27.375| |Chaos |Очередная итерация. Позиция: 0 2012.10.16 22:25:28.328| |QuikTrader|New order: 80642082/1921961957 Продажа Цена=1921,7 Объем=1 Сост=Done Бал=0 2012.10.16 22:25:28.328| |QuikTrader|QuikTrader Trade : Id=1184336657, Price=1921,8, Security=LKOH, Volume=1, Date=16.10.2012 22:25:10 2012.10.16 22:25:28.328| |QuikTrader|Order changed: 80642082/1921961957 Продажа Цена=1921,7 Объем=1 Сост=Done Бал=0 2012.10.16 22:25:57.375| |QuikTrader|RegisterOrder: 80642083/0 Покупка Цена=1924,4 Объем=1 Сост=None Бал=1 2012.10.16 22:25:57.375| |Chaos |Очередная итерация. Позиция: 0 2012.10.16 22:25:58.484| |QuikTrader|New order: 80642084/1921962719 Покупка Цена=1924,4 Объем=1 Сост=Done Бал=0 2012.10.16 22:25:58.484| |QuikTrader|QuikTrader Trade : Id=1184337097, Price=1923,4, Security=LKOH, Volume=1, Date=16.10.2012 22:25:40 2012.10.16 22:25:58.484| |QuikTrader|Order changed: 80642084/1921962719 Покупка Цена=1924,4 Объем=1 Сост=Done Бал=0 2012.10.16 22:26:27.375| |QuikTrader|RegisterOrder: 80642085/0 Продажа Цена=1922,1 Объем=1 Сост=None Бал=1 2012.10.16 22:26:27.375| |Chaos |Очередная итерация. Позиция: 0 2012.10.16 22:26:27.859| |QuikTrader|New order: 80642086/1921962972 Продажа Цена=1922,1 Объем=1 Сост=Active Бал=1 2012.10.16 22:26:27.875| |QuikTrader|Order changed: 80642086/1921962972 Продажа Цена=1922,1 Объем=1 Сост=Active Бал=1 2012.10.16 22:26:34.656| |QuikTrader|QuikTrader Trade : Id=1184337296, Price=1922,1, Security=LKOH, Volume=1, Date=16.10.2012 22:26:16 2012.10.16 22:26:34.656| |QuikTrader|Order changed: 80642086/1921962972 Продажа Цена=1922,1 Объем=1 Сост=Done Бал=0 2012.10.16 22:26:57.375| |QuikTrader|RegisterOrder: 80642087/0 Покупка Цена=1923,1 Объем=1 Сост=None Бал=1 2012.10.16 22:26:57.375| |Chaos |Очередная итерация. Позиция: 0 2012.10.16 22:26:57.859| |QuikTrader|New order: 80642088/1921963374 Покупка Цена=1923,1 Объем=1 Сост=Done Бал=0 2012.10.16 22:26:57.859| |QuikTrader|QuikTrader Trade : Id=1184337528, Price=1922,1, Security=LKOH, Volume=1, Date=16.10.2012 22:26:40 2012.10.16 22:26:57.859| |QuikTrader|Order changed: 80642088/1921963374 Покупка Цена=1923,1 Объем=1 Сост=Done Бал=0 2012.10.16 22:27:03.156| |Logger |Останавливаем работу ... 2012.10.16 22:27:04.625| |Chaos |Стратегия останавливается. [0,-1]. Позиция при старте 0. [/SPOILER]

Спасибо:

Maniac

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


В OnStarted подписался на события OrderRegistering, OrderRegistered, OrderRegisterFailed [code=csharp] base.OrderRegistering += o => this.AddInfoLog("OrderRegistering {3}: Id={0}, Securuty={1}, State={2}", o.Id, o.Security.Code, o.State, o.Type); base.OrderRegistered += o => this.AddInfoLog("OrderRegistered {3}: Id={0}, Securuty={1}, State={2}", o.Id, o.Security.Code, o.State, o.Type); base.OrderRegisterFailed += o => this.AddInfoLog("OrderRegisterFailed {3} {4}: Id={0}, Securuty={1}, State={2}", o.Order.Id, o.Order.Security.Code, o.Order.State, o.Order.Type, o.Error.Message); [/code] В логах есть только OrderRegistering, к-рый, видимо так и не выполняется, т.к. при остановке стратегии возникает предупреждение: Стратегия в состоянии Stopping. Регистрация заявки невозможна.

[SPOILER]2012.10.17 09:58:27.117| |Chaos |Стратегия запущена. [0,-1]. Позиция при старте 0. 2012.10.17 09:58:56.960| |Chaos |OrderRegistering Limit: Id=0, Securuty=LKOH, State=None 2012.10.17 09:58:56.975| |QuikTrader|RegisterOrder: 35873126/0 Покупка Цена=1934,8 Объем=1 Сост=None Бал=1 2012.10.17 09:58:57.007| |Chaos |Очередная итерация. Позиция: 0 2012.10.17 09:58:57.599| |QuikTrader|New order: 35873127/1922401126 Покупка Цена=1934,8 Объем=1 Сост=Done Бал=0 2012.10.17 09:58:57.615| |QuikTrader|Order changed: 35873127/1922401126 Покупка Цена=1934,8 Объем=1 Сост=Done Бал=0 2012.10.17 09:58:57.631| |QuikTrader|QuikTrader Trade : Id=1184599265, Price=1933,8, Security=LKOH, Volume=1, Date=17.10.2012 9:58:56 2012.10.17 09:59:26.974| |Chaos |OrderRegistering Limit: Id=0, Securuty=LKOH, State=None 2012.10.17 09:59:26.974| |QuikTrader|RegisterOrder: 35873128/0 Продажа Цена=1932,8 Объем=1 Сост=None Бал=1 2012.10.17 09:59:26.974| |Chaos |Очередная итерация. Позиция: 0 2012.10.17 09:59:27.551| |QuikTrader|New order: 35873129/1922401509 Продажа Цена=1932,8 Объем=1 Сост=Done Бал=0 2012.10.17 09:59:27.551| |QuikTrader|Order changed: 35873129/1922401509 Продажа Цена=1932,8 Объем=1 Сост=Done Бал=0 2012.10.17 09:59:27.551| |QuikTrader|QuikTrader Trade : Id=1184599480, Price=1933,2, Security=LKOH, Volume=1, Date=17.10.2012 9:59:26 2012.10.17 09:59:56.989| |Chaos |OrderRegistering Limit: Id=0, Securuty=LKOH, State=None 2012.10.17 09:59:56.989| |QuikTrader|RegisterOrder: 35873130/0 Покупка Цена=1934,8 Объем=1 Сост=None Бал=1 2012.10.17 09:59:56.989| |Chaos |Очередная итерация. Позиция: 0 2012.10.17 09:59:57.566| |QuikTrader|New order: 35873131/1922401858 Покупка Цена=1934,8 Объем=1 Сост=Done Бал=0 2012.10.17 09:59:57.566| |QuikTrader|QuikTrader Trade : Id=1184599648, Price=1933,8, Security=LKOH, Volume=1, Date=17.10.2012 9:59:56 2012.10.17 09:59:57.566| |QuikTrader|Order changed: 35873131/1922401858 Покупка Цена=1934,8 Объем=1 Сост=Done Бал=0 2012.10.17 09:59:59.001| |Logger |Останавливаем работу ... 2012.10.17 10:00:00.764| |Chaos |Стратегия останавливается. [0,-1]. Позиция при старте 0. 2012.10.17 10:00:00.764|Warning|Chaos |Стратегия в состоянии Stopping. Регистрация заявки невозможна. 2012.10.17 10:00:00.764| |Chaos |Очередная итерация. Позиция: 0 [/SPOILER]

Спасибо:

esper

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


Да, это бага. Спасибо за логи.

Спасибо:

Ant.On.

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


В теме [url=http://stocksharp.com/forum/3086/S--4-1-5--pieriestalo-srabatyvat--pravilo-WhenNewMyTrades/]S# 4.1.5: перестало срабатывать правило WhenNewMyTrades()[/url] тоже был не эмулятор (с эмулятором отдельная проблема). Видимо там та же ошибка.

Спасибо:

Mikhail Sukhov

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


[quote=esper;21834]Да, это бага. Спасибо за логи.[/quote]

Залили на КП. Просьба проверить как можно быстрее, исправлена ли ошибка.

Спасибо: Maniac

Maniac

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


Да, сделки пошли. Спасибо!

Спасибо:


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

loading
clippy