Ошибки, баги, вопросы - страница 2220

 
Торговые транзакции идут приоритетными пакетами, обгоняя остальные. Это серьезно уменьшает латенси.
 
Renat Fatkhullin:
Торговые транзакции идут приоритетными пакетами, обгоняя остальные. Это серьезно уменьшает латенси.

Как получается, что скрипт после OrderSend обнаруживает ситуацию фантомного ордера, а OnTradeTransaction на параллельном советнике - нет (не всегда, но случается)?

 
Renat Fatkhullin:
Торговые транзакции идут приоритетными пакетами, обгоняя остальные. Это серьезно уменьшает латенси.

Проблема в том, что транзакции TRADE_TRANSACTION_ORDER_DELETE и TRADE_TRANSACTION_HISTORY_ADD приходят в разных пакетах, и поэтому неважно какой там приоритет, сетевая задержка всё-равно будет.  А эти транзакции должны выполняться синхронно, одна за другой, без какого либо промежуточного состояния.  Т.е. это одна атомарная операция по сути.  Ведь помещение удалённого ордера в список истории никак не связано с биржей.

Т.е. тут вариантов два:  либо обе эти транзакции приходят вместе в одном пакете,  либо же первая транзакция не выполняется в терминале до тех пор, пока не придёт вторая.

 
Alexey Navoykov:

Т.е. тут вариантов два:  либо обе эти транзакции приходят вместе в одном пакете,  либо же первая транзакция не выполняется в терминале до тех пор, пока не придёт вторая.

Бывают ситуации, когда TRADE_TRANSACTION_DEAL_ADD приходит ДО транзакции TRADE_TRANSACTION_ORDER_DELETE. При этом еще до TRADE_TRANSACTION_ORDER_DELETE ордер все равно фантомный.

 

Удаленные агенты перестали проводить оптимизацию

2018.06.22 14:05:24.901 SVA_03  pass 19 tested with error "task rejected by tester agent" in 0:00:00.000
2018.06.22 14:05:27.387 SVA_03  pass 19 tested with error "task rejected by tester agent" in 0:00:00.000

Предполагаю, что из-за нового компилятора, как их можно обновить, что всё заработало?

Кроме того, из-за такой ошибки прошло только часть проходов в оптимизаторе 13 из 28.
 

Просматриваю код пакета Alglib. Там полно таких конструкций, усложняющих читаемость кода:

         for(i_=0;i_<=nvars-1;i_++)
            tmp[i_]=xy[i][i_];
         for(i_=0;i_<=nvars-1;i_++)
            tmp[i_]=tmp[i_]-ct[xyc[i]][i_];
         //--- calculation
         v=0.0;
         for(i_=0;i_<=nvars-1;i_++)
            v+=tmp[i_]*tmp[i_];

Не проще ли так?

v=0.0;
for(i_=0;i_<=nvars-1;i_++){
   tmp=xy[i][i_]-ct[xyc[i]][i_];
   v+=tmp*tmp;
}

Мне кажется, что скорость исполнения будет даже выше.

Зачем так усложнили код? Или просто портировали с др. языка, без корректировок? Но все равно интересно, зачем такое усложнение в оригинале?
 

Синтетический инструмент. Импортирую минутные бары, каждый минутный бар отличается на 1 пункт (5 знаков).

Закрываю окно с символами, потом повторно открываю данное окно, запрашиваю минутные бары у предыдущей загрузки, получаю

 

Символы на каждые целые сутки одинаковые. В чем ошибка?

[Удален]  
elibrarius:

Просматриваю код пакета Alglib. Там полно таких конструкций, усложняющих читаемость кода:

Не проще ли так?

Мне кажется, что скорость исполнения будет даже выше.

Зачем так усложнили код? Или просто портировали с др. языка, без корректировок? Но все равно интересно, зачем такое усложнение в оригинале?

Скорее всего в оригинале это сделано именно для ускорения.

Будет ли быстрее в MQL - это надо измерять, "кажется" тут не прокатит.

 
Koldun Zloy:

Скорее всего в оригинале это сделано именно для ускорения.

Будет ли быстрее в MQL - это надо измерять, "кажется" тут не прокатит.

"Скорей всего" тоже не прокатит.
Ну как может такая форма работать быстрее? О чем Вы говорите!

Два лишних цикла и дополнительный массив вместо одной переменной.

[Удален]  

Nikolai Semko:

Два лишних цикла и дополнительный массив вместо одной переменной.

Такие примитивные рассуждения не годятся для современных процессоров.