MetaTrader 4 Build 529 beta mit neuem Compiler veröffentlicht - Seite 39

 
Außerhalbdes Bereichs weist eindeutig auf einen Fehler im Code hin - er geht über das Feld hinaus. Die Zeichenfolge und der Fehlerort sind dort angegeben, also suchen Sie den Fehler.
 

Hier ist der Code.


datetime   prevtime0 = 0;
double prevVolume0 =0;
double prevClose0 =0;
void init()
{
   Print("_______Test init");
   prevtime0 = iTime(NULL,PERIOD_M1,0); 
   prevVolume0 = iVolume(NULL,PERIOD_M1,0);
   prevClose0 = iClose(NULL,PERIOD_M1,0);
}

void start()
{
  Print(" prevtime0!!!!! = ",prevtime0," iTime(NULL,PERIOD_M1,0) =",iTime(NULL,PERIOD_M1,0) );
  Print(" prevVolume0!!!!! = ",prevVolume0," iVolume(NULL,PERIOD_M1,0) =",iVolume(NULL,PERIOD_M1,0) );
  Print(" prevClose0!!!!! = ",prevClose0," iClose(NULL,PERIOD_M1,0) =",iClose(NULL,PERIOD_M1,0) );
  Print("");

  prevtime0 = iTime(NULL,PERIOD_M1,0); 
  prevVolume0 = iVolume(NULL,PERIOD_M1,0);
  prevClose0 = iClose(NULL,PERIOD_M1,0);

}

Hier ist das Ergebnis der Ausführung im Terminal Version 4.0 Build 536

