NullReferenceException при выставлении ордера
Atom Ответить
24.02.2011


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

Код

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()



Теги:


Спасибо:




4 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 24.02.2011
Ответить


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

Greene-nsk

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


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);
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 24.02.2011
Ответить


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

Greene-nsk

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


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


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


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

loading
clippy