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

 
Комментарии, не относящиеся к этой теме, были перенесены в "Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам".
 
fxsaber:
Sleep нужен только для случаев, когда символа нет в Обзоре рынка. Для всех символов, что есть в Обзоре рынка перед запуском (и во время работы) индикатора, никакие слипы не нужны.
Ясно.
 

1531 - тормоза Metaquotes-Demo не исчезли.

Запрос с ответом

Request.action = TRADE_ACTION_DEAL (1)
Request.magic = 0
Request.order = 0
Request.symbol = #KO
Request.volume = 1.0
Request.price = 40.31
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_BUY (0)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = My Position
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 117613087
Result.order = 133997293
Result.volume = 1.0
Result.price = 40.31
Result.bid = 40.28
Result.ask = 40.31
Result.comment = Request executed 345.781 + 26.356 ms
Result.request_id = 5712
Result.retcode_external = 0

345 мс выполнялся OrderSend и 26 мс понадобилось на то, чтобы в истории стали доступны соответствующие ордер и сделка. Т.е. очень медленная синхронизация - такого раньше не наблюдал.

Стандартный лог

2017.02.14 22:26:46.767 Trades  '5122740': prices for #KO 1.00
2017.02.14 22:26:46.852 Trades  '5122740': accepted prices for #KO 1.00
2017.02.14 22:26:46.852 Trades  '5122740': answer prices for #KO 1.00 40.28 / 40.31 in 86.046 ms (0.190 ms on server)
2017.02.14 22:26:46.852 Trades  '5122740': request buy 1.00 #KO at 40.31
2017.02.14 22:26:47.107 Trades  '5122740': accepted request buy 1.00 #KO at 40.31
2017.02.14 22:26:47.107 Trades  '5122740': deal #117613087 buy 1.00 #KO at 40.31 done (based on order #133997293)
2017.02.14 22:26:47.107 Trades  '5122740': order #133997293 buy 1.00 / 1.00 #KO at 40.31 done in 345.709 ms (3.022 ms on server)

Новый лог теперь в 1531! Прошу пояснить по этому случаю, что к чему.

 

ЗЫ Лог почти сразу после тормозов

2017.02.14 22:26:47.433 Trades  '5122740': prices for #KFT 1.00
2017.02.14 22:26:47.503 Trades  '5122740': accepted prices for #KFT 1.00
2017.02.14 22:26:47.506 Trades  '5122740': answer prices for #KFT 1.00 49.17 / 49.20 in 70.980 ms (4.166 ms on server)
2017.02.14 22:26:47.506 Trades  '5122740': request buy 1.00 #KFT at 49.20
2017.02.14 22:26:47.583 Trades  '5122740': accepted request buy 1.00 #KFT at 49.20
2017.02.14 22:26:47.583 Trades  '5122740': deal #117613092 buy 1.00 #KFT at 49.20 done (based on order #133997299)
2017.02.14 22:26:47.583 Trades  '5122740': order #133997299 buy 1.00 / 1.00 #KFT at 49.20 done in 149.304 ms (3.015 ms on server)

Это Requested-символы, поэтому на маркет-ордерах помедленнее, чем другие.

 

Тормоза на TRADE_ACTION_REMOVE.

Request.action = TRADE_ACTION_REMOVE (8)
Request.magic = 0
Request.order = 134003202
Request.symbol =
Request.volume = 0.0
Request.price = 0.0
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 0
Request.type = ORDER_TYPE_BUY (0)
Request.type_filling = ORDER_FILLING_FOK (0)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment =
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 0
Result.order = 134003202
Result.volume = 0.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Request executed 290.089 + 0.005 ms
Result.request_id = 10078
Result.retcode_external = 0
FL      0       23:02:46.797    Trades  '5122740': buy limit 1.00 Si-3.17 at 56288
GG      0       23:02:46.849    Trades  '5122740': accepted buy limit 1.00 Si-3.17 at 56288
PR      0       23:02:46.852    Trades  '5122740': order #134003202 buy limit 1.00 / 1.00 Si-3.17 at market done in 54.423 ms (0.342 ms on server)
PR      0       23:02:46.854    Trades  '5122740': cancel order #134003202 buy limit 1.00 Si-3.17 at 56288
LL      0       23:02:47.142    Trades  '5122740': accepted cancel order #134003202 buy limit 1.00 Si-3.17 at 56288
CE      0       23:02:47.144    Trades  '5122740': cancel #134003202 buy limit 1.00 Si-3.17 at market done in 290.050 ms (1.400 ms on server)
ЗЫ Просмотр журнала из терминала никак не выдавал эти строки. Пришлось брать их непосредственно из файла.
 
Ошибка [No prices] на ровном месте
2017.02.14 23:18:41.442 '5122740': failed instant buy 1.00 EURPLN at 4.30632 (deviation: 100) [No prices]

Как это нет цены, есть даже в логе она указана?!

Запрос