2013.11.11 22:53:08 Test EURJPY,M1: prevClose0!!!!! = 133.02 iClose(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:53:08 Test EURJPY,M1: prevVolume0!!!!! = 133.02 iVolume(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:53:08 Test EURJPY,M1: prevtime0!!!!! = 2013.11.11 22:38:00 iTime(NULL,PERIOD_M1,0) =2013.11.11 22:38:00
2013.11.11 22:52:25 Test EURJPY,M1:
2013.11.11 22:52:25 Test EURJPY,M1: prevClose0!!!!! = 133.02 iClose(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:52:25 Test EURJPY,M1: prevVolume0!!!!! = 133.02 iVolume(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:52:25 Test EURJPY,M1: prevtime0!!!!! =2013.11.11 22:38:00 iTime(NULL,PERIOD_M1,0) =2013.11.11 22:38:00

Wie Sie sehen können, ändert sich weder iClose, noch iVolume, noch iTime.

Ich gehe davon aus, dass dies der Fall ist, und das gilt auch für die anderen Funktionen, die mit i beginnen.

Außerdem zeigt die Funktion iVolume in diesem Beispiel eindeutig nicht Volume.

Gleichzeitig funktioniert im Testgerät alles und ändert sich, außer iVolume. Auch dort funktioniert es nicht.

Anmerkung.

 
thecore:

Hier ist der Code.


Hier ist das Ergebnis der Ausführung im Terminal Version 4.0 Build 536

2013.11.11 22:53:08 Test EURJPY,M1: prevClose0!!!!! =133.02 iClose(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:53:08 Test EURJPY,M1: prevVolume0!!!!! =133.02 iVolume(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:53:08 Test EURJPY,M1: prevtime0!!!!! =2013.11.11 22:38:00 iTime(NULL,PERIOD_M1,0) =2013.11.11 22:38:00
2013.11.11 22:52:25 Test EURJPY,M1:
2013.11.11 22:52:25 Test EURJPY,M1: prevClose0!!!!! =133.02 iClose(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:52:25 Test EURJPY,M1: prevVolume0!!!!! =133.02 iVolume(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:52:25 Test EURJPY,M1: prevtime0!!!!! =2013.11.11 22:38:00 iTime(NULL,PERIOD_M1,0) =2013.11.11 22:38:00

Wie Sie sehen können, ändert sich weder iClose, noch iVolume, noch iTime.

Ich gehe davon aus, dass andere Funktionen, die mit i beginnen, sich ebenfalls nicht ändern.

Außerdem zeigt die iVolume-Funktion in diesem Beispiel eindeutig nicht Volume.

Gleichzeitig funktioniert im Testgerät alles und ändert sich, außer iVolume. Auch dort funktioniert es nicht.

Anmerkung.

Nun, ich habe es getan. Was ist los?
 
tara:
Nun, ich habe es getan. Was ist los?


Genau...

Die Funktion iTime(NULL,PERIOD_M1,0) gibt die falsche Zeit vom linken Terminal an.

Terminal ergibt 2013.11.11 22:53:08, iTime ergibt 2013.11.11 22:38:00, und sollte ergeben

2013.11.11 22:53:00

iVolume(NULL,PERIOD_M1,0) sollte eine ganze Zahl zurückgeben, zum Beispiel 1, 2, 3, 100, nicht

wie in diesem Beispiel 133,02

iClose sollte im ersten Fall 133,02 und im zweiten Fall 133,03 ausgeben.

 

Alle diese Funktionen funktionieren ein wenig anders, und zwar minütlich. Ihr Druck funktioniert in Ticks. Die Zeit in MT wird in Sekunden gezählt.

Und das zweite Terminal, im Allgemeinen, auf der linken Seite :)

 
tara:

Alle diese Funktionen funktionieren ein wenig anders, nämlich minütlich. Ihr Druck funktioniert in Ticks. Die Zeit in MT wird in Sekunden gezählt.

Und das zweite Terminal, im Allgemeinen, auf der linken Seite :)

Ich verstehe, dass Sie abends niemanden haben, mit dem Sie reden können.

Ich weiß, dass das Protokoll, das ist der Grund, warum in den Ausdruck des Ergebnisses und zeigte SPECIAL

zwei Ergebnisse in unterschiedlichen Minuten.

Und außerdem war diese Nachricht nicht für Sie, sondern für die Entwickler bestimmt.

 
thecore:

iVolume(NULL,PERIOD_M1,0) sollte eine ganze Zahl zurückgeben, zum Beispiel 1, 2, 3, 100, aber nicht

wie in diesem Beispiel 133,02

Es sieht so aus, als ob iVolume tatsächlich den letzten Preis(Schlusskurs) anstelle des Volumens zurückgibt.

Aber die Beschreibung in der Hilfe (die erste stammt aus der Datei, die zweite von der Website) hat mich ziemlich amüsiert

1

datetime  iVolume(
   string           symbol,          // символ
   int              timeframe,       // период
   int              shift            // сдвиг
   );

2

double iVolume(string symbol, int timeframe, int shift)
 
thecore:


Genau...

Die Funktion iTime(NULL,PERIOD_M1,0) gibt die falsche Zeit vom linken Terminal an.

Terminal zeigt 2013.11.11 22:53:08, iTime zeigt 2013.11.11 22:38:00 und sollte zeigen

2013.11.11 22:53:00

iVolume(NULL,PERIOD_M1,0) sollte eine ganze Zahl zurückgeben, zum Beispiel 1, 2, 3, 100, nicht

wie in diesem Beispiel 133,02

iClose sollte im ersten Fall 133,02 und im zweiten Fall 133,03 ausgeben.


Versuchen Sie RefreshRates() zu verwenden, OnTick hat das gleiche Problem, Zeit und Preise werden im Tester nicht aktualisiert, aber wenn Sie RefreshRates() verwenden, ist alles in Ordnung ...
 
Zwei weitere Probleme mit den Indikatoren, bitte wenden Sie sich an den Service Desk!
 
thecore:

Wie Sie sehen können, ändert sich weder iClose, noch iVolume, noch iTime.

Ich nehme an, dass dies auch für die anderen Funktionen gilt, die mit i beginnen.

Außerdem zeigt die Funktion iVolume in diesem Beispiel eindeutig nicht Volume.


Korrigiert. Dankeschön
Grund der Beschwerde: