← Zurück

Получить все сделки потока

Допустим приходит пачка из 10-ти новых сделок и каждая сделка прогоняется через :


 //новые сделки
    Trader.NewTrades += trades => this.GuiAsync(() =>
      {

при прогоне 5-й сделки робот получает сигнал на вход, что не верно, т.к. не извесны результаты остальных 5-ти сделок. В связи с этим 2 вопроса к разработчикам:

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

Мне в голову приходит :


if (_ins1.LastTrade.Price == trades.Last().Price && _ins1.LastTrade.Time.ToString("HHmmssfff") == trades.Last().Time.ToString("HHmmssfff"))

  1. Trader.NewTrades += trades => this.GuiAsync(() => Работает асинхронно? Т.е. допустим при прогоне 5-й сделки получили сигнал - начали отправлять заявку, она еще не ушла и тут в другом потоке начинаем разбирать 6-ю сделку и снова получаем сигнал и снова пытаемся отправить заявку?

War dieses Thema hilfreich?

Thema teilen

Kommentare (5)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Alexander
Alexander

Макс: Допустим приходит пачка из 10-ти новых сделок и каждая сделка прогоняется через :

//новые сделки Trader.NewTrades += trades => this.GuiAsync(() => {

> 
> при прогоне 5-й сделки робот получает сигнал на вход, что не верно, т.к. не извесны результаты остальных 5-ти сделок.
> В связи с этим 2 вопроса к разработчикам:
> 
> 1. Есть ли какой-то признак того, что мы разобрали все полученные на данный момент сделки?
> 
> Мне в голову приходит :
> ```csharp

if (_ins1.LastTrade.Price == trades.Last().Price && _ins1.LastTrade.Time.ToString("HHmmssfff") == trades.Last().Time.ToString("HHmmssfff"))

  1. Trader.NewTrades += trades => this.GuiAsync(() => Работает асинхронно? Т.е. допустим при прогоне 5-й сделки получили сигнал - начали отправлять заявку, она еще не ушла и тут в другом потоке начинаем разбирать 6-ю сделку и снова получаем сигнал и снова пытаемся отправить заявку?
  1. Вопроса не понял. Поток идёт постоянно. Можно узнать когда он переходит в состояние Online, есть соответствующий метод
  2. Слово "Gui" как бы намекает предназначение... :) Асинхронно или синхронно зависит от флага трейдера. По умолчанию - асинк.
Макс
Макс
Макс Autor
  1. Вопроса не понял. Поток идёт постоянно. Можно узнать когда он переходит в состояние Online, есть соответствующий метод Может я не верно считаю, что сделки приходят не по одной, а пачками? Интересует как понять, что мы сейчас обрабатываем последнюю сделку из посделней пачки?
Alexander
Alexander
  1. Вопроса не понял. Поток идёт постоянно. Можно узнать когда он переходит в состояние Online, есть соответствующий метод Может я не верно считаю, что сделки приходят не по одной, а пачками? Интересует как понять, что мы сейчас обрабатываем последнюю сделку из посделней пачки?

Сделки приходят по событию Inserted Есть событие End у потока. Можно подписаться на него.

Макс
Макс Autor

А можно как-нибудь узнать с каким номером ревизии пришла сделка? Типа


//новые сделки
   Trader.NewTrades += trades => this.GuiAsync(() =>
                        {
                            log("Обрабатываем сделку=" + trades.Last().Id + " ревизия=" + trades.Last().[b]RevisionId[/b]);

я пробую так:


log("Обрабатываем сделку=" + trades.Last().Id + " ревизия=" + Trader.TableRegistry.TradeFuture.Revision);

но Trader.TableRegistry.TradeFuture.Revision иногда предыдущий показывает

Alexander
Alexander

Макс: А можно как-нибудь узнать с каким номером ревизии пришла сделка? Типа

//новые сделки Trader.NewTrades += trades => this.GuiAsync(() => { log("Обрабатываем сделку=" + trades.Last().Id + " ревизия=" + trades.Last().[b]RevisionId[/b]);

> 
> я пробую так:
> ```csharp

log("Обрабатываем сделку=" + trades.Last().Id + " ревизия=" + Trader.TableRegistry.TradeFuture.Revision);

но Trader.TableRegistry.TradeFuture.Revision иногда предыдущий показывает

Подписаться на Inserted и самому получать сделки \ ревизии из потока напрямую.