Остановка стратегий

Остановка стратегий
Atom
11/14/2011


Ребят а не у кого не было проблем с остановкой стратегии?
У меня почему то иногда стратегии не стопоряться... В лог выводиться что стратегия "останавливается", а вот что она остановлена так и не приходит сообщение... Может у кого то есть подозрения по какой причине это может происходить?

Tags:


Thanks:


< 1 2 3  >
frontman

Avatar
Date: 11/14/2011
Reply


Code
protected override void OnStarting()
		{
			this.When(Order.NewTrades()).Do(trades => Task.Factory.StartNew(() => NewTrades(trades)));
			base.OnStarting();
		}

    	private void NewTrades(IEnumerable<MyTrade> trads)
        {
			foreach (var profit in trads.Select(trade => new ProtectedStrategy(trade, ProtectivDelta, ProtectivSlipPage)))
			{
				profit.CreateNewOrder += order =>
											 {
												 OnCreateNewOrder(order);
												 this.When(order.NewTrades())
													 .Do(tr => OnChangedCloseTrade(tr.Sum(t => t.Trade.Volume)));
											 };
				ChildStrategies.Add(profit);
			}
        }
Thanks:

Alexander

Avatar
Date: 11/14/2011
Reply


frontman Go to
Code
protected override void OnStarting()
		{
			this.When(Order.NewTrades()).Do(trades => Task.Factory.StartNew(() => NewTrades(trades)));
			base.OnStarting();
		}

    	private void NewTrades(IEnumerable<MyTrade> trads)
        {
			foreach (var profit in trads.Select(trade => new ProtectedStrategy(trade, ProtectivDelta, ProtectivSlipPage)))
			{
				profit.CreateNewOrder += order =>
											 {
												 OnCreateNewOrder(order);
												 this.When(order.NewTrades())
													 .Do(tr => OnChangedCloseTrade(tr.Sum(t => t.Trade.Volume)));
											 };
				ChildStrategies.Add(profit);
			}
        }



И где она тут?
Quote:
this.When(Order.NewTrades()).Do(trades => Task.Factory.StartNew(() => NewTrades(trades)));

оно?
Что такое Task.Factory.StartNew()?
Thanks:

frontman

Avatar
Date: 11/14/2011
Reply


Новый поток...
Нет все таки помоем причина в Periodical вот этот вариант который я вам скинул(уже исправленный) работает.
Мне кажется если исп Periodical правило не перестанет работать даже если стратегия стопиться...
Thanks:

frontman

Avatar
Date: 11/14/2011
Reply


Вот то что я вам скинул это внутренности "Стратегия в корзине 4"
Thanks:

Alexander

Avatar
Date: 11/14/2011
Reply


frontman Go to
Новый поток...
Нет все таки помоем причина в Periodical вот этот вариант который я вам скинул(уже исправленный) работает.
Мне кажется если исп Periodical правило не перестанет работать даже если стратегия стопиться...


Так скиньте задание и добавление вашей 4 стратегии.
я не вижу Periodical
Thanks:

frontman

Avatar
Date: 11/14/2011
Reply


Александр ну this.When(Order.NewTrades()).Do(trades => Task.Factory.StartNew(() => NewTrades(trades))); было с Periodical...

Вообщем смотрите я убрал его отовсюду... И у меня все стало норм...
Дайте доступ я сам подправлю))
Thanks:

Alexander

Avatar
Date: 11/14/2011
Reply


frontman Go to
Дайте доступ я сам подправлю))


к какому файлу \ методу?

ещё раз вопрос - как именно у вас был описан Periodical, что передано в качестве canFinish?
Thanks:

frontman

Avatar
Date: 11/14/2011
Reply


Флаг. Его стратегия материнская в true ставит перед тем как остановить стратегию.
Да даже если бы и не ставила , все равно остановка должна была правило убить...
"к какому файлу \ методу?" - ну к тому где метод Periodical описан...
Thanks:

Alexander

Avatar
Date: 11/14/2011
Reply


frontman Go to
Флаг. Его стратегия материнская в true ставит перед тем как остановить стратегию.
Да даже если бы и не ставила , все равно остановка должна была правило убить...
"к какому файлу \ методу?" - ну к тому где метод Periodical описан...



Code
		/// <summary>
		/// Сделать правило периодичным (будет вызываться до тех пор, пока <paramref name="canFinish"/> не вернет true).
		/// </summary>
		/// <param name="canFinish">Критерий окончания периодичности.</param>
		/// <returns>Правило.</returns>
		public StrategyRule Periodical(Func<bool> canFinish)
		{
			if (canFinish == null)
				throw new ArgumentNullException("canFinish");

			CanFinish = canFinish;
			return this;
		}



Какой флаг? Там функцию надо передавать. Дубль 3 - опишите подробнее свой Periodical.
Thanks:

frontman

Avatar
Date: 11/14/2011
Reply


Хм... Понял))
Ну вот смотрите если записать вот так например
this.When(Order.NewTrades()).Do(trades => Task.Factory.StartNew(() => NewTrades(trades))).Periodical(() => IsStoped || ProcessState == ProcessStates.Stopping);
Где IsStoped - тот самый флаг, то остановка нормально работает...
Thanks:
< 1 2 3  >

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

loading
clippy