Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1040

 
Artyom Trishkin:

IndicateurDigits(5)

Merci !
 

Laissez-moi poser une autre question. Sur la base du même indicateur. Supposons que nous attachons l'indicateur au graphique. Nous obtenons la première valeur de Bid1. On obtient alors la deuxième valeur de Bid2. Et nous devons comparer ces deux valeurs. Du second, nous soustrayons le premier et obtenons le nombre que nous ajoutons au premier Bid1.

Bid1=1.11133

Bid2=1.11135

Bid2-Bid1=0.00002

Bid1+0.00002=1.11135

Je comprends que le résultat est le même que dans l'indicateur original.

Je veux juste voir l'implémentation et comprendre la logique du code.

 
Alexey Viktorov:

Vous devez le déverrouiller dans les propriétés du fichier.

Merci ! :)
 
jaffer wilson :

Deux déclarations :

Imprimer : 22.33

И

Imprimer : 2.00000

Pourquoi y a-t-il des sorties différentes ? En C / C ++, la déclaration ci-dessus fonctionne bien.

Quelqu'un a-t-il une idée sur ce problème ?

 

Aidez-moi à comprendre les tableaux de prix dans mt5. Ce n'est pas clair dans l'indicateur. J'édite les prix, qui sont dans OnCalculate :

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

Je reçois des prix étranges :

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

Je fais l'inverse, je crée un tableau et je le copie (je cherche en essayant, ce n'est pas clair pour moi du tout) :

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

Et j'obtiens des résultats similaires :

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

C'est encore plus intéressant avec les dates. J'imprime les dates qui sont dans OnCalculate :

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

Je comprends :

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

Et quand je le copie :

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]));

L'impression est bonne :

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

Mais vous ne pouvez pas aller loin en vous contentant de rendez-vous. Aidez-moi à comprendre. Comment obtenir les bons prix d'ouverture et de clôture ?

 
Yevhenii Levchenko:

Aidez-moi à comprendre les tableaux de prix dans mt5. Ce n'est pas clair dans l'indicateur. J'édite les prix qui sont dans OnCalculate :

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

Faites comme ça :

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

Vous avez utilisé une mauvaise spécification de type dans la sortie formatée.

 
Igor Makanu:

faites-le :

Vous avez utilisé la mauvaise spécification de type dans la sortie formatée.

Aaaaahhhh, merde ! Merci beaucoup, Igor !

J'aurais dû mettre %f... Je me suis trompé... et je dois aussi mettre ArraySetAsSeries partout. C'est un peu bizarre...

 
Igor Makanu:

s'il vous plaît

Je ne conseillerais pas d'utiliser ArraySetAsSeries() si vous écrivez le code de l'indicateur à partir de zéro (si vous le portez à partir de MQL4 - une autre question),

utilisez rates_total comme le numéro de la barre la plus à droite - 1, vous vous habituerez plus rapidement à la logique de l'indicateur dans MQL5

Merci !

Ne pas écrire à partir de rien... Je transfère l'indicateur de mt4 à mt5.
 
Oleg Bondarev:

Laissez-moi poser une autre question. Sur la base du même indicateur. Supposons que nous attachons l'indicateur au graphique. Nous obtenons la première valeur de Bid1. On obtient alors la deuxième valeur de Bid2. Et nous devons comparer ces deux valeurs. Du second, nous soustrayons le premier et obtenons le nombre que nous ajoutons au premier Bid1.

Bid1=1.11133

Bid2=1.11135

Bid2-Bid1=0.00002

Bid1+0.00002=1.11135

Je comprends que le résultat est le même que dans l'indicateur original.

Je veux juste voir l'implémentation et comprendre la logique du code.

Aidez-moi. Ça ne marche pas tout seul. Je fais 2 buffers x[ ] pour comparer les valeurs Bid et y[ ] pour tracer. Et rien.

 
Oleg Bondarev:

J'ai besoin de votre aide. Je n'arrive pas à faire fonctionner quoi que ce soit par moi-même. Je fais 2 buffers x[ ] pour comparer les valeurs de Bid et y[ ] pour tracer. Et rien.

Essayez de poser la question différemment, votre question n'est probablement pas claire.