Fehler, Irrtümer, Fragen - Seite 1797

 
fxsaber:
Warum wirkt der doppelte Schrägstrich auf den Backslash? Und warum wird ein Makro mit einem doppelten Schrägstrich kommentiert, wenn es aktiviert wird?
Ein Kommentar ist nicht Teil eines Makros. Das Makro sollte kontinuierlich sein. Ein Backslash \ setzt das Makro in der nächsten Zeile fort. // am Anfang der Zeile unterbricht das Makro, da eine solche Zeile nicht mit einem Backslash \ abgeschlossen werden kann.
 
A100:
Ein Kommentar ist nicht Teil eines Makros. Ein Makro muss kontinuierlich sein. Die Umkehrung \ setzt das Makro in der nächsten Zeile fort. // am Anfang der Zeile unterbricht das Makro, da eine solche Zeile nicht mit einem Backslash \ enden kann.
Deshalb frage ich, warum ein Makro eine Zeile mit einem doppelten Schrägstrich berücksichtigen muss? Das sollte es auch.
 

Metaquotes-Demo

SYMBOL_SESSION_PRICE_LIMIT_MIN == 1199.2. Aber selbst bei dem höheren Preis kann ich kein BuyLimit setzen.

 
fxsaber:
Also fragte ich, warum das Makro eine Zeile mit einem doppelten Schrägstrich berücksichtigt? Das sollte es auch.

In diesem Fall wird der Kommentar durch eine leere Zeichenkette ersetzt(der Kommentartext wird ignoriert, während die Zeichenkette selbst erhalten bleibt), und die leere Zeichenkette unterbricht das Makro

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

  }
 
A100:

In diesem Fall wird der Kommentar durch eine Leerzeile ersetzt

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

  }
Ich finde das unlogisch. Es sollte nicht einmal eine Leerzeile vorhanden sein.
 
fxsaber:
Die Bremsen scheinen nicht schwer zu beheben zu sein, wenn man ein kompetentes Skript schreibt. Bei einem Ping von 50 ms werden die folgenden Daten schnell angezeigt
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
Nur zur Erinnerung: Dies ist Metaquotes-Demo. Kann aus irgendeinem Grund die MT5-Last nicht verarbeiten.
Ähnlich
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
Dies ist eine Antwort auf eine Anfrage wie diese.
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 wird leider immer langsamer.
 
fxsaber:
MT5 wird leider immer langsamer.

Noch cooler - die Demo bestand aus 1,5 Sekunden Marschieren!

'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

Abfrage

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
 
Der Slippage-Parameter einer hängenden Marktorder, der in Request.deviation eingestellt ist, kann nicht ermittelt werden.
 
fxsaber:
Ich finde das unlogisch. Es sollte nicht einmal eine leere Zeichenkette vorhanden sein.
// bedeutet, dass der Kommentar dahinter steht, nicht, dass die gesamte Zeichenkette ein Kommentar ist. Entfernen Sie // und Sie erhalten eine leere Zeichenfolge. Zum Vergleich fügen Sie Leerzeichen vor // ein.
 
A100:
// bedeutet, dass der Kommentar dahinter steht, nicht die ganze Zeichenkette ist ein Kommentar. Wenn Sie // entfernen, erhalten Sie eine leere Zeichenfolge

Einverstanden! Im Falle von Makros ist dies jedoch unpraktisch.

Stellen Sie sich vor, Sie nehmen ein Stück Code und wollen es zu einem Makro machen. Ersetzen Sie zum Beispiel eine Funktion durch ein Makro.

Es sieht so aus, als ob Sie am Ende jeder Zeile einen Backslash einfügen, und das war's. Aber nein! Doppelte Schrägstriche sollten Sie durch /* */ ersetzen. Und wenn /* */ nicht in einer Zeile steht, ist das schade.