Fehler, Irrtümer, Fragen - Seite 2053

 

Warum überspringt der Compiler dies? (MT4/MT5).

double x=1;
double a=1/(x*0);

Nur zur Laufzeit taucht die Division durch 0 auf.

 
Kirill Belousov:

Warum überspringt der Compiler dies? (MT4/MT5).

Nur zur Laufzeit taucht die Division durch 0 auf.

Wahrscheinlich, weil der Compiler den Wert nicht berechnet, sondern nur den Programmcode in Maschinencode umwandelt.

 
Wie sieht es mit dem Signal-Ranking aus?

Ich bin entweder auf dem letzten Platz oder in der Mitte
 

Was ist mit dem Gann-Raster im MT5 falsch? Können die Enden der Kontrolllinie nicht entlang der Y-Achse verschoben werden?

 
Im Strategietester, wenn der Code Autovervollständigung Ersetzungen für Instanzvariablen in Form von Kommentaren hat, dann in der Optimierung Einstellungen super, aber nach der Optimierung die wirklichen Variablennamen sind in der Tabelle. Das ist verwirrend - man muss ständig in den Code schauen.
 

Sehr geehrte Verwaltung.

Fehler im MT5 Strategy Tester Bericht 1653

Makler ActiveTrades

mein Expert Advisor eröffnet zunächst eine Position und ändert dann die Stopps (SYMBOL_TRADE_EXECUTION_MARKET)

Dies wird normalerweise in den Protokollen angezeigt.

Aber beim Speichern des Berichts! gibt es keine Haltestellen im Bericht.

SYMBOL_FILLING_MODE=3 SYMBOL_TRADE_EXEMODE=2 SYMBOL_EXPIRATION_MODE=7 SYMBOL_TRADE_MODE=4 SYMBOL_TRADE_STOPS_LEVEL=0 SYMBOL_TRADE_FREEZE_LEVEL=0 SYMBOL_ORDER_MODE=127 SYMBOL_START_TIME=0 SYMBOL_EXPIRATION_TIME=0 SYMBOL_SPREAD=5 SYMBOL_SESSION_DEALS=0
IE      0       09:43:35.667    Core 1  2017.08.01 02:10:00   market buy 0.01 EURUSD (1.18278 / 1.18283 / 1.18278)
JP      0       09:43:35.667    Core 1  2017.08.01 02:10:00   deal #2  buy 0.01 EURUSD at 1.18283 done (based on order #2)
 OH      0       09:43:35.667    Core 1  2017.08.01 02:10:00   deal performed [#2  buy 0.01 EURUSD at 1.18283]
LN      0       09:43:35.667    Core 1  2017.08.01 02:10:00   order performed buy 0.01 at 1.18283 [#2  buy 0.01 EURUSD at 1.18283]
EQ      0       09:43:35.667    Core 1  2017.08.01 02:10:00   ModifyOrders Modify  2 POSITION_TYPE=0 stoploss=1.17678 takeprofit=0.0 request.sl=1.17678 request.tp=0.0 POSITION_SL=0.0 POSITION_TP=0.0 SYMBOL_BID=1.18278 SYMBOL_ASK=1.18283 stops_level=0
OR      0       09:43:35.667    Core 1  2017.08.01 02:10:00   position modified [#2  buy 0.01 EURUSD 1.18283 sl: 1.17678]
DE      0       09:43:35.667    Core 1  2017.08.01 02:10:00   ModifyOrders Modify = 10009 symbol EURUSD volume 0.0 action 6 tp 0.0 sl 1.17678 type 0 price 0.0   Request completed
CL      0       09:43:35.667    Core 1  2017.08.01 02:10:00   Result = 10009 symbol EURUSD volume 0.0 action 6 tp 0.0 sl 1.17678 type 0 price 0.0   Request completed


Die Felder Stop Loss und Take Profit sind leer.


Dies geschieht nur bei SYMBOL_TRADE_EXECUTION_MARKET.

Obwohl, wenn ich mit Stop Loss schließe, ist alles korrekt eingestellt...

 
Alexey Viktorov:

Wahrscheinlich, weil der Compiler den Wert nicht berechnet, sondern nur den Programmcode in Maschinencode umwandelt.

Wenn der Nenner eine Konstante ist, z. B. x/(5*0), wird der Fehler bei der Kompilierung erkannt.

d.h. der Compiler übersetzt nicht nur den Code, sondern führt auch die Berechnung durch.

Es scheint mir, dass der Compiler einen Fall erkennen sollte, in dem der Nenner ein Produkt ist, in dem einer der Terme 0 (konstant) ist, dann sollte der Compiler einen Fehler bei der Division durch 0 erzeugen.

 
FileReadArray() liest ein Array von Daten nicht, wenn die Dateigröße INT_MAX Bytes überschreitet.
 
Roffild:
FileReadArray() liest kein Datenfeld, wenn die Dateigröße INT_MAX Bytes überschreitet.

Es handelt sich nicht um ein FileReadArray, sondern um ein Array, das nicht größer als diese Größe sein kann. Das ist kein Fehler, sondern Absicht.

 
Kirill Belousov:

Wenn der Nenner eine Konstante ist, z. B. x/(5*0), wird der Fehler bei der Kompilierung erkannt.

d.h. der Compiler übersetzt nicht nur den Code, sondern führt auch die Berechnung durch.

Es scheint mir, dass der Compiler einen Fall erkennen sollte, in dem der Nenner ein Produkt ist, in dem einer der Terme 0 (konstant) ist, dann sollte der Compiler einen Fehler bei der Division durch 0 erzeugen.

Kennen Sie eine Sprache und deren Compiler, die solche Fehler abfangen können?

Grund der Beschwerde: