Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 319

 
Vitaly Muzichenko:

Limit - die Anzahl der Balken im Diagramm, so dass der Indikator beim Scrollen durch den Verlauf bis zum Ende des Verlaufs angezeigt wird.


Herzlichen Dank! :)

 

Hallo, könnten Sie mir sagen, wie ich den Parameter - apply to - Median Price in den Indikator schreiben kann, in diesem Fall Moveng

Ich werde das Problem beschreiben, der Indikator hat ein Array[][] es Datensätze, um die MA zu berechnen - die Daten wurden an HL/2 Preise aufgezeichnet, nicht die Standard

 

Hallo, ich versuche, ein Objekt der Klasse CDecisionForest in eine bin-Datei zu schreiben (es ist aus der Alglib-Bibliothek), aber ich kann nicht herausfinden, wie. Ich habe versucht, mit FileWriteStruct, aber der Compiler gibt einen Fehler auf meine Klasse Argument:

'df' - structures containing objects are not allowed

Ist es tatsächlich möglich, es zu schreiben, oder muss ich das Objekt zerlegen, es in Teilen schreiben und dann wieder zusammensetzen?
 
Vitaly Muzichenko:

Limit - Anzahl der Balken im Diagramm, so dass der Indikator beim Scrollen durch die Historie bis zum Ende der Historie angezeigt wird.


Sehr geehrter Herr, bitte erklären Sie das.

Ich habe die Informationen in Ihrem Link nicht nutzen können.

Wenn ich den Grenzwert selbst festlege, wird das Fenster "Array out of range" angezeigt.

Der Debugger zeigt auf Strings mit Arrays in der for-Schleife.

for(int i=0; i<limit; i++) {
    RSI[i] = iRSI(Symbol(),TimeFrame,14,PRICE_CLOSE,i);
  }

for(int i=0; i<limit; i++) {
    BandsMn[i]=iBandsOnArray(RSI,0,BB_Period,BB_Dev,0,MODE_MAIN,i);
    BandsUp[i]=iBandsOnArray(RSI,0,BB_Period,BB_Dev,0,MODE_UPPER,i);
    BandsDn[i]=iBandsOnArray(RSI,0,BB_Period,BB_Dev,0,MODE_LOWER,i);
  }

Vielleicht gibt es einen einfacheren Weg, das alles zu tun?
Ich brauche die Zeichnung nicht.

Nur Werte des aktuellen und des vorherigen Balkens.

 
Ras al Ghul:

Sehr geehrter Herr, könnten Sie das bitte erklären?

Mit den Informationen auf Ihrem Link habe ich keinen Erfolg erzielt.

Wenn ich den Grenzwert selbst festlege, wird das Fenster "Array out of range" angezeigt.

Der Debugger zeigt auf Strings mit Arrays in der for-Schleife.

Vielleicht lässt sich das auf einfachere Weise bewerkstelligen?
Ich brauche keine Zeichnung.

Nur die Werte des aktuellen und des vorherigen Balkens.

Wie berechnen Sie den Grenzwert?

Der Grenzwert wird in der umgekehrten Berechnung des Indikators berechnet - vom Beginn der Geschichte bis zu ihrem Ende (bis zu den aktuellen Daten):

   if(rates_total<нужное_количество_баров_для_верного_расчёта) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1) {
      limit=rates_total-нужное_количество_баров_для_верного_расчёта-1;
      // здесь, при необходимости очистки мусора в буферах, их инициализация пустыми значениями
      }
   //---
   for(int i=limit; i>=0; i--) {
      // тут цикл просчёта индикатора
      }
Der Begriff"notwendige_Anzahl_der_Balken_für_die_Treue_der_Berechnung" bezeichnet die Mindestanzahl der Balken, auf denen der Indikator korrekt berechnet wird. Bei einem 2X2-Fraktal gibt es sechs Balken - zwei auf der linken Seite, einen in der Mitte, zwei auf der rechten Seite und einen ganz rechts, die vollständig ausgebildet sein müssen, damit das Fraktal nicht neu berechnet wird.
 

Hallo, könnten Sie mir bitte sagen, wie ich die Größe eines eindimensionalen Arrays in einem Indikator erhöhen kann?

Vorausgesetzt, es hat einen Pufferindex zum Aufruf von

Und die Größe des Arrays übersteigt die Anzahl der Balken

 

Ich habe den Eindruck, dass ich an einem so einfachen Ort festsitze. Was ist mit global int chekcount=0; int count=0; für den Fall, dass ich mehrere counter()-Funktionen parallel ausführen möchte?

void OnTimer()
  {
Print("counter(10)= ",counter(10));
Print("counter(14)= ",counter(14)); // !!!
  }

int chekcount=0; //???
int count=0; //???

int counter(int Pause=10)
  {
   count++;
   if(count>=chekcount+Pause)
      chekcount=count;

   return(chekcount);
  }

 
Nauris Zukas:

Ich habe den Eindruck, dass ich an einem so einfachen Ort festsitze. Was ist mit global int chekcount=0; int count=0; zu tun, wenn ich mehrere counter()-Funktionen parallel ausführen möchte?

Verwenden Sie einfach eine Klasse, oder erstellen Sie Kopien von Funktionen mit anderen Namen.

 
Vitaly Muzichenko:

Verwenden Sie nur eine Klasse, oder erstellen Sie Kopien von Funktionen mit unterschiedlichen Namen.

So einfach ist das also nicht... Ich danke Ihnen!

 

Kann jemand diese Funktion mit einer Klasse umschreiben, wenn es nicht schwierig ist?

void OnTimer()
  {
Print("counter(10)= ",counter(10));
Print("counter(14)= ",counter(14)); // !!!
  }

int chekcount=0; //???
int count=0; //???
int counter(int Pause=10)
  {
   count++;
   if(count>=chekcount+Pause)
      chekcount=count;
   return(chekcount);
  }
Grund der Beschwerde: