Cобытия по изменению состояния ордеров приходят только в режиме эмуляции


Cобытия по изменению состояния ордеров приходят только в режиме эмуляции
Atom
21.02.2013


S# 4.1.6
Работа с Quik. Брокер Уралсиб.
В режиме RealTimeEmlationTrader
ордера выставляются,
и информация о их выполнении поступает в лог,
strategy.PositionManager.Position показывает позицию.

Когда переключаюсь с эмулятора на реальный QuikTrader.
Ордер выставляется, но похоже события изменения состояния не вызываются,
соответственно strategy.PositionManager.Position показывает 0.
Может кто подать идею, в какой стороне мне копать?

И при работе через эмулятор похоже часть событий не активируется
по крайней мере NewMyTrade, но так как strategy.PositionManager.Position
обновляется работать можно.

Теги:


Спасибо:


< 1 2 
kahuna

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


Может это как то проясняет дело. Простейший код в котором просто соединение с Quik
выдает страную ошибку про какой-то инструмент[blink]

Код


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Windows;
using System.Windows.Controls;
using System.Diagnostics;
using MessageBox = System.Windows.MessageBox;
using System.Threading;
using System.Linq;
using System.Xml;
using Ecng.Common;
using Ecng.Collections;
using Ecng.Xaml;
using Ecng.ComponentModel;

using StockSharp.BusinessEntities;
using StockSharp.Algo.Reporting;
using StockSharp.Quik;
using StockSharp.Algo;
using StockSharp.Xaml;
using StockSharp.Logging;
using StockSharp.Algo.Testing;

namespace test
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>

    public partial class MainWindow : Window
   {
        private QuikTrader _trader;
        private LogManager _logManager;

        public MainWindow()
        {
            InitializeComponent();

            _logManager = new LogManager();
            var fileListener = new FileLogListener("{0}_{1:00}_{2:00}.txt".Put(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day));
            _logManager.Listeners.Add(fileListener);

            _trader = new QuikTrader(QuikTerminal.GetDefaultPath()){ IsAsyncMode = true, SupportManualOrders = false };

            _trader.LogLevel = LogLevels.Debug;
            _logManager.Sources.Add(_trader);

                    _trader.Connected += () =>
                     {
                         _trader.AddDebugLog("Соединились");
                     };

                    _trader.Connect();
                    

                    while (!_trader.IsConnected) { }
                    _trader.StartExport();
  
        }
    }
}

Ошибка в лог валится такая:
2013/02/26 14:43:51.544|Debug |QuikTrader|Соединились
2013/02/26 14:43:53.367|Error |QuikTrader|System.InvalidOperationException: Инструмент с кодом RU000A0JPWC3 для бумажной позиции не найден.
в StockSharp.Quik.QuikTrader.#=qjrOBFov$lIae$ZMCQLx7P1fQAe2X2s16$DxZRnv$aqU=.#=qjGe1xZF5fvarq_$jrR3XCQ==(IList`1 #=qKG6nGjj9uhl1Ndb5IDukAw==, Func`2 #=qdrbWxV4uORvFCQd5d$c6og==)
в #=qU8C8kAMUmJ0kPIeEJrF68f3NMymXDukMNgL4Dc7ffmr7PRgVzknJ3atY_n0PucT4.#=qB09_IBYvsxLb_dLzMi2NWQ==(DdeTable #=qOgXoydWCvsq2gXlddKoo0w==, IList`1 #=qMeYWUEb44NrXcAvbPuNfiQ==, Action`2 #=qolGBgTssErk3vXo538xxsQ==, Action`1 #=qIfmNdbFGgLtG9ybpXuosbQ==, Boolean #=qe3W9$GyIKMHUi59wvLuQeA==)
2013/02/26 14:43:53.441| |QuikTrader|Экспорт запущен.

Мистика. [cursing]
Спасибо:

kahuna

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


Понял, сам дурак. Просто давно завис в облигациях РБК. Валяются в портфеле. А в таблицах (сделок, заявок и т.п) облигации отфильтрованы.
Спасибо:

kahuna

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


Включил фильтр на таблицу позиции по бумагам. Оставил одни фьючи.
Ура. Все заработало.
События на которые жаловался стали прилетать.
Спасибо:

VassilSanych

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


Похоже у вас не логируются исключения фоновых потоков.
Это можно делать например так:
Спасибо: kahuna
< 1 2 

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

loading
clippy