Erreurs, bugs, questions - page 1797

 
A100:
Un commentaire ne fait pas partie d'une macro. Une macro doit être continue. Le \N inverse reprend la macro de la ligne suivante. // au début de la ligne interrompt la macro parce qu'une telle ligne ne peut pas se terminer par une barre oblique inversée !
C'est pourquoi je demande pourquoi une macro doit prendre en compte une ligne avec une double barre oblique ? Il devrait.
 

Démonstration de Metaquotes

SYMBOL_SESSION_PRICE_LIMIT_MIN == 1199.2. Mais même à ce prix plus élevé, je ne peux pas définir la limite d'achat.

 
fxsaber:
J'ai donc demandé pourquoi la macro considère une ligne avec une double barre oblique. Il devrait.

Dans ce cas, le commentaire est remplacé par une chaîne vide(le texte du commentaire est ignoré, tandis que la chaîne elle-même reste), et la chaîne vide interrompt la macro

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

  }
 
A100:

Dans ce cas, le commentaire est remplacé par une ligne vide.

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

  }
Je trouve cela illogique. Il ne devrait même pas y avoir de ligne blanche.
 
fxsaber:
Les freins ne semblent pas difficiles à réparer si l'on écrit un script compétent. Voici ce qui apparaît assez rapidement avec un ping de 50 ms.
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
Juste un rappel, c'est Metaquotes-Demo. Ne peut pas gérer la charge MT5 pour une raison quelconque.
De même,
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
C'est une réponse à une demande comme celle-ci.
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 est en train de ralentir, malheureusement.
 
fxsaber:
MT5 est en train de ralentir, malheureusement.

Encore plus cool - la démo était de 1,5 secondes de marche !

'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

Requête

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
 
Impossible de trouver le paramètre de slippage d'un ordre de marché suspendu, qui est défini dans Request.deviation.
 
fxsaber:
Je trouve cela illogique. Il ne devrait même pas y avoir de chaîne vide.
// signifie que le commentaire est après, et non que la chaîne entière est un commentaire. Enlevez // et vous obtenez une chaîne vide. Pour la comparaison, ajoutez des espaces devant //
 
A100:
// signifie que le commentaire se trouve après, et non que la chaîne entière est un commentaire. Si vous enlevez //, vous obtenez une chaîne vide

D'accord ! Mais dans le cas des macros, cela n'est pas pratique.

Imaginez que vous prenez un morceau de code et que vous voulez en faire une macro. Par exemple, remplacez une fonction par une macro.

Il semblerait qu'il faille mettre un backslash à la fin de chaque ligne, et c'est fait. Mais non ! Vous devez remplacer les doubles barres obliques par /* */. Et si /* */ n'est pas sur une seule ligne, c'est dommage.

 
Sur le tableau, j'appuie sur la touche ENTER, je saisis RTS-12.17 ou rts-12.17 - cela ne change pas.