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


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

Теги:


Спасибо:


< 1 2 3  >
frontman

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


Код
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);
			}
        }
Спасибо:

Alexander

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


frontman Перейти
Код
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);
			}
        }



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

оно?
Что такое Task.Factory.StartNew()?
Спасибо:

frontman

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


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

frontman

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


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

Alexander

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


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


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

frontman

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


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

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

Alexander

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


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


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

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

frontman

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


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

Alexander

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


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



Код
		/// <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.
Спасибо:

frontman

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


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

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

loading
clippy