Fehler, Irrtümer, Fragen - Seite 2572

 
Vict:

Wie erstellt man einen CJVal? wahrscheinlich new CJVal()?

Es ist unwahrscheinlich, dass das Terminal dies bemerkt.

Nein, wie im Beispiel des biblischen Autors, auf dem Stapel

CJAVal js(NULL, jtUNDEF);
 

Ich habe festgestellt, dass in meinem visuellen Testmodus SymbolInfoTick() einen Wert zurückgibt, aber die Close[0]-Zeitreihe einen anderen Wert hat.

Ist es mein Fehler? Mache ich etwas falsch?

Es scheint, als ob es die gleichen Werte sein sollten:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   MqlTick mtLastTick;
   SymbolInfoTick(Symbol(),mtLastTick);
   
   ArraySetAsSeries(close,true);


   Comment("Close[0] = " + DoubleToString(close[0],5) + "\nLastBid = " + DoubleToString(mtLastTick.bid,5));
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Normalerweise beträgt der Unterschied 1-2 Punkte, aber bei starken Bewegungen kann er auch größer sein.

Geht es nur mir so?

Wenn sich herausstellt, dass SymbolInfoTick() einen anderen Wert als Close[0] liefert, gehe ich davon aus, dass der korrekte Wert Close[0] ist, und lasse den Spread so, wie er von SymbolInfoTick() zurückgegeben wurde.

Ich möchte jedoch wissen, welcher Preis korrekt ist und ob es Close[0] oder SymbolInfoTick() ist.

Dateien:
TestTick.mq5  2 kb
 
Georgiy Merts:

Ich habe festgestellt, dass in meinem visuellen Testmodus SymbolInfoTick() einen Wert zurückgibt, aber die Close[0]-Zeitreihe einen anderen Wert hat.

Ist es mein Fehler? Mache ich etwas falsch?

Es scheint, dass es die gleichen Werte sein sollten:

Normalerweise beträgt der Unterschied 1-2 Punkte, aber bei starken Bewegungen kann er auch größer sein.

Geht es nur mir so?

Wenn sich herausstellt, dass SymbolInfoTick() einen anderen Wert als Close[0] liefert, dann denke ich, dass der richtige Wert Close[0] ist, und ich lasse die Spanne so, wie sie von SymbolInfoTick() zurückgegeben wurde.

Aber ich möchte wissen, welcher Preis richtig ist - ob es SymbolInfoTick() oder Close[0] ist.

Es gibt auch SymbolInfoDouble(_Symbol,SYMBOL_BID).

 
Andrey Barinov:

Es gibt auch SymbolInfoDouble(_Symbol,SYMBOL_BID)

Ja, sie gibt dasselbe zurück wie SymbolInfoTick().

 

Einige Hinweise zu globalen Variablen. Das Problem der Speicherung von Ticks aus Market Watch wurde behoben.

Jeder neue Tick erhöht die entsprechende globale Variable um eins. Nach Augenmaß empfängt Market Watch etwa 100 Ticks pro Sekunde.

Insgesamt werden die globalen Variablen mit einer Rate von 100 Hz aktualisiert. Ich frage mich, ob sich das negativ auf die SSD auswirkt?

Ich schreibe die Ticks selbst alle 1000 (~1 Gb für eine Woche). Also, ich habe kein Problem damit. Aber mit global - habe vorher nicht gedacht, dass sie bei jedem Update auf SSD geschrieben werden.

Deshalb hatte ich eine solche Frage.

 
fxsaber:

Einige Hinweise zu globalen Variablen. Das Problem der Speicherung von Ticks aus Market Watch wurde behoben.

Jeder neue Tick erhöht die entsprechende globale Variable um eins. Nach Augenmaß empfängt Market Watch etwa 100 Ticks pro Sekunde.

Insgesamt werden die globalen Variablen mit einer Rate von 100 Hz aktualisiert. Ich frage mich, ob sich das negativ auf die SSD auswirkt?

Ich schreibe die Ticks selbst alle 1000 (~1 Gb für eine Woche). Also, ich habe kein Problem damit. Aber mit global - habe vorher nicht gedacht, dass sie bei jedem Update auf SSD geschrieben werden.

Deshalb hatte ich eine solche Frage.

Sie werden nicht bei jeder Aktualisierung auf die Festplatte geschrieben.

 
fxsaber:

Einige Hinweise zu globalen Variablen. Das Problem der Speicherung von Ticks aus Market Watch wurde behoben.

Jeder neue Tick erhöht die entsprechende globale Variable um eins. Nach Augenmaß empfängt Market Watch etwa 100 Ticks pro Sekunde.

Insgesamt werden die globalen Variablen mit einer Rate von 100 Hz aktualisiert. Ich frage mich, ob sich das negativ auf die SSD auswirkt?

Ich schreibe die Ticks selbst alle 1000 (~1 Gb für eine Woche). Also, ich habe kein Problem damit. Aber mit global - habe vorher nicht gedacht, dass sie bei jedem Update auf SSD geschrieben werden.

Deshalb wurde diese Frage gestellt.

Ich denke, globale Terminalvariablen werden über Ressourcen mit periodischer automatischer Speicherung auf der Festplatte implementiert. Ich glaube nicht, dass die automatische Speicherung öfter als einmal alle 3 Sekunden erfolgt, wahrscheinlich viel seltener, und es ist sogar möglich, dass sie nur bei einem Deinit-Ereignis erfolgt.

 

Ich möchte nicht nachschlagen, was ich einmal in der Hilfe über globale Variablen des Terminals gelesen habe, aber es scheint, dass sie gespeichert werden, wenn das Terminal geschlossen wird - obwohl ich es vielleicht vergessen habe, es ist schon lange her, dass ich es gelesen habe

es ist einfacher zu überprüfen, im Windows Task Manager gibt es ein Diagramm der Festplattennutzung


 
Igor Makanu:

Ich möchte nicht nachschlagen, was ich einmal in der Hilfe über globale Variablen des Terminals gelesen habe, aber es scheint, dass sie gespeichert werden, wenn das Terminal geschlossen wird - obwohl ich es vielleicht vergessen habe, es ist schon lange her, dass ich es gelesen habe

es ist leicht zu überprüfen, im Windows Task Manager gibt es eine Tabelle zur Festplattennutzung


Wahrscheinlich in der Fußnote hier.

 
Vielen Dank an alle, die geantwortet haben. Die Spülfunktion verwirft sofort alle ambivalenten Interpretationen.