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


raf

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

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 совсем ничего не пришло?



Теги:


Спасибо:



Скидка 15% на все продукты до 5 апреля (осталось 3 дней).

8 Ответов
Alexander

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


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

raf

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


Код
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

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


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

Что выводит ProcessDataError?
Спасибо:

raf

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


Коннект по кнопке 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

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


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

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

raf

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


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




Автор топика
Спасибо:

raf

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


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

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

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


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

Alexander

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


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


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

loading
clippy