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

 
Alexandr Sokolov:

Ich habe einen Code, der nicht in MQL5 in meinem Indikator ausgeführt wird

Der Punkt ist, dass wennPreis == STO_LOWHIGH alles richtig funktioniert, aber wenn Preis == STO_CLOSECLOSE die Funktion nur statischen Variablen zuweist

... Umgehung der Schleife

aber genau dieselbe Funktion funktioniert korrekt in MQL4

 
Alexandr Sokolov:

aber die gleiche Funktion funktioniert korrekt in MQL4

Dann müssen Sie angeben, welche Arrays High[] Close[]

Wenn sie aus mql4 stammen, sind sie in mql5 nicht verfügbar, wenn sie benutzerdefiniert sind... Ich kann keine Vorschläge machen.

 
Alexandr Sokolov:

Ich möchte die üblichen maxHigh und minLow Stochastik innerhalb der Periode K von Low/High und Close/Close

Low/High während der Initialisierung funktioniert gut, aber Close/Close nicht

Es ist einfacher, fmax() oder fmin() aus dem durch CopyBuffer() erhaltenen Array zu ermitteln

 
Alexey Viktorov:

Dann müssen wir klären, was Arrays High[] Close[] sind

Wenn sie aus mql4 stammen, sind sie in mql5 nicht verfügbar, wenn sie benutzerdefiniert sind... Ich kann keine Vermutungen anstellen.

Hier ist der Inhalt dieser Puffer in MQL5

int count = rates_total - prev_calculated, copied = 0; if(count < (int)kperiod + (int)dperiod + (int)slowing) {count = (int)kperiod + (int)dperiod + (int)slowing;};
   if(mode == m1 && price == STO_LOWHIGH) {copied = CopyOpen(_Symbol,PERIOD_CURRENT,0,count,Open); if(copied != count) return(0);};
   if(price == STO_LOWHIGH) {copied = CopyHigh(_Symbol,PERIOD_CURRENT,0,count,High); if(copied != count) return(0);};
   if(price == STO_LOWHIGH) {copied = CopyLow(_Symbol,PERIOD_CURRENT,0,count,Low); if(copied != count) return(0);};
   copied = CopyClose(_Symbol,PERIOD_CURRENT,0,count,Close); if(copied != count) return(0);
 
Alexey Viktorov:

Es ist einfacher, fmax() oder fmin() aus dem durch CopyBuffer() erhaltenen Array zu ermitteln

Ich benötige Werte nicht aus dem gesamten Puffer, sondern innerhalb eines Zeitraums K
Wie kann ich es sonst implementieren, wenn ich berücksichtige, dass ich die Daten unter Berücksichtigung der Verzögerungszeit kopieren muss?

 
Alexandr Sokolov:

Ich benötige nicht die Werte aus dem gesamten Puffer, sondern innerhalb des Zeitraums K
. Wie kann ich das sonst realisieren, da ich die Daten unter Berücksichtigung der Verzögerungszeit kopieren muss?

Gestern habe ich dasselbe gemacht, nur mit hohen und niedrigen Feldern

   for(i = limit; i < rates_total; i++)
    {
     UpperBuf[i] = high[ArrayMaximum(high, i-period, period)];
     LowerBuf[i] = low[ArrayMinimum(low, i-period, period)];
     MidBuf[i] = (UpperBuf[i]+LowerBuf[i])/2;
    }

Ohne Zeitreihenumkehr. Also, wie in mql5? festgelegt, Null-Balken auf der linken Seite.

Außerdem ist es möglich, nicht den gesamten Indikatorpuffer zu kopieren, sondern nur die angegebene Menge eines bestimmten Balkens. Und ich habe fälschlicherweise fmax() und fmin() empfohlen. Ich meinte ArrayMaximum()

 
Alexandr Sokolov:

Ich möchte die normale maxHigh und minLow Stochastik innerhalb einer Periode K von Low/High und Close/Close erhalten

Low/High während der Initialisierung funktioniert gut, Close/Close jedoch nicht

Es gibt Standardfunktionen für Zeitreihen

Maximum=iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,num,startbar));
Minimum=iLow(_Symbol,_Period,iLowest(_Symbol,_Period,MODE_LOW,num,startbar));
 
Taras Slobodyanik:

Es gibt Standardfunktionen für Zeitreihen

Es ist ratsam, von Anfang an zu lesen, um gute Ratschläge zu erhalten. Von wo aus die erste Frage gestellt wurde und wie die Diskussion weiterging.

 
Alexey Viktorov:

Es ist ratsam, von Anfang an zu lesen, um gute Ratschläge zu erhalten. Von wo aus die erste Frage gestellt wurde und wie die Diskussion weiterging.

Es scheint, dass der Mann von Anfang an die Zeitreihen auf der Suche nach Min/Max durchgeht.
Es ist möglich, auf sie zu verzichten.

void KValues(int i)
  {
   if (price == STO_LOWHIGH)
      {
      vhigh=iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,kperiod,i));
      vlow=iLow(_Symbol,_Period,iLowest(_Symbol,_Period,MODE_LOW,kperiod,i));
      }
   else
      {
      vhigh=iClose(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_CLOSE,kperiod,i));
      vlow=iClose(_Symbol,_Period,iLowest(_Symbol,_Period,MODE_CLOSE,kperiod,i));
      }
  }
(habe es nicht überprüft).
 
Taras Slobodyanik:

Es scheint, als hätte er sich die Sache von Anfang an angesehen - der Mann geht die Zeitreihen durch und sucht nach Minimum/Maximum.
Es geht auch ohne.

(habe es nicht überprüft).

Er will stochastische Werte.

Obwohl... Ich bin selbst schon verwirrt, was es braucht. Es sieht aus wie eine stochastische Bedingung, aber es kopiert Balken...
Grund der Beschwerde: