← Zurück

WhenMarketDepthChanged для ContinuousSecurity не срабатывает

Версия 4.1.19.

  public class MyStrategy : Strategy
  {
      protected override void OnStarted()
      {
          Security.WhenMarketDepthChanged().Do(() =>
          {
              // Срабатывает если Security типа Security
              // Не срабатывает если Security типа ContinuousSecurity
          })
          .Apply(this);

          base.OnStarted();
      }
  }
```Правила типа WhenNewTrades, WhenChanged для ContinuousSecurity срабатывают.

War dieses Thema hilfreich?

Thema teilen

Kommentare (2)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

esper
esper

Покажите код где создаете сам инструмент.

vk37
vk37 Autor
_securitiesToRegister = new[] { "RI@CONTINUOUS" };
var waitForContinuousSecuritiesToBeBuildTask = Task.Factory.StartNew(() =>
{
    if (_securitiesToRegister != null)
    {
        foreach (var continuousSecurityId in _securitiesToRegister.Where(s => s.EndsWith("@CONTINUOUS")))
        {
            var continuousSecurity = new ContinuousSecurity()
            {
                ExchangeBoard = ExchangeBoard.Forts,
                Id = continuousSecurityId,
            };

            foreach (var component in ContinuousSecurityStore.GetComponents(continuousSecurityId).Where(c => c.Value > Trader.CurrentTime))
            {
                Security security = null;

                while (security == null)
                {
                    security = Trader.Securities.FirstOrDefault(s => s.Id == component.Key);
                    Thread.Sleep(100);
                }

                continuousSecurity.ExpirationJumps.Add(security, component.Value);
            }

            continuousSecurity.Trader = Trader;
            Securities.Add(continuousSecurity);
        }
    }
});

if (!waitForContinuousSecuritiesToBeBuildTask.Wait(TimeSpan.FromSeconds(15)))
{
    Log.ErrorFormat("Составные инструменты не сформированы в заданный отрезок времени");
    return ConnectSuccess = false;
}
public class ContinuousSecurityStore
{
    public static Dictionary<string, DateTime> GetComponents(string continuousSecurityId)
    {
        switch (continuousSecurityId)
        {
            case "RI@CONTINUOUS":
                return new Dictionary<string, DateTime>()
                {
                    {"RIU3@FORTS", new DateTime(2013, 9, 16)},
                    {"RIZ3@FORTS", new DateTime(2013, 12, 16)},
                    {"RIH4@FORTS", new DateTime(2014, 3, 17)},
                };
            default:
                throw new NotSupportedException();
        }
    }
}