Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1207
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
pourquoi cette boucle ne se termine pas quand ... (J'ai ajouté la deuxième condition pour i < 2000 quand j'ai réalisé que la boucle est infinie) MQL4
cv * tvp * (double)stop < ml
pourquoi cette boucle ne se termine pas quand ... (J'ai ajouté la deuxième condition pour i < 2000 quand j'ai réalisé que la boucle est infinie)
La boucle ne se terminera pas avant que
cv * tvp * (double)stop < ml
Pour que la boucle se termine lorsque cette condition est remplie, nous pouvons écrire ce qui suit dans le corps de la boucle
ou
Dans MQL4 seulement de cette façon :
Résultat :
Merci encore pour votre aide. Je vous serais très reconnaissant si vous pouviez également me dire comment faire ce qui suit...
Quelle fonction ou construction de langage peut être utilisée pour calculer la valeur d'index d'un élément de tableau qui avait l'index avant le tri.
Ici, j'ai le tableau A[] avant le tri (la ligne supérieure) et le même tableau après le tri. Un élément ayant la valeur 5 avant le tri était à l'indice 9
, et un élément ayant la valeur 5 après le tri est à l'indice 3.
La fonction trouve une cellule avec la valeur 5 dans le tableau trié et enregistre le numéro d'index de cette cellule dans le tableau trié à W, qui est égal à l'index 3.
ArraySort(А,10,0,MODE_ASCEND) ;
W = ArrayBsearch( A,5,WHOLE_ARRAY,0,MODE_ASCEND) ;
QUESTION : Après ArrayBsearch(), comment peut-on stocker la valeur de l'index d'une cellule avec la valeur 5 dans une variable qui a un tableau non trié.
C'est-à-dire, sauvegarder la valeur de 9.
Merci de votre aide.
Alexey Viktorov
Mihail Matkovskij
Merci !
Bonjour à tous. Qui sait comment définir une valeur négative dans un indicateur personnalisé et faire en sorte que cela fonctionne ? c'est-à-dire "décaler l'indicateur par rapport au graphique des prix".
Exemple : si vous mettez une valeur de -4 dans l'indicateur de moyenne mobile, il se décale par rapport au graphique vers la gauche - et fonctionne.
Mais si vous mettez cette valeur dans le code de l'indicateur - alors l'indicateur cesse de fonctionner. et montre toutes les valeurs TF en rouge.
Merci encore pour votre aide. Je vous serais très reconnaissant si vous pouviez également me dire comment faire ce qui suit...
Quelle fonction ou construction de langage peut être utilisée pour calculer la valeur de l'indice d'un élément de tableau, que cet élément avait avant le tri.
Ici, j'ai le tableau A[] avant le tri (la ligne supérieure) et le même tableau après le tri. Un élément ayant la valeur 5 avant le tri était à l'indice 9
, et un élément ayant la valeur 5 après le tri est à l'indice 3.
La fonction trouve une cellule avec la valeur 5 dans le tableau trié et enregistre le numéro d'index de cette cellule dans le tableau trié à W, qui est égal à l'index 3.
ArraySort(А,10,0,MODE_ASCEND) ;
W = ArrayBsearch( A,5,WHOLE_ARRAY,0,MODE_ASCEND) ;
QUESTION : Après ArrayBsearch(), comment peut-on stocker la valeur de l'index d'une cellule avec la valeur 5 dans une variable qui a un tableau non trié.
C'est-à-dire, sauvegarder la valeur de 9.
Merci pour votre aide.
mais ne triez pas les données au hasard et sans but global.
Dans le projet actuel : prenez un tableau (court), la sortie sera les indices des éléments dans le bon ordre :
{
for(int i=0;i<5;i++)
index[i]=i;
for(int i=0;i<4;i++) {
for(int j=1;j<5;j++) {
if (data[index[i]]>data[index[j]]) {
int tmp=index[i];
index[i]=index[j];
index[j]=tmp;
}
}
}
}
pour les tableaux plus grands, nous devons changer l'algorithme de tri (le bullage ne fonctionne pas pour les tableaux plus grands) - changez-le.
Le message principal est le suivant : ne touchez pas aux données sources. Opérer soit avec des références, soit, encore mieux, avec des indices de tableaux. Sinon, on perd des informations qui seront très utiles par la suite.
Merci encore pour votre aide. Je vous serais très reconnaissant si vous pouviez également me dire comment faire ce qui suit...
Quelle fonction ou construction de langage peut être utilisée pour calculer la valeur de l'indice d'un élément de tableau, que cet élément avait avant le tri.
Ici, j'ai le tableau A[] avant le tri (la ligne supérieure) et le même tableau après le tri. Un élément ayant la valeur 5 avant le tri était à l'indice 9
, et un élément ayant la valeur 5 après le tri est à l'indice 3.
Je trouve une cellule avec la valeur 5 dans le tableau trié et la fonction enregistre le numéro d'index de cette cellule dans le tableau trié à W, qui est égal à l'index 3.
ArraySort(А,10,0,MODE_ASCEND) ;
W = ArrayBsearch( A,5,WHOLE_ARRAY,0,MODE_ASCEND) ;
QUESTION : Après ArrayBsearch(), comment peut-on stocker la valeur de l'index d'une cellule avec la valeur 5 dans une variable qui a un tableau non trié.
C'est pour sauvegarder la valeur de 9.
Merci de votre aide.
Pour cela, vous devez répondre à deux questions :que ferez-vous si.. :
1. Il y aura plusieurs valeurs de 5, dans différentes cellules du tableau.
2. La valeur 5 ne sera pas dans le tableau.
Parce que la fonctionArrayBsearch (pour des données triées), dans le premier cas, donnera le premier index trouvé où la valeur de la cellule est 5, dans le second cas, elle donnera un élément proche de la valeur 5. Je ne vois pas comment vous pourriez traiter un tableau non trié.
Bonjour à tous. Qui sait comment définir une valeur négative dans un indicateur personnalisé et faire en sorte que cela fonctionne ? c'est-à-dire "décaler l'indicateur par rapport au graphique des prix".
Exemple : si vous mettez une valeur de -4 dans l'indicateur de moyenne mobile, il se décale par rapport au graphique vers la gauche - et fonctionne.
Mais si vous mettez cette valeur dans le code de l'indicateur, l'indicateur cesse de fonctionner. et montre des valeurs rouges pour tous les TFs.
SetIndexShift.
Le décalage est également spécifié dans iMA :
iMA
Renvoie la valeur de l'indicateurtechnique de la moyenne mobile.
doubleiMA(
symbole de chaîne de caractères,// nom du symbole
inttimeframe,// cadre temporel
intma_period,// période
intma_shift,// décalage de la moyenne
intma_method,// méthode de calcul de la moyenne
intapplied_price,//type de prix
intshift// shift
);
Paramètres
symbole
[Nom du symbole dont les données seront utilisées pour calculer l'indicateur.NULL signifie le symbole actuel.
cadre temporel
Période [en]. Peut être une des valeurs de l'énumérationENUM_TIMEFRAMES. 0 signifie la période du graphique actuel.
ma_période
[Période de calcul de la moyenne pour le calcul de l'indicateur.
ma_shift
[Décalage de l'indicateur par rapport au graphique des prix.
ma_méthode
[Méthode de calcul de la moyenne. Peut être l'une des valeurs de l'énumérationENUM_MA_METHOD.
prix appliqué
[Prix appliqué. Peut être toute valeur de l'énumérationENUM_APPLIED_PRICE.
équipe
[Index de la valeur obtenue à partir du tampon de l'indicateur (décalage par rapport à la barre actuelle d'un nombre spécifié de périodes en arrière).
Valeur retournée
Valeurde l'indicateur technique de la moyenne mobile.
Exemple :
AlligatorJawsBuffer[i]=iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i);
https://docs.mql4.com/ru/indicators/ima
Voici un exemple tout fait, mais en MQL5 : https://www.mql5.com/ru/docs/indicators/ima ,
qui peut être facilement traduit en MQL4.
Il n'y a pas de changement dans les paramètres de l'indicateur. Je suis allé dans le code et j'ai mis shift -4 dans le code et l'indicateur a cessé de fonctionner - il montre tous les TFs sont rouges. Je suis assis ici et je me demande pourquoi.
Pour ce faire, vous devez répondre à deux questions :que ferez-vous si
1. Il y aura plusieurs valeurs de 5, dans différentes cellules du tableau.
2. La valeur 5 ne sera pas dans le tableau.
Parce que la fonctionArrayBsearch (pour des données triées), dans le premier cas, donnera le premier index trouvé où la valeur de la cellule est 5, dans le second cas, elle donnera un élément proche de la valeur 5. Je ne vois pas comment vous pourriez traiter un tableau non trié.
Merci beaucoup pour votre réponse rapide. Dans mon cas, chaque valeur d'un élément de tableau est unique et existe dans une seule instance. C'est-à-dire que la valeur 5, comme les autres valeurs, ne se répète pas.
Dans mon cas, la valeur 5 peut ne pas exister dans un tableau non trié. Cela signifie que certaines cellules du tableau non trié peuvent être vides.
Mais si la valeur 5 n'est pas dans le tableau non trié, alors je ne peux pas spécifier la valeur 5 comme second paramètre dans la fonction ArrayBsearch(). Seules les valeurs qui existent nécessairement dans le tableau non trié entrent dans cette fonction.
Merci pour votre aide