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

 
fxsaber:
Зачем двойной слэш действует на обратный? И зачем макрос при активации переносит комментарии двойного слэша?
Комментарий не является частью макроса. Макрос должен быть непрерывным. Обратный \ продолжает макрос со следующей строки. // в начале строки прерывает макрос потому что такую строку нельзя закончить обратным \
 
A100:
Комментарий не является частью макроса. Макрос должен быть непрерывным. Обратный \ продолжает макрос со следующей строки. // в начале строки прерывает макрос потому что такую строку нельзя закончить обратным \
Так и спрашиваю, зачем макрос учитывает строчку, где стоит двойной слэш? Пропускать должен.
 

Metaquotes-Demo

 

SYMBOL_SESSION_PRICE_LIMIT_MIN == 1199.2. Но даже по цене выше не могу установить BuyLimit.

 
fxsaber:
Так и спрашиваю, зачем макрос учитывает строчку, где стоит двойной слэш? Пропускать должен.

В данном случае комментарий заменяется на пустую строку (текст комментария игнорируется при этом сама строка остается), а пустая строка прерывает макрос

#define MACRO  \
  if (true)    \
  {            \
    Print(""); \

  }
 
A100:

В данном случае комментарий заменяется на пустую строку

#define MACRO  \
  if (true)    \
  {            \
    Print(""); \

  }
Считаю это нелогичным. Не должно быть даже пустой строки. 
 
fxsaber:
Похоже, тормоза не тяжело зафиксировать, если написать грамотный скрипт. Вот, что довольно быстро получается при пинге 50 мс
2017.02.10 21:32:42.726 Trades  '5122740': exchange buy 1.00 Si-3.17 at market
2017.02.10 21:32:42.796 Trades  '5122740': accepted exchange buy 1.00 Si-3.17 at market
2017.02.10 21:32:42.806 Trades  '5122740': deal #117193624 buy 1.00 Si-3.17 at 58810 done (based on order #133580668)
2017.02.10 21:32:42.808 Trades  '5122740': order #133580668 buy 1.00 / 1.00 Si-3.17 at 58810 done in 81.663 ms
2017.02.10 21:32:42.810 Trades  '5122740': modify #133580668 buy 1.00 Si-3.17 sl: 0, tp: 0 -> sl: 58710, tp: 58910
2017.02.10 21:32:42.886 Trades  '5122740': accepted modify #133580668 buy 1.00 Si-3.17 sl: 0, tp: 0 -> sl: 58710, tp: 58910
2017.02.10 21:32:42.888 Trades  '5122740': modify #133580668 buy 1.00 Si-3.17 -> sl: 58710, tp: 58910 done in 78.188 ms
2017.02.10 21:32:42.888 Trades  '5122740': exchange sell 1.00 Si-3.17 at market, close #133580668 buy 1.00 Si-3.17 58810
2017.02.10 21:32:43.079 Trades  '5122740': accepted exchange sell 1.00 Si-3.17 at market, close #133580668 buy 1.00 Si-3.17 58810
2017.02.10 21:32:43.079 Trades  '5122740': deal #117193626 sell 1.00 Si-3.17 at 58810 done (based on order #133580670)
2017.02.10 21:32:43.080 Trades  '5122740': order #133580670 sell 1.00 / 1.00 Si-3.17 at 58810 done in 192.146 ms
2017.02.10 21:32:43.081 Trades  '5122740': buy limit 1.00 Si-3.17 at 58713
2017.02.10 21:32:43.221 Trades  '5122740': accepted buy limit 1.00 Si-3.17 at 58713
2017.02.10 21:32:43.222 Trades  '5122740': order #133580671 buy limit 1.00 / 1.00 Si-3.17 at market done in 141.851 ms
2017.02.10 21:32:43.222 Trades  '5122740': cancel order #133580671 buy limit 1.00 Si-3.17 at 58713
2017.02.10 21:32:43.652 Trades  '5122740': accepted cancel order #133580671 buy limit 1.00 Si-3.17 at 58713
2017.02.10 21:32:43.653 Trades  '5122740': cancel #133580671 buy limit 1.00 Si-3.17 at market done in 430.484 ms
Напоминаю, это Metaquotes-Demo. Не справляется MT5 с нагрузкой по какой-то причине.
Аналогично
2017.02.13 12:44:48.104 Trades  '5122740': buy limit 1.00 RTS-12.17 at 114430
2017.02.13 12:44:48.737 Trades  '5122740': accepted buy limit 1.00 RTS-12.17 at 114430
2017.02.13 12:44:48.739 Trades  '5122740': order #133670570 buy limit 1.00 / 1.00 RTS-12.17 at market done in 634.624 ms
Это реакция на такой запрос
Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = RTS-12.17
Request.volume = 1.0
Request.price = 114430.0
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_BUY_LIMIT (2)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_DAY (1)
Request.expiration = 1970.01.01 00:00:00
Request.comment = My Order
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 0
Result.order = 133670570
Result.volume = 1.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Request executed 634.708 + 0.002 ms
Result.request_id = 5827
Result.retcode_external = 0
MT5 тормозит, к сожалению.
 
fxsaber:
MT5 тормозит, к сожалению.

Даже круче - демо 1.5 секунды маркет исполнял!

'5122740': accepted exchange sell 1.00 DINRM at market, close #133675792 buy 1.00 DINRM 149.07
'5122740': deal #117297621 sell 1.00 DINRM at 149.07 done (based on order #133675793)
'5122740': order #133675793 sell 1.00 / 1.00 DINRM at 149.07 done in 1596.317 ms

Запрос

Request.action = TRADE_ACTION_DEAL (1)
Request.magic = 0
Request.order = 0
Request.symbol = DINRM
Request.volume = 1.0
Request.price = 149.04
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_SELL (1)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment =
Request.position = 133675792
Request.position_by = 0
Result.retcode = 10009
Result.deal = 117297621
Result.order = 133675793
Result.volume = 1.0
Result.price = 149.07
Result.bid = 149.04
Result.ask = 149.06
Result.comment = Request executed 1596.364 + 0.209 ms
Result.request_id = 13486
Result.retcode_external = 0
 
Невозможно узнать параметр slippage висящего маркет-ордера, который задается в Request.deviation.
 
fxsaber:
Считаю это нелогичным. Не должно быть даже пустой строки. 
// означает что комментарий после, а не то что комментарием является вся строка. Убираете // - получаете пустую строку. Для сравнения добавьте перед // пробелы
 
A100:
// означает что комментарий после, а не то что комментарием является вся строка. Убираете // - получаете пустую строку

Согласен! Но в случае с макросами это неудобно.

Представьте, что Вы берете какой-то кусок кода и хотите сделать его макросом. Например, функцию заменить на макрос.

Казалось бы, накидал в конце каждой строки по обратному слэшу и готово. Ан, нет! Надо двойные слэши заменять на /* */. А если /* */ не в одной строке, то совсем плохо. 

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