Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 114

 
Yedelkin:
Ich finde es schwer zu beantworten. Ich habe Ihre Nachrichten noch einmal gelesen, aber die Idee, die Größe des Arrays zu ändern, habe ich nicht verstanden. Die Antwort auf den Code hängt auch vom Verständnis des Konzepts ab. Vielleicht wird jemand anderes antworten.

Es ist mir egal, ob ich die Größe des Arrays ändere, ich gebe ihm zum Beispiel 20.

 double masCenPoc[20]; 

 for(int i=0; i<20; i++){
 
   if((cena_poc < high && cena_poc < low)||(cena_poc > high && cena_poc > low))

//как вот дальше обозначить чтоб он запомнил значение цены уровня Рос?
    
    masCenPoc[i] = cena_poc;

else 

//и удалил значение из массива, если нашлось пересечение с ценой этого уровня Рос?
 
Top2n: Es ist mir egal, ob ich die Größe des Arrays ändere; ich setze sie z. B. auf 20.

Hier haben Sie ein Array mit 20 Elementen. Nehmen wir an, dass die if-Bedingung gilt - wir weisen dem ersten Element des Arrays einen Preiswert zu: masCenPoc[0] = cena_poc;

Was werden wir dem zweiten Element des Arrays zuweisen?

 
Yedelkin:

Hier haben Sie ein Array mit 20 Elementen. Nehmen wir an, dass die if-Bedingung gilt - wir weisen dem ersten Element des Arrays einen Preiswert zu: masCenPoc[0] = cena_poc;

Was sollen wir dem zweiten Element des Arrays zuweisen?

Der nächste Wert von Ros, der n-mal vorkommen wird. Die Ros-Linien erscheinen zu Beginn eines jeden Tages, basierend auf den Ergebnissen des Vortages. Berührt der Kurs das Niveau nicht, wird der Wert dieses Ros-Niveaus im Array gespeichert.
 
Top2n: Der nächste Wert von Ros, der in n Zeitpunkten erreicht wird. Die Ros-Linien erscheinen zu Beginn eines jeden Tages, basierend auf den Ergebnissen des Vortages. Wenn der Preis das Niveau nicht berührt, wird der Wert dieses Ros-Niveaus in dem Array gespeichert.
Ich verstehe. Ich würde wie folgt vorgehen. Ich würde ein Array mit 20 Elementen erstellen und allen den Wert -1 zuweisen. Zu Beginn eines jeden Tages würde ich die Schleife for(int i=0; i<20; i++) ausführen und nach dem ersten Element mit dem Wert -1 im Array suchen. Nachdem ein solches Element gefunden wurde, werden die Handelsbedingungen geprüft(if((cena_poc < high && cena_poc < low)||(cena_poc > high && cena_poc > low)) und bei Erfolg der Wert von cena_poc dem gefundenen Array-Element zugewiesen. Dadurch wird das Array nach und nach mit den gewünschten Werten gefüllt.
 
Top2n: Ich verstehe, danke.
Ja, wenn Sie ein nicht-dynamisches Array verwenden (wie in Ihrem letzten Beispiel), brauchen Sie diese Funktion auch nicht. Wenn Sie ein dynamisches Array benötigen, deklarieren Sie es in den ersten Codezeilen vor der Schleife und bestimmen Sie seine Größe.
 
Top2n:

Es ist mir egal, ob ich die Größe des Arrays ändere, ich gebe ihm zum Beispiel 20.

Es muss einen Sinn ergeben. In diesem Fall ist ein Array nicht unbedingt erforderlich. In einer Schleife mit weiteren Berechnungen ist vielleicht 1 Variable ausreichend. Ich denke, Sie möchten Verlaufsdaten erhalten, daher wäre es logischer, eine Schleife von irgendeinem Balken bis 0 zu bilden, und dann werden Ihre Daten erstellt. Wenn Sie ein Array benötigen, sollte es in Ihrem Fall als Stapel akkumuliert werden.

Wenn Sie mit Hilfe von Online-Angeboten bauen wollen, müssen Sie immer noch nach den Stapelregeln vorgehen.

//Удачи!
 

Hallo. Wenn ich versuche, Indikatordaten mit der CopyBuffer-Funktion in ein Array zu kopieren, erhalte ich Werte wie -6.99999999999999999e-005

Was kann der Grund dafür sein?


Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyBuffer - Документация по MQL5
 
sss20192:

Hallo. Wenn ich versuche, Indikatordaten mit der CopyBuffer-Funktion in ein Array zu kopieren, erhalte ich Werte wie -6.99999999999999999e-005

Was kann der Grund dafür sein?


Vielleicht sind die Werte dieselben wie im Original. Es wäre eine gute Idee, den Code zu veröffentlichen.
 

Der Indikator hat verschiedene Daten im Datenfenster. Ich hänge den EA an den H1-Chart an und er kopiert die Daten aus den Zeitrahmen M5, M15 und H1.

int MacdHandleTf1 = iMACD(_Symbol, Timeframe1, FastEMA, SlowEMA, SignalMA, AppliedPrice); 

int MacdHandleTf2 = iMACD(_Symbol, Timeframe2, FastEMA, SlowEMA, SignalMA, AppliedPrice); 

int MacdHandleTf3 = iMACD(_Symbol, Timeframe3, FastEMA, SlowEMA, SignalMA, AppliedPrice); 

CopyBuffer(MacdHandleTf1, 0, 1, 1, MacdArray);

Print(NormalizeDouble(MacdArray[0], 5)); 

CopyBuffer(MacdHandleTf2, 0, 1, 1, MacdArray);

Print(NormalizeDouble(MacdArray[0], 5)); 

CopyBuffer(MacdHandleTf3, 0, 1, 1, MacdArray); 

Print(NormalizeDouble(MacdArray[0], 5));