2017.02.14 23:18:41.442 Request.action = TRADE_ACTION_DEAL (1)
2017.02.14 23:18:41.442 Request.magic = 0
2017.02.14 23:18:41.442 Request.order = 0
2017.02.14 23:18:41.442 Request.symbol = EURPLN
2017.02.14 23:18:41.442 Request.volume = 1.0
2017.02.14 23:18:41.442 Request.price = 4.30632
2017.02.14 23:18:41.442 Request.stoplimit = 0.0
2017.02.14 23:18:41.442 Request.sl = 0.0
2017.02.14 23:18:41.442 Request.tp = 0.0
2017.02.14 23:18:41.442 Request.deviation = 100
2017.02.14 23:18:41.442 Request.type = ORDER_TYPE_BUY (0)
2017.02.14 23:18:41.442 Request.type_filling = ORDER_FILLING_RETURN (2)
2017.02.14 23:18:41.442 Request.type_time = ORDER_TIME_GTC (0)
2017.02.14 23:18:41.442 Request.expiration = 1970.01.01 00:00:00
2017.02.14 23:18:41.442 Request.comment = My Position
2017.02.14 23:18:41.442 Request.position = 0
2017.02.14 23:18:41.442 Request.position_by = 0
2017.02.14 23:18:41.442 Result.retcode = 10021
2017.02.14 23:18:41.442 Result.deal = 0
2017.02.14 23:18:41.442 Result.order = 0
2017.02.14 23:18:41.442 Result.volume = 0.0
2017.02.14 23:18:41.442 Result.price = 0.0
2017.02.14 23:18:41.442 Result.bid = 0.0
2017.02.14 23:18:41.442 Result.ask = 0.0
2017.02.14 23:18:41.442 Result.comment = No prices 0.028 + 0.000 ms
2017.02.14 23:18:41.442 Result.request_id = 0
2017.02.14 23:18:41.442 Result.retcode_external = 0
2017.02.14 23:18:41.442
2017.02.14 23:18:41.442 SymbolInfoDouble(Symb,::SYMBOL_BID) = 4.30151
2017.02.14 23:18:41.442 SymbolInfoDouble(Symb,::SYMBOL_ASK) = 4.30632
 
fxsaber:
Ошибка [No prices] на ровном месте
2017.02.14 23:18:41.442 '5122740': failed instant buy 1.00 EURPLN at 4.30632 (deviation: 100) [No prices]

Как это нет цены, есть даже в логе она указана?!

То же самое недавно получал на реальном счете. Цена получена но сервер рыночный ордер не исполняет.

ЗЫ. В данный момент общаюсь с техподдержкой очень известной компании на L... (ведётся конфиденциальная переписка, поэтому называть не буду), они объясняют, что время исполнения на их торговом сервере одинаково что для приказов исходящих с МТ4 (у них МТ4), что отправленных по FIX и составляет примерно 1-6мс. Тогда, вопрошаю я у них, на что тратятся время 40-50 мс при торговле из МТ4, так с момента отправки приказа и получения ответа проходит 40-60 мс примерно. Они толерантно пожимают плечами, типа ищи у себя в задержках сетевых, я им говорю пинг 1-2мс, а они опять пожимают плечами. Вывод - тормозит серверная часть МТ4/5. Теперь вот логи новые показывают это. Я понимаю, что время не может быть "чистым" как по FIX, но по крайней мере должно быть одинакового порядка.  
 
Andrey Dik:
ЗЫ. В данный момент общаюсь с техподдержкой очень известной компании на L... (ведётся конфиденциальная переписка, поэтому называть не буду), они объясняют, что время исполнения на их торговом сервере одинаково что для приказов исходящих с МТ4 (у них МТ4), что отправленных по FIX и составляет примерно 1-6мс. Тогда, вопрошаю я у них, на что тратятся время 40-50 мс при торговле из МТ4, так с момента отправки приказа и получения ответа проходит 40-60 мс примерно. Они толерантно пожимают плечами, типа ищи у себя в задержках сетевых, я им говорю пинг 1-2мс, а они опять пожимают плечами. Вывод - тормозит серверная часть МТ4/5. Теперь вот логи новые показывают это. Я понимаю, что время не может быть "чистым" как по FIX, но по крайней мере должно быть одинакового порядка.  

В L... имели в виду, что когда получают в свою систему приказ, то время исполнения в самой системе и отправке обратно мизерное. Получить они приказ могут от MT4-сервера, либо по FIX и другим их API. Сам же MT4-сервер многие десятки мс тратит на внутреннюю обработку, никак не связанную с execution.

Когда-то на MT4 минимальное время было 150 мс. Похоже, что-то серьезно подрихтовали, раз стало 40-60. Но MT5 заметно быстрее. По логам теперь видно, сколько сам сервер отрабатывал. Осталось понять, на что основное время уходит.

 
Комментарии, не относящиеся к этой теме, были перенесены в "CopyClose почему ошибка?".
 

Ошибка компиляции: нельзя обратиться к f() //2

typedef void (*fn)();
#import "Test.ex5"
        void f(); //1
#import
void f() {} //2
void OnStart()
{
        fn g1 = Test::f; //нормально
        fn g2 =       f; //Error: 'f' - cannot resolve function address
}
 
@Slawa уточните пожалуйста, есть ли какие-то ограничения, на запись индикаторных буферов вне функции OnCalculate()? Всегда ли будет все корректно записываться в случае записи буферов в функциях: OnTimer(), OnBookEvent(), OnChartEvent()?

Причина обращения: