Fehler, Irrtümer, Fragen - Seite 811

 
abeiks:

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.

if(CopyBuffer(Handle[Number],0,0,20,ma)<0)

fehlt offensichtlich ein Scheck:

  1. BarsCalculated >= 20
  2. CopyBuffer==20
Dateien:
exp_tema.mq5  27 kb
 
sergeev:

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

 
Fia:


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?

 
Fia:

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.

2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   Конец_Vhod=30.00
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   a+b=30.00
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=15.00, b=15.00, a/b=1.00
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=14.00, b=15.00, a/b=0.93
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=13.00, b=15.00, a/b=0.87
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=12.00, b=15.00, a/b=0.80
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=11.00, b=15.00, a/b=0.73
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=10.00, b=15.00, a/b=0.67
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=9.00, b=15.00, a/b=0.60
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=8.00, b=15.00, a/b=0.53
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=7.00, b=15.00, a/b=0.47
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=6.00, b=15.00, a/b=0.40
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=5.00, b=15.00, a/b=0.33
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=4.00, b=15.00, a/b=0.27
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=3.00, b=15.00, a/b=0.20
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=2.00, b=15.00, a/b=0.13
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   а=1.00, b=15.00, a/b=0.07
2012.08.16 18:42:34     Test_001 (GBPUSD,M15)   Начало_Vhod=0.00

Win7 x64

MT5 x64 Build 687

 
alexvd:

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.

Dateien:
1.ex5  5 kb
 
alexvd:

Genau dort

eindeutig unzureichende Kontrollen:

  1. BarsCalculated >= 20
  2. CopyBuffer==20

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?)

 
Fia:
Win7 64bit MT5 687 bauen
Wie hoch ist die Bitrate des Terminals?
 

Unklare Symbole tauchten während der Optimierung auf

In der Registerkarte "Vertikale Optimierung" sind alle Werte -1

 
alexvd:

Genau dort

eindeutig unzureichende Kontrollen:

  1. BarsCalculated >= 20
  2. CopyBuffer==20

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?

Grund der Beschwerde: