Bonjour, j'ai une question sur les tableaux. J'ai créé un tableau unidimensionnel avec quelques difficultés. Tout devrait bien se passer, car je n'ai pas d'erreur au moment de la compilation, mais maintenant je dois l'exécuter dans le testeur et voir l'erreur EURUSD,M1 : array out of range in ,, (218,12) qui indique exactement la position de mon tableau de deuil. S'il vous plaît dites-moi ce qui ne va pas avec elle
int Totall=OrdersTotal();
double Price; // Цена выбранного ордераdouble Mas[]; //массив для упорядочивания всех ордеровfor(int i=0; i<OrdersTotal(); i++) // Цикл перебора ордер
{
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
Price=OrderOpenPrice();
Mas [i] = Price; //Как раз перед квадратной скобкой и есть ошибка array out of range in ,, (218,12)
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордераArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
}
}
Veuillez me conseiller, il y a peut-être un autre moyen d'assigner un prix de commande à chaque élément du tableau?
Bonjour, j'ai une question sur les tableaux. J'ai créé un tableau unidimensionnel avec quelques difficultés. Tout devrait bien se passer, car je n'ai pas d'erreur au moment de la compilation, mais maintenant je dois l'exécuter dans le testeur et voir l'erreur EURUSD,M1 : array out of range in ,, (218,12) qui indique exactement la position de mon tableau de deuil. S'il vous plaît dites-moi ce qui ne va pas avec elle
Votre code est faux à la base, mais l'erreur est due au fait que la taille du tableau n'a pas été définie avant qu'il ne soit rempli.
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
Price=OrderOpenPrice();
ArrayResize(Mas, i+1);
Mas [i] = Price;
Votre code est fondamentalement faux, mais l'erreur est due au fait que la taille du tableau n'a pas été définie avant de le remplir.
Merci beaucoup ! Pouvez-vous me dire si la séquence n'est pas correcte ? L'idée est de déterminer les prix des ordres les plus proches du prix du dessous et du dessus. Veuillez me faire part de votre point de vue.
Merci beaucoup ! Pouvez-vous me dire si la séquence n'est pas correcte ? L'idée est de déterminer les prix des ordres les plus proches du prix par le bas et par le haut. S'il vous plaît, dites-moi votre point de vue.
Vous avez beaucoup de choses inutiles dans votre boucle. Vous devez remplir le tableau avec les prix dans la boucle et les utiliser en dehors de la boucle.
for(int i=0; i<OrdersTotal(); i++) // Цикл перебора ордер
{
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
ArrayResize(Mas, i+1);
Mas[i] = OrderOpenPrice(); //Как раз перед квадратной скобкой и есть ошибка array out of range in ,, (218,12)/*
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убыванию
int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордера
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убыванию
int Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
*/
}
}
Vous avez beaucoup de choses inutiles dans la boucle. Vous devez remplir le tableau avec les prix dans la boucle, et travailler avec en dehors de la boucle.
Je vois. Merci beaucoup ! !! Est-ce que j'ai bien saisi l'idée ?
double Price; // Цена выбранного ордераdouble Mas[]; //массив для упорядочивания всех ордеровfor(int i=0; i<OrdersTotal(); i++) // Цикл перебора ордер
{
if(OrderSelect(i,SELECT_BY_POS)) // Если есть следующий
{
Price=OrderOpenPrice();
ArrayResize(Mas, i+1);
Mas [i] = Price;
}
}
ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордера Вот в этой строкеArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
Vitaly Muzichenko:
C'est possible. Une seule et même tâche peut être mise en œuvre de plusieurs manières.
Je viens de faire une boucle pour déterminer les indices des éléments les plus proches et le testeur montre une erreur à Mas [Blizko2].Peut-être est-ce parce qu'il n'y a pas encore d'ordres lorsque je lance l'EA ?
(Veuillez me conseiller, peut-être savez-vous où chercher quelque chose de similaire ?)
Je viens de sortir de la boucle la définition des indices des éléments les plus proches et dans le testeur montre une erreur à la place Mas [Blizko2] .peut-être est-ce parce que lorsque vous exécutez l'EA il n'y a pas encore d'ordres ?
Essayez comme ceci
if(ArraySize(Mas)>0) { // если массив не пустой, тоArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND); //Определен индекс ближайшего большего по значению елемента к текущей цене
PriceBlizko2 = Mas[Blizko2]; // Цена выбранного ордераArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND); // Теперь цены открытия упорядочены по убываниюint Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND); //Определен индекс ближайшего меньшего по значению елемента к текущей цене
PriceBlizko1=Mas[Blizko1];
}
Merci beaucoup ! !! J'ai une autre question : est-ce que je détermine correctement l'indice du plus petit élément le plus proche du prix actuel en changeantMODE_DESCEND enMODE_ASCEND ?
Merci beaucoup ! !! J'ai une autre question : est-ce que je détermine correctement l'indice de l'élément inférieur le plus proche du prix actuel en changeantMODE_DESCEND enMODE_ASCEND ?
Pas de réponse, je n'ai jamais utiliséArrayBsearch.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Bonjour, j'ai une question sur les tableaux. J'ai créé un tableau unidimensionnel avec quelques difficultés. Tout devrait bien se passer, car je n'ai pas d'erreur au moment de la compilation, mais maintenant je dois l'exécuter dans le testeur et voir l'erreur EURUSD,M1 : array out of range in ,, (218,12) qui indique exactement la position de mon tableau de deuil. S'il vous plaît dites-moi ce qui ne va pas avec elle
Bonjour, j'ai une question sur les tableaux. J'ai créé un tableau unidimensionnel avec quelques difficultés. Tout devrait bien se passer, car je n'ai pas d'erreur au moment de la compilation, mais maintenant je dois l'exécuter dans le testeur et voir l'erreur EURUSD,M1 : array out of range in ,, (218,12) qui indique exactement la position de mon tableau de deuil. S'il vous plaît dites-moi ce qui ne va pas avec elle
Votre code est faux à la base, mais l'erreur est due au fait que la taille du tableau n'a pas été définie avant qu'il ne soit rempli.
Votre code est fondamentalement faux, mais l'erreur est due au fait que la taille du tableau n'a pas été définie avant de le remplir.
Merci beaucoup ! Pouvez-vous me dire si la séquence n'est pas correcte ? L'idée est de déterminer les prix des ordres les plus proches du prix du dessous et du dessus. Veuillez me faire part de votre point de vue.
Merci beaucoup ! Pouvez-vous me dire si la séquence n'est pas correcte ? L'idée est de déterminer les prix des ordres les plus proches du prix par le bas et par le haut. S'il vous plaît, dites-moi votre point de vue.
Vous avez beaucoup de choses inutiles dans votre boucle. Vous devez remplir le tableau avec les prix dans la boucle et les utiliser en dehors de la boucle.
Vous avez beaucoup de choses inutiles dans la boucle. Vous devez remplir le tableau avec les prix dans la boucle, et travailler avec en dehors de la boucle.
Je vois. Merci beaucoup ! !! Est-ce que j'ai bien saisi l'idée ?
Je vois. Merci beaucoup ! !! Tu as bien saisi l'idée ?
C'est possible. La même tâche peut être accomplie de plusieurs manières.
Vitaly Muzichenko:
C'est possible. Une seule et même tâche peut être mise en œuvre de plusieurs manières.
Je viens de faire une boucle pour déterminer les indices des éléments les plus proches et le testeur montre une erreur à Mas [Blizko2].Peut-être est-ce parce qu'il n'y a pas encore d'ordres lorsque je lance l'EA ?
(Veuillez me conseiller, peut-être savez-vous où chercher quelque chose de similaire ?)Je viens de sortir de la boucle la définition des indices des éléments les plus proches et dans le testeur montre une erreur à la place Mas [Blizko2] .peut-être est-ce parce que lorsque vous exécutez l'EA il n'y a pas encore d'ordres ?
Essayez comme ceci
Essayez ceci
Merci beaucoup ! !! J'ai une autre question : est-ce que je détermine correctement l'indice du plus petit élément le plus proche du prix actuel en changeantMODE_DESCEND enMODE_ASCEND ?
Merci beaucoup ! !! J'ai une autre question : est-ce que je détermine correctement l'indice de l'élément inférieur le plus proche du prix actuel en changeantMODE_DESCEND enMODE_ASCEND ?
Pas de réponse, je n'ai jamais utiliséArrayBsearch.