В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void...
C'est juste horrible ! Si je peux encore retracer la logique dans les Expert Advisors, corriger certaines choses, en ajouter d'autres... Je ne comprends pas du tout le code des indicateurs(
Merci, Igor. Je ne l'ai pas exprimé correctement. L'indicateur est calculé et dessiné pour un nombre de barres spécifié (50 dans ce cas) et dans une fenêtre séparée. Il n'a pas besoin du prix d'ouverture mais de la première barre du jour pour indiquer la MA. Mais en tout cas, merci.
read SetIndexDrawBegin() - il s'agit d'une restriction pour dessiner le tampon de l'indicateur, jamais utilisée.
ou dans mon exemple, vous pouvez le faire de cette façon :
J'ai réécrit mon exemple, dans la première version il ne fonctionnait pas correctement lors du changement de TFs, vous devez réinitialiser dayopen et lastday, ils sont décrits avec le modificateur static.
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void...
Existe-t-il une fonction dans MQL4 qui peut détecter si une cotation est à 5 ou 4 décimales, combien de décimales un actif a par exemple EURJPY a 2 décimales, EURUSD a 4 décimales ?
Seric29: Y a-t-il une fonction dans MQL4 qui peut identifier les cotations d'un type de compte, comme 5 ou 4 décimales, quelles sont les façons d'identifier combien de zéros un actif a après la virgule par exemple EURJPY a 2 décimales, EURUSD a 4 décimales ?
Mais à la compilation, il génère un avertissement : perte possible de données en raison de la conversion de type en ligne : index = GetPatt5barsDN(index) ;
double low3 = 0;
int index = 0;
low3 = GetPatt5barsDN(index);
index = GetPatt5barsDN(index);
Print("low3= ", low3);
Print("index= ", index);
Il n'y a pas d'erreur dans l'en-tête de la fonction (ou dans la fonction elle-même) pendant la compilation.
Pouvez-vous me dire ce qu'il faut entendre dans l'entrée
int i,limit=prev_calculated==0 ? rates_total-1 : rates_total-prev_calculated ;
"==" , " ?" , " : "
?
Merci, Igor. Je ne l'ai pas exprimé correctement. L'indicateur est calculé et dessiné pour un nombre de barres spécifié (50 dans ce cas) et dans une fenêtre séparée. Il n'a pas besoin du prix d'ouverture mais de la première barre du jour pour indiquer la MA. Mais en tout cas, merci.
read SetIndexDrawBegin() - il s'agit d'une restriction pour dessiner le tampon de l'indicateur, jamais utilisée.
ou dans mon exemple, vous pouvez le faire de cette façon :
c'est-à-dire limiter le calcul des buffers d'indicateurs au paramètreBarCount
Pouvez-vous me dire ce qu'il faut entendre dans l'entrée
int i,limit=prev_calculated==0 ? rates_total-1 : rates_total-prev_calculated ;
"==" , " ?" , " : "
?
https://docs.mql4.com/ru/basis/operators/ternary
J'ai réécrit mon exemple, dans la première version il ne fonctionnait pas correctement lors du changement de TFs, vous devez réinitialiser dayopen et lastday, ils sont décrits avec le modificateur static.
Retourne également l'index dans le paramètre de la fonction passé par référence.
Retourné :
double GetPatt5barsDN()
{
double low3 = 0 ;
int index = 0 ;
for(int i=1 ; i<20 ; i++)
{
si
((Close[i] > Open[i]) &&
(Close[i+1] > Open[i+1]) &&
(Close[i+2] > Open[i+2]) && //Low[i+2] est nécessaire sur cette bougie
(Close[i+3] < Open[i+3]) &&
(Close[i+4] < Open[i+4])
low3 = Low[i+2] ;
indice = i+2 ;
}
retour(low3) ;
return(index) ;
}
Que dois-je faire ensuite ?
Retourné :
double GetPatt5barsDN()
{
double low3 = 0 ;
int index = 0 ;
for(int i=1 ; i<20 ; i++)
{
si
((Close[i] > Open[i]) &&
(Close[i+1] > Open[i+1]) &&
(Close[i+2] > Open[i+2]) && //Low[i+2] est nécessaire sur cette bougie
(Close[i+3] < Open[i+3]) &&
(Close[i+4] < Open[i+4])
low3 = Low[i+2] ;
indice = i+2 ;
}
retour(low3) ;
return(index) ;
}
Que dois-je faire ensuite ?
Ce n'est pas une façon de le récupérer.
Comme ça.
Plus d'informations sur
double min = Low[GetPatt5barsDN()];Retourné :
double GetPatt5barsDN()
{
double low3 = 0 ;
int index = 0 ;
for(int i=1 ; i<20 ; i++)
{
si
((Close[i] > Open[i]) &&
(Close[i+1] > Open[i+1]) &&
(Close[i+2] > Open[i+2]) && //Low[i+2] est nécessaire sur cette bougie
(Close[i+3] < Open[i+3]) &&
(Close[i+4] < Open[i+4])
low3 = Low[i+2] ;
indice = i+2 ;
}
retour(low3) ;
return(index) ;
}
Que dois-je faire ensuite ?
Où est le retour de l'indice via un paramètre par référence ?
Et veuillez insérer le code correctement :
Y a-t-il une fonction dans MQL4 qui peut identifier les cotations d'un type de compte, comme 5 ou 4 décimales, quelles sont les façons d'identifier combien de zéros un actif a après la virgule par exemple EURJPY a 2 décimales, EURUSD a 4 décimales ?
https://docs.mql4.com/ru/predefined/digitsvar
Où est le retour de l'indice via un paramètre par référence ?
Et veuillez insérer le code correctement :
Il me semble que j'ai bien compris maintenant :
Mais à la compilation, il génère un avertissement : perte possible de données en raison de la conversion de type en ligne :
index = GetPatt5barsDN(index) ;
Il n'y a pas d'erreur dans l'en-tête de la fonction (ou dans la fonction elle-même) pendant la compilation.