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

 
J'ai ajouté des variables de type int, dans lesquelles j'ai mis des datetime explicitement converties, et ça a marché. Mais maintenant j'ai besoin que le résultat du ratio soit inférieur à 1, c'est-à-dire que
formule MathMin(Time1-Time2,Time2-Time3)/MathMax(Time1-Time2,Time2-Time3)
mais il a commencé à donner 0 à nouveau, bien que séparément il soit correct
 
Roman Sharanov:
J'ai ajouté des variables de type int, dans lesquelles j'ai mis des datetime explicitement converties, et ça a marché. Mais maintenant j'ai besoin que le résultat du ratio soit inférieur à 1, c'est-à-dire que
formule MathMin(Time1-Time2,Time2-Time3)/MathMax(Time1-Time2,Time2-Time3)
mais il a commencé à donner 0 à nouveau, bien que séparément il soit correct
(double)MathMin(Time1-Time2,Time2-Time3)/(double)MathMax(Time1-Time2,Time2-Time3)
 
Roman Sharanov:

J'ai écrit que j'ai déjà essayé de cette façon, rien.

la variable réceptrice doit également être double

 
Super, maintenant il donne 1 tout le temps
MathMin et MathMax donnent la même valeur même si leurs arguments sont différents
 
Roman Sharanov:

Comment trouver le ratio de deux périodes ? (nous avons besoin du ratio des barres entre 2 périodes)
Je l'ai écrit comme ça mais ça donne 0. Temps1>Temps>Temps3 toujours

J'ai essayé les deux sans conversion de type explicite, et (double) essayé d'écrire

Et avec un exemple, vous pouvez expliquer ce qui est à l'entrée et ce qui devrait être à la sortie. J'ai déjà relu plusieurs fois tous les conseils et les questions, mais je n'arrive toujours pas à comprendre d'où l'on part et où l'on doit arriver.

Par exemple, ce code

#define  PRINT(A) ::Print(#A + " = " + (string)(A));
/********************Script program start function*******************/
void OnStart()
{
 datetime t1 = TimeCurrent(), t2 = TimeCurrent()-PeriodSeconds(PERIOD_M1)*7, t3 = TimeCurrent()-PeriodSeconds(PERIOD_M15);
 PRINT(t1-t2);
 PRINT(t1-t3);
 PRINT(double(t1-t2)/double(t1-t3));
 PRINT((t1-t2)/double(t1-t3));
 PRINT(double(t1-t2)/(t1-t3));
}/*******************************************************************/

donne ce résultat

2018.02.04 15:41:35.922 00 EURUSD,H1: double(t1-t2)/(t1-t3) = 0.46666667
2018.02.04 15:41:35.922 00 EURUSD,H1: (t1-t2)/double(t1-t3) = 0.46666667
2018.02.04 15:41:35.922 00 EURUSD,H1: double(t1-t2)/double(t1-t3) = 0.46666667
2018.02.04 15:41:35.922 00 EURUSD,H1: t1-t3 = 900
2018.02.04 15:41:35.922 00 EURUSD,H1: t1-t2 = 420
 
Alexey Viktorov:

Et avec un exemple, pouvez-vous expliquer ce qu'est l'entrée et ce que devrait être la sortie. J'ai déjà lu plusieurs fois tous les conseils et les questions, mais je ne comprends toujours pas d'où nous partons et où nous devons arriver.

Par exemple, ce code

donne ce résultat

Oui, sauf que cela donne 0 ou 1, mais j'ai résolu le problème avec une condition if else, mais au moins cela fonctionne.

 
Roman Sharanov:

Oui, sauf que cela donne 0 ou 1, mais j'ai résolu le problème avec une condition if else, mais au moins cela fonctionne.

Il est dit qu'il devrait sortir un résultat comme le double

et ici

Et même après mon exemple.... les mots ne suffisent pas.

Qu'est-ce que cela a à voir avec si autre chose ??? Il s'agit d'un opérateur conditionnel qui ne dépend en aucune façon du type de valeurs dans les conditions.

Il ne peut faire 1 que si le numérateur et le dénominateur sont égaux. Mais il ne peut JAMAIS être à zéro.

 

Bonne journée à vous tous.

Pouvez-vous me dire comment me débarrasser de l'énorme

de méta-rédacteurs dans l'ordinateur.

J'ai 7 terminaux installés et chacun d'entre eux traîne un méta-éditeur avec lui.

7.0 devient fou lorsque vous essayez d'ouvrir un fichier mq à partir du menu contextuel.

Il les ouvre périodiquement dans différents métaéditeurs, ce qui me met très mal à l'aise.

Peut-être que quelqu'un sait comment résoudre ce problème ?

J'aimerais n'avoir qu'un seul éditeur de méta configuré.

Merci d'avance.

 
Northwest:

Bonne journée à vous tous.

Pouvez-vous me dire comment me débarrasser de l'énorme

de méta-rédacteurs dans l'ordinateur.

J'ai 7 terminaux installés et chacun d'entre eux traîne un méta-éditeur avec lui.

7.0 devient fou lorsque vous essayez d'ouvrir un fichier mq à partir du menu contextuel.

il les ouvre périodiquement dans différents méta-éditeurs, ce qui rend la situation émotionnellement désagréable.

Quelqu'un peut-il savoir comment résoudre ce problème ?

J'aimerais n'avoir qu'un seul éditeur de méta configuré.

Merci d'avance.

J'ai résolu ce problème pour moi avec"lien symbolique/label" vers le dossier MQL. J'ai donc sorti le dossier principal du répertoire des programmes, créé un raccourci vers celui-ci et supprimé ces répertoires pour les remplacer par un raccourci. Maintenant, j'ai le même ensemble de conseillers experts/indicateurs/scripts dans n'importe quel terminal. Et l'ouverture de n'importe quel maetaditor mène aux mêmes fichiers.

Bien sûr, pour MQL4/5, les répertoires principaux sont différents.

 
Konstantin Nikitin:

J'ai résolu ce problème avec un"lien symbolique/label" vers le dossier MQL. J'ai donc sorti le dossier principal du répertoire des programmes, créé un raccourci vers celui-ci et supprimé ces répertoires pour les remplacer par un raccourci. Maintenant, j'ai le même ensemble de conseillers experts/indicateurs/scripts dans n'importe quel terminal. Et l'ouverture de n'importe quel maetaditor mène aux mêmes fichiers.

Bien sûr, les répertoires principaux sont différents pour MQL4/5.

Merci pour le conseil.

Mais il serait souhaitable pour moi de ne voir que "mes EAs et indicateurs" dans les différents terminaux.

Autrement dit, les dossiers MQL doivent être "propres".

Cela suggère la méthode de la force brute. Je devrais arracher les fichiers du méta-éditeur des distributions installées.

Ne laissez qu'un seul d'entre eux. Puis utilisez le nettoyeur de registre pour supprimer les chemins d'accès aux fichiers inexistants.

Mais je ne sais pas si ça va marcher ou pas. Je voudrais que ce soit sans conséquences.