Написал каркас для торговой системы по итерационной модели: есть базовый класс и класс стратегии.
Создаю заявку на покупку в классе стратегии регистрирую ее - все хорошо.
Но после этого хочу проверить ордер с помощью order.IsMatched() - пишет false постоянно даже когда стратегия исполняет ордера.
пробовал ```csharp this._order.IsMatched() и просто _order.IsMatched() и this.Trader.GetPosition(Portfolio,Security,).CurrentValue ) и просто Trader.GetPosition(Portfolio,Security,).CurrentValue )
Конструктор стратегии с класса стратегии:
```csharp
public DartWeiderStretegy(CandleManager candleManager, TimeSpan timeFrame, CandleSeries series) : base(timeFrame)
{
_candleManager = candleManager;
_timeFrame = TimeFrame;
_series = series;
}
Запуск стратегии с основного класса:
_series = new CandleSeries(typeof(TimeFrameCandle), _security, _timeFrame); // создаем поток свечей и указываем что тип TimeFrameCandle
_candleManager.Start(_series, _starttime, _endtime); // запускаем CandleManager
System.Threading.Thread.Sleep(20000); // делаем паузу на 20 сек. перед тем как запустить стратегию - чтобы серия заполнилась свечками
_strategy = new DartWeiderStretegy(_candleManager, _timeFrame, _series) // создаем стратегию
{
Volume = _sharecount, // количество контрактов которое мы указали
Security = _security,
Portfolio = _portfolio,
Trader = _trader,
Interval = _timeRefreshStrategy // интервал который мы указали
};
Comentarios (9)
Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario
В какой момент проверяете?
IsMatched проверяет просто что order.State == OrderStates.Done и order.Balance == 0. Првоерьте свои поля у order в момент проверки IsMatched
Проверяю после того как с класса стратегии создал заявку и зарегистрировал ее:
В момент проверки мой Order.States равен NONE - заявка не отправлена в систему. А Order.Balance показывает первоначальное количество контрактов в сделке и не меняется в процессе регистрации и выполнения сделки вообще никак.
Может быть такое что я не могу получить в класс со стратегией данные о том зарегистрирован ли ордер или нет? У меня ощущение что ордер просто улетает в основной класс где регистрируется а инфу об этом класс со стратегией получить не может.
Может подписаться нужно на какое-то событие?
Ну всё правильно.
Вы отправили ордер, а он-то не дошёл ещё, биржа ответ не прислала. Смотрите события NewOrders \ OrdersChanged \ ... Смотря что конкретно вам надо.
Ну просто ничего не могу понять! Я тупой!
Я проверяю заявку уже после того как она в квике зарегистрирована и исполнена...
В основном классе подписываюсь на события появления новых сделок ордеров итд..
Потом описываю методы вот так:
И никакое сообщение Хеллоу не выскакиеват. Я не вижу когда происходят сделки??? Я подписываюсь не в том классе???
Решил попробовать подписаться на событие появления новых сделок прямо в классе стратегии:
Та же беда...
Прошу подсказать куда копать? Что читать?
Хочу получить отчет о состоянии оредера)))
Смотрите Sample, там по событию NewMyTrades что-то происходит со сделками. Он у вас корректно работает?
Посмотрел тот пример - не понимаю как он мне подходит.
Дам весь код чтобы было понятно.
Мне нужно знать что подправить чтобы получить _order.IsMatched()
MainWindows.cs
Strategy.cs
Повторяю свой ответ. Вы проверяете не в тот момент isMatched. Вы проверяете после того как отправили, но до того как вам пришёл ответ от биржи.
Спасибо все работает.
Не могу понять почему я вынес проверку исполнения ордера как Вы указали и ничего не получалось... Код вроде не менял, но на след день начало работать))) Мистика)
Товарищи!
Нельзя ли как-нибудь показатль работающий код? Пытаюсь настроить проверку статуса заявок - никак не получается(((
Спасибо