Не успевает сработать приостановка правил

Не успевает сработать приостановка правил
Atom
12/15/2011


Котирование. Хочу запустить стратегию с приостановленными правилами, для чего использую следующий код
Code

this.SuspendRules();
base.OnStarting();
this.SuspendRules();


Тем не менее, прежде чем второй SuspendRules() срабатывает стратегия успевает 1 раз провести котирование. По-видимому, в base.OnStarting() SuspendRules снимается. Есть ли способ запустить котирование с приостановленными правилами?

Tags:


Thanks:


freelancer

Avatar
Date: 12/15/2011
Reply


Может так заработает ?

Code
SuspendRules(() =>
{
	base.OnStarting();
});
Thanks:

InsiderHSE

Avatar
Date: 12/15/2011
Reply


freelancer Go to
Может так заработает ?

Code
SuspendRules(() =>
{
	base.OnStarting();
});


Нет, это по сути то же самое. Флажок IsRulesSuspended снимается внутри base.OnStarting()
Thanks:

Alexander

Avatar
Date: 12/15/2011
Reply


InsiderHSE Go to
Флажок IsRulesSuspended снимается внутри base.OnStarting()


каким образом?

SuspendRules нигде не снимается

Флаг меняется лишь методами SuspendRules \ ResumeRules
Thanks:

InsiderHSE

Avatar
Date: 12/16/2011
Reply


Alexander Mukhanchikov Go to
InsiderHSE Go to
Флажок IsRulesSuspended снимается внутри base.OnStarting()


каким образом?

SuspendRules нигде не снимается

Флаг меняется лишь методами SuspendRules \ ResumeRules


Могу предположить, что ResumeRules вызывается внутри base.OnStarting() =). Иначе как тогда стратегия успевает провести котирование? Или это баг?
Thanks:

Alexander

Avatar
Date: 12/16/2011
Reply


InsiderHSE Go to
Alexander Mukhanchikov Go to
InsiderHSE Go to
Флажок IsRulesSuspended снимается внутри base.OnStarting()


каким образом?

SuspendRules нигде не снимается

Флаг меняется лишь методами SuspendRules \ ResumeRules


Могу предположить, что ResumeRules вызывается внутри base.OnStarting() =). Иначе как тогда стратегия успевает провести котирование? Или это баг?


Внутри base.OnStarting() такого нет, если base - это Strategy
Чтобы понимать о чём речь, скиньте минимальный код стратегии, для которого это всё воспроизводится.
Thanks:

InsiderHSE

Avatar
Date: 12/16/2011
Reply


base это BestByPriceQuotingStrategy

Code

using System;
using StockSharp.Algo.Strategies;
using StockSharp.BusinessEntities;

namespace OptionQuoter.Models
{
	using System.Diagnostics;

	using Ecng.Collections;
	using Ecng.Common;

	public class SingleOptionQuotingStrategy2 : BestByPriceQuotingStrategy
	{
		public SingleOptionQuotingStrategy2(Order order, Unit betsPriceOffset, Unit theorpriceOffset)
			: base(order, betsPriceOffset)
		{
			TheorPriceOffset = theorpriceOffset;
		}
		public SingleOptionQuotingStrategy2(OrderDirections dir, decimal vol, Unit theorpriceOffset)
			: base(dir, vol) { TheorPriceOffset = theorpriceOffset; }

		public Unit TheorPriceOffset { get; private set; }

		protected override void ProcessQuoting()
		{
			Debug.WriteLine("Время: {0}; Вызван ProcessQuoting.".Put(DateTime.Now.ToString("HH:mm:ss.fff")));
			base.ProcessQuoting();
		}

		protected override void OnStarting()
		{

			this.SuspendRules();
			base.OnStarting();
			this.SuspendRules();
			this.Rules.ForEach(r => r.EnableLog(true));

		}
	}
}


В дебаггере появляется
Время: 16:44:05.447; Вызван ProcessQuoting.
хотя судя по коду - не должно.
Thanks:

Alexander

Avatar
Date: 12/17/2011
Reply


в 4.0.9 будет фикс
Thanks: InsiderHSE


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

loading
clippy