← Atrás

trader.NewTrades не показывает сделки

На момент запуска программы в терминале уже присутствовали следующие заявки и сделки:

  1. Список заявок в терминале SmartX Список сделок в терминале SmartX

  2. Список сделок в терминале SmartX Список сделок в терминале SmartX

Фрагмент исполняемого кода

#region debug_events
_trader.NewOrders += orders => 
{ 
     orders.ForEach(order => Log.Add("_debug1 " + order.Id.ToString()));
};
_trader.NewTrades += trades =>
{
     trades.ForEach(trade => Log.Add("_debug2 " + trade.Id.ToString()));
};
_trader.NewMyTrades += mytrades =>
{
     mytrades.ForEach(mytrade => Log.Add("_debug3 " + mytrade.Trade.Id.ToString()));
};
#endregion debug_events

Результат работы программы Список сделок в терминале SmartX

Почему после запуска программы из сделок отобразилась только одна - по событию NewMyTrades (почему три остальные не пришил?) И почему по событию NewTrades совсем ничего не пришло?

¿Le resultó útil este tema?

Compartir tema

Comentarios (8)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

Alexander
Alexander

Каким образом стартуете экспорт?

raf
raf Autor
public MainWindow()
{
    _trader = new SmartTrader(...);
    _trader.Connected += OnConnected;

    +#region debug_events
}
 
public void OnConnected()
{
    _trader.StartExport();
    Log.Add("Export data '_trader.StartExport()' started ");
}

...Событие NewMyTrades выводит только самую последнюю по времени сделку

Alexander
Alexander

А экспорт стартуется - в лог пишется что старт произошёл? Просто вызова Connect тут нет в это коде.

Что выводит ProcessDataError?

raf
raf Autor

Коннект по кнопке MenuItemConnect_Click(){_trader.Connect();}

ProcessDataError после коннекта сразу выдает

System.ComponentModel.Win32Exception: Отказано в доступе в System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited) в System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited) в System.Diagnostics.Process.Kill() в StockSharp.Smart.SmartTrader.KillSmartComProcess() в StockSharp.Smart.SmartTrader.OnConnect()

Далее прием данных ошибками не сопровождается.

PS Сегодня по-началу, когда было две сделки, NewMyTrades вывел обе. Теперь их уже 4 - выводит опять только последнюю сделку.

Alexander
Alexander

Так правильно - у вас он не может убть процесс SmartCom2, который уже запущен. Из-за этого и дальнейшие ошибки. Вначале надо с ProcessDataError разобраться - там ошибок быть не должно.

Права есть? Работаете под администратором? А если убить его через панельзадач? Другие программы, работающие со смарткомом запущены?

raf
raf Autor

Работаю под Администратором. После перезагрузки компьютера первый запуск программы ошибок не дал, но результат работы NewMyTrades не поменялся: по прежнему выдает только последнюю сделку. Следовательно проблема с ошибкой "System.ComponentModel.Win32Exception: Отказано в доступе" не связана.

raf
raf Autor

есть подозрения, что сделки не хранятся на сервере, а только в самом торговом терминале. это я проверю...

что касается "System.ComponentModel.Win32Exception: Отказано в доступе"... Как я пнимаю, это ошибка не имеет последствий? Чтобы все-таки ее побороть что необходимо сделать? похоже

~MainWindow()
{
   ApplicationState._trader.StopExport();
   ApplicationState._trader.Disconnect();
   ApplicationState._trader.Dispose();
}

недостаточено. Другие программы, работающие со смарткомом не запущены.

Alexander
Alexander

А зачем деструктор? Делайте всё по Closing.