К содержимому
Форекс
на автомате

OnTradeTransaction в журнал: порядок событий каждый раз разный

Алёна Лс 07.2022
Испытатель
11сообщений
Автор темы#1
Хочу, чтобы по журналу можно было восстановить, что происходило с каждой заявкой. Пишу все транзакции:
Код:
void OnTradeTransaction(const MqlTradeTransaction &t, const MqlTradeRequest &rq, const MqlTradeResult &rs) { PrintFormat("TT %s order=%I64u deal=%I64u pos=%I64u state=%s vol=%.2f", EnumToString(t.type), t.order, t.deal, t.position, EnumToString(t.order_state), t.volume); }
На одинаковых рыночных заявках порядок разный. Иногда ORDER_ADD, DEAL_ADD, ORDER_DELETE, HISTORY_ADD, потом REQUEST. А иногда DEAL_ADD приходит раньше ORDER_ADD, или REQUEST вообще первым. Мой разборщик журнала рассчитан на один порядок и путается. Это у меня что-то не так или так и задумано?
armen_72с 07.2021
Испытатель
13сообщений
#2
Так и задумано, порядок прихода транзакций не гарантирован, они идут разными пакетами, в справке это прямо написано. Не строй разбор на последовательности. Привязывай всё к номеру ордера и позиции: собрал по order все события в кучу, потом смотришь, была ли сделка, на какой объём, удалён ли ордер. Порядок внутри кучи неважен.
gleb_1968с 01.2021
Первый прогон
6сообщений
#3
И события можно потерять, если обработчик долго думает. Поэтому окончательную правду я беру из истории сделок, а не из транзакций.
Продолжить обсуждение

Для ответа войдите в свой аккаунт.

Войти
← Предыдущая темаСледующая тема →