NullReferenceException при выставлении ордера

NullReferenceException при выставлении ордера
Atom
2/24/2011
Greene-nsk


Михаил, добрый вечер! Подскажите, пожалуйста, с чем может быть связана ошибка ниже. Я что-то поправил, раньше работало. Сейчас перестало. В любом случае хорошо б ее обработать и выдать что не так.


            new Order
            {
                Type = OrderTypes.Limit,
                Portfolio = Const.SmartInstance.Portfolio(Const.Params.PortfolioName),
                Volume = this.Shares,
                Price = this.Price,
                Security = Const.SmartInstance.Security(this.Symbol),
                Direction = OrderDirections.Sell,
            };

24.02.2011 18:54:15 [OpenWealth.StockSharp.MegaQuotingStrategy.RegisterOrder] Регистрация ордера RTS-3.11 -1*186380 Limit ST3276-RF-01 None  отстаток: 0 время снятия: 
24.02.2011 18:54:16 [OpenWealth.StockSharp.SmartCOM.<Init>b__5] ERROR: Ошибка обработки данных System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.
   в Ecng.Trading.Algo.Strategies.Strategy.RegisterOrder(Order order)
   в OpenWealth.StockSharp.MegaQuotingStrategy.RegisterOrder()


Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 2/24/2011
Reply


Strategy.Trader == null. Видимо стратегия не зарегистрирована.

Thanks:

Greene-nsk

Avatar
Date: 2/24/2011
Reply


Mikhail Sukhov: Strategy.Trader == null. Видимо стратегия не зарегистрирована.

Хм.. история такая:


StrategyManager = new RealTimeStrategyManager(Const.SmartInstance.Trader);
StrategyManager.Register(sAdapter as AdapterStrategy, portfolio, security);

=== public class AdapterStrategy : TimeFrameStrategy ===
var strategy_parent = new BatchStrategy(BatchFinishModes.First) { IsParallel = true };
ProcessOrderStrategy strategy_for_alert = new ProcessOrderStrategy(WealthStrategy, alert);
strategy_parent.ChildStrategies.Add(strategy_for_alert);
base.ChildStrategies.Add(strategy_parent);

=== class ProcessOrderStrategy : ActionStrategy ===
Strategy strategy = new MegaQuotingStrategy(_Order, _PriceDiffToMove, _PriceDiffMax, _Attempts, _MinInterval);
base.ChildStrategies.Add(strategy);

=== class MegaQuotingStrategy : Strategy ===
base.RegisterOrder(_Order);

Thanks:

Mikhail Sukhov

Avatar
Date: 2/24/2011
Reply


А точно в начале регистрация стратегии присходит, а уже потом добавление дочерних стратегий?

Thanks:

Greene-nsk

Avatar
Date: 2/24/2011
Reply


Mikhail Sukhov: А точно в начале регистрация стратегии присходит, а уже потом добавление дочерних стратегий?

Все. Нашел в чем косяк. Я перенес регистрацию ордера из OnRunning() в конструктор, после этого он сломался. Глупость, конечно. Не подумал. Спасибо за помощь!

Thanks:


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

loading
clippy