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

 
Artyom Trishkin:

IndikatorZiffern(5)

Ich danke Ihnen!
 

Lassen Sie mich Ihnen eine weitere Frage stellen. Basierend auf demselben Indikator. Gehen wir davon aus, dass wir den Indikator an das Diagramm anhängen. Wir erhalten den ersten Wert von Bid1. Dann erhalten wir den zweiten Wert von Bid2. Und wir müssen diese beiden Werte vergleichen. Von der zweiten subtrahieren wir die erste und erhalten die Zahl, die wir zur ersten Bid1 addieren.

Gebot1=1.11133

Bid2=1.11135

Gebot2-Gebot1=0,00002

Gebot1+0,00002=1,11135

Ich gehe davon aus, dass das Ergebnis dasselbe ist wie bei dem ursprünglichen Indikator.

Ich möchte nur die Implementierung sehen und die Logik des Codes verstehen.

 
Alexey Viktorov:

Sie müssen sie in den Dateieigenschaften freischalten.

Ich danke Ihnen! :)
 
jaffer wilson :

Zwei Aussagen:

Druck: 22,33

И

Druck: 2.00000

Warum gibt es unterschiedliche Ergebnisse? In C / C ++ funktioniert die obige Anweisung einwandfrei.

Hat jemand eine Idee zu diesem Problem?

 

Helfen Sie mir, die Preis-Arrays in mt5 zu verstehen. Das geht aus dem Indikator nicht hervor. Ich gebe Preise aus, die in OnCalculate stehen:

  for(int i=10; i>=0; i--)
         PrintFormat("s- open[%d] = %d",i,open[i]);

Ich bekomme seltsame Preise:

2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[10] = 1597040639
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[9] = -523642413
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[8] = 1691873517
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[7] = 590987500
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[6] = 1583296744
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[5] = 115448721
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[4] = 360090058
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[3] = -1597040639
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[2] = -856244680
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[1] = 366962006
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[0] = -1209462791

Ich mache es andersherum, ich erstelle ein Array und kopiere es (ich suche es durch Ausprobieren, es ist mir nicht klar):

double Open[];//глобальная
CopyOpen(NULL,0,0,Bars_To_Process*2,Open); //OnCalculate
 for(int i=10; i>=0; i--)
         PrintFormat("Open[%d] = %d",i,Open[i]);//OnCalculate

Und ich erhalte ähnliche Ergebnisse:

2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[10] = 1356522471
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[9] = -1708366192
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[8] = -729800843
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[7] = 1499458982
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[6] = 167675523
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[5] = -90709709
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[4] = -321607151
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[3] = -314735203
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[2] = -314735203
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[1] = 1663011337
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[0] = -1408749273

Noch interessanter wird es bei Datteln. Ich drucke Daten, die in OnCalculate enthalten sind:

for(int i=10; i>=0; i--)
         PrintFormat("s- time[%d] = %s",i,TimeToString(time[i]));

Ich verstehe das:

2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[10] = 2015.12.02 10:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[9] = 2015.12.02 09:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[8] = 2015.12.02 08:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[7] = 2015.12.02 07:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[6] = 2015.12.02 06:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[5] = 2015.12.02 05:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[4] = 2015.12.02 04:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[3] = 2015.12.02 03:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[2] = 2015.12.02 02:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[1] = 2015.12.02 01:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[0] = 2015.12.02 00:00

Und wenn ich es kopiere:

datetime Time[];
CopyTime(NULL,0,0,Bars_To_Process*2,Time);
for(int i=10; i>=0; i--)
         PrintFormat("Time[%d] = %s",i,TimeToString(Time[i]));

Es wird gut ausgedruckt:

2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[10] = 2020.01.15 10:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[9] = 2020.01.15 11:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[8] = 2020.01.15 12:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[7] = 2020.01.15 13:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[6] = 2020.01.15 14:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[5] = 2020.01.15 15:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[4] = 2020.01.15 16:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[3] = 2020.01.15 17:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[2] = 2020.01.15 18:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[1] = 2020.01.15 19:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[0] = 2020.01.15 20:00

Aber mit Dates allein kommt man nicht weit. Helfen Sie mir zu verstehen. Wie erhalte ich die korrekten Eröffnungs- und Schlusskurse?

 
Yevhenii Levchenko:

Helfen Sie mir, die Preis-Arrays in mt5 zu verstehen. Das geht aus dem Indikator nicht hervor. Ich gebe die Preise aus, die in OnCalculate stehen:

for(int i=10; i>=0; i--)
         PrintFormat("s- open[%d] = %d",i,open[i]);

Machen Sie es so:

for(int i=10; i>=0; i--)
{
   Print("s- open[",i,"] = ",open[i]);
}

Sie haben eine falsche Typangabe in der formatierten Ausgabe verwendet

 
Igor Makanu:

dies tun:

Sie haben die falsche Typangabe in der formatierten Ausgabe verwendet

Aaaaahhhh, Scheiße! Herzlichen Dank, Igor!

Ich hätte %f schreiben sollen... Ich habe es falsch... und ich habe ArraySetAsSeries überall zu setzen. Es ist ein bisschen komisch...

 
Igor Makanu:

bitte

Ich würde nicht raten, ArraySetAsSeries() zu verwenden, wenn Sie den Indikator-Code von Grund auf neu schreiben (wenn Sie es von MQL4 portieren - eine andere Sache),

verwenden Sie rates_total als die Nummer des rechten Balkens - 1, Sie werden sich schneller an die Indikatorlogik in MQL5 gewöhnen

Ich danke Ihnen!

Nicht von Grund auf neu schreiben... Ich übertrage den mt4-Indikator auf mt5
 
Oleg Bondarev:

Lassen Sie mich eine andere Frage stellen. Basierend auf demselben Indikator. Gehen wir davon aus, dass wir den Indikator an das Diagramm anhängen. Wir erhalten den ersten Wert von Bid1. Dann erhalten wir den zweiten Wert von Bid2. Und wir müssen diese beiden Werte vergleichen. Von der zweiten subtrahieren wir die erste und erhalten die Zahl, die wir zur ersten Bid1 addieren.

Gebot1=1.11133

Bid2=1.11135

Gebot2-Gebot1=0,00002

Gebot1+0,00002=1,11135

Ich gehe davon aus, dass das Ergebnis dasselbe ist wie bei dem ursprünglichen Indikator.

Ich möchte nur die Implementierung sehen und die Logik des Codes verstehen.

Helfen Sie mir. Ich kann allein nichts zum Laufen bringen. Ich mache 2 Puffer x[ ] zum Vergleich der Bid-Werte und y[ ] zum Plotten. Und nichts.

 
Oleg Bondarev:

Ich brauche Ihre Hilfe. Ich kann allein nichts zum Laufen bringen. Ich mache 2 Puffer x[ ] zum Vergleich der Bid-Werte und y[ ] zum Plotten. Und nichts.

Versuchen Sie, die Frage anders zu stellen, Ihre Frage ist wahrscheinlich nicht klar