Erros, bugs, perguntas - página 1797

 
fxsaber:
Porque é que a barra dupla actua sobre a barra invertida? E porque é que uma macro carrega um comentário de dupla barra quando activada?
O comentário não faz parte da macro. A macro deve ser contínua. Uma barra invertida continua a macro a partir da linha seguinte. // no início da linha interrompe a macro porque tal linha não pode ser terminada com uma barra invertida {\i}
 
A100:
Um comentário não faz parte de uma macro. Uma macro deve ser contínua. O inverso continua a macro a partir da linha seguinte. // no início da linha interrompe a macro porque tal linha não pode terminar com uma barra invertida {\i}
É isso que eu pergunto porque é que uma macro tem de considerar uma linha com uma barra dupla? Deveria.
 

Metaquotes-Demo

SYMBOL_SESSION_PRICE_LIMIT_MIN == 1199.2. Mas mesmo com o preço mais elevado não posso definir BuyLimit.

 
fxsaber:
Então perguntei: porque é que a macro considera uma linha com uma barra dupla? Deveria.

Neste caso, o comentário é substituído por uma cadeia vazia(o texto do comentário é ignorado, enquanto a cadeia em si permanece), e a cadeia vazia interrompe a macro

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

  }
 
A100:

Neste caso, o comentário é substituído por uma linha vazia

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

  }
Acho isto ilógico. Não deve haver sequer uma linha em branco.
 
fxsaber:
Os travões não parecem ser difíceis de arranjar se se escrever um guião competente. Eis o que surge bastante rápido a um ping de 50ms
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
Apenas um lembrete, isto é Metaquotes-Demo. Não consegue lidar com a carga MT5 por alguma razão.
Do mesmo modo
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
Esta é uma resposta a um pedido como este.
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
O MT5 está a abrandar, infelizmente.
 
fxsaber:
O MT5 está a abrandar, infelizmente.

Ainda mais fresco - a demonstração foi de 1,5 segundos de marcha!

'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

Consulta

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
 
Não se consegue descobrir o parâmetro de deslizamento de uma ordem de mercado suspensa, que é definido em Request.deviation.
 
fxsaber:
Acho isto ilógico. Não deve haver sequer um fio vazio.
// significa que o comentário é depois, não que toda a cadeia é um comentário. Remover // e obtém um fio vazio. Para comparação, adicionar espaços em frente de //
 
A100:
// significa que o comentário está atrás dele, não toda a cadeia é um comentário. Se remover //, recebe um fio vazio

De acordo! Mas no caso das macros, isto é inconveniente.

Imagine que pega num pedaço de código e quer fazer dele uma macro. Por exemplo, substituir uma função por uma macro.

Parece que se coloca uma barra invertida no fim de cada linha, e está feito. Mas não! Deve substituir as barras duplas por /* */. E se /* */ não estiver numa linha, é uma pena.

Razão: