Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Guten Tag.
Ich versuche, MQL5 zu verwenden.Ich habe exp_tema.mq5 disassembliert und den Code geändert. Jetzt sollte ich in log MA von jeder Kerze (letzten 20) zu drucken. Aber ich verstehe nicht, warum einige Einträge im Protokoll fehlen. Mir ist aufgefallen, dass , wenn ma[3] im Protokoll fehlt, auch kein ma[13] vorhanden ist. Warum ist das so? Wo liegt hier der Fehler?
Hier ist sie.
fehlt offensichtlich ein Scheck:
Ein Video ist nicht erforderlich.
Führen Sie einen detaillierten Ausdruck des Codes durch, damit wir im Protokoll sehen können, was die Zwischenvariablen bedeuten.
#property copyright "Copyright 2011, "
#property link "http://www.mql5.com"#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
double Vhod=0;
Print("Начало_Vhod="+DoubleToString(Vhod,2));
Vhod=linfunc(15);
Print("Конец_Vhod="+DoubleToString(Vhod,2));
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
double linfunc(double b) // имя функции и список параметров
{
double a=1;
while((a/b)<1 && !IsStopped())//-------------------
{
Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2));
a=a+1;
}
Print("а="+DoubleToString(a,2)+", b="+DoubleToString(b,2)+", a/b="+DoubleToString(a/b,2));
Print("a+b="+DoubleToString(a+b,2));
double f=a+b;
// составной оператор
return(f); // возвращаемое значение
}
//+------------------------------------------------------------------+
Hier ist der Code.
Hier ist der Druck
GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0.00
FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07
JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13
CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20
EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27
KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33
PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40
PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47
HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53
MF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60
JR 0 1 (EURUSD,M1) 18:11:13 a=10.00, b=15.00, a/b=0.67
FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73
OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80
MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87
KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93
EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00
DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00
RL 0 1 1 (EURUSD,M1) 18:11:17 Ende_Vhod=0.00
NH 2 1 (EURUSD,M1) 18:11:24 Fehlersuche beendet
Wenn Sie die Debug-EX5 nicht aus dem Editor, sondern direkt im Terminal ausführen - das gleiche Ergebnis?
Können Sie die Debug-EX5 anhängen?
Hier ist sein Abdruck
GM 0 1 (EURUSD,M1) 18:11:11 Start_Vhod=0.00
FO 0 1 (EURUSD,M1) 18:11:13 a=1.00, b=15.00, a/b=0.07
JF 0 1 (EURUSD,M1) 18:11:13 a=2.00, b=15.00, a/b=0.13
CQ 0 1 (EURUSD,M1) 18:11:13 a=3.00, b=15.00, a/b=0.20
EH 0 1 (EURUSD,M1) 18:11:13 a=4.00, b=15.00, a/b=0.27
KS 0 1 (EURUSD,M1) 18:11:13 a=5.00, b=15.00, a/b=0.33
PJ 0 1 (EURUSD,M1) 18:11:13 a=6.00, b=15.00, a/b=0.40
PE 0 1 (EURUSD,M1) 18:11:13 a=7.00, b=15.00, a/b=0.47
HL 0 1 (EURUSD,M1) 18:11:13 a=8.00, b=15.00, a/b=0.53
MF 0 1 (EURUSD,M1) 18:11:13 a=9.00, b=15.00, a/b=0.60
JR 0 1 (EURUSD,M1) 18:11:13 a=10.00, b=15.00, a/b=0.67
FK 0 1 (EURUSD,M1) 18:11:13 a=11.00, b=15.00, a/b=0.73
OP 0 1 (EURUSD,M1) 18:11:13 a=12.00, b=15.00, a/b=0.80
MI 0 1 (EURUSD,M1) 18:11:13 a=13.00, b=15.00, a/b=0.87
KF 0 1 (EURUSD,M1) 18:11:13 a=14.00, b=15.00, a/b=0.93
EO 0 1 (EURUSD,M1) 18:11:13 a=15.00, b=15.00, a/b=1.00
DJ 0 1 (EURUSD,M1) 18:11:14 a+b=30.00
RL 0 1 1 (EURUSD,M1) 18:11:17 Ende_Vhod=0.00
NH 2 1 (EURUSD,M1) 18:11:24 Fehlersuche beendet
Es wird nicht gespielt.
Win7 x64
MT5 x64 Build 687
Wenn Sie die Debug-EX5 nicht aus dem Editor, sondern direkt im Terminal ausführen - das gleiche Ergebnis?
Können Sie Debug-EX5 anhängen?
Es ist interessant, wenn ich es vom Tester aus ausführe, ergibt es 30, wenn ich es als EA ausführe, ergibt es auch 30 beim Drucken.
Wenn ich zum Debugging zurückkehre, wird 0 zurückgegeben.
MetaDriver
Bei welchem Bauwerk und bei welcher Art (entschuldigen Sie den Ausdruck) hat es funktioniert.
Ich muss noch das Video auslegen, wenn niemand sonst dieses Wunder reproduzieren kann.
Genau dort
eindeutig unzureichende Kontrollen:
Danke, ich werde versuchen, sie hinzuzufügen.
Hier ist ein Video (aber wählen Sie eine höhere Auflösung als 720, sonst wird alles in Seife dargestellt)
https://www.youtube.com/watch?v=Prpw6DUYvjY&feature=youtu.be
Win7 64bit MT5 687 bauen
Wie ich herausgefunden habe, scheint der Effekt, wenn return 0 ergibt, nur im Debugger aufzutreten.
Gleichzeitig scheint es zu funktionieren, wenn ich nur die Taste "Schritt während" verwende.
Wenn ich die while-Schleife mit der Taste "step in" beende, funktioniert es nicht, die Ausgabe ist konstant 0.
Im Allgemeinen zeigt das Video alles, aber wie zu sein und was zu tun, bis ich nicht verstehen (und warum ist es so nur ich?)
Win7 64bit MT5 687 bauen
Unklare Symbole tauchten während der Optimierung auf
In der Registerkarte "Vertikale Optimierung" sind alle Werte -1
Genau dort
eindeutig unzureichende Kontrollen:
Allerdings habe ich immer noch Probleme mit den Puffern: Wenn ich sie lese, ist alles klar, aber ich verstehe nicht, wie sie im Code umgesetzt werden sollen. Wenn es nicht zu viel Mühe macht, können Sie es in den Code einfügen?