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

 

Viens m'aider.

La tâche consiste à trouver l' élément minimum dans le tableau[].

//+------------------------------------------------------------------+ 
//| Получим Lowest для заданного промежутка                          | 
//+------------------------------------------------------------------+ 
double iLowMin(int ot,int bands,double &buffer[])
  {
   double result=-1;
   result=buffer[ArrayMinimum(buffer,ot,bands)];
   return(result);
  }
//+------------------------------------------------------------------+ 
//| Получим High для заданного номера бара                           | 
//+------------------------------------------------------------------+ 
double iHighMax(int ot,int bands,double &buffer[])
  {
   double result=-1;
   result=buffer[ArrayMaximum(buffer,ot,bands)];
   return(result);
  }

Le problème est résolu, mais le minimum me tue. J'ai tout essayé, les tableaux d'entrée sont remplis - j'ai regardé dans le débogage, que faire ?

Print("DwMin  ",iLowMin(rates_total-50,49,ExtLowerBuffer));

Peut-être y a-t-il des nuances ?

déclaré via

   SetIndexBuffer(1,ExtLowerBuffer,INDICATOR_DATA);
 
Top2n:

Viens m'aider.

La tâche consiste à trouver l' élément minimum dans le tableau[].

Le problème est résolu, mais le minimum me tue. J'ai tout essayé, les tableaux d'entrée sont remplis - j'ai regardé dans le débogage, que faire ?

Peut-être y a-t-il des nuances ?

déclaré via

Essayez ArraySort et vérifiez ce que le premier indice indique.

 

Voilà pour la noosphère, dès que j'ai abandonné la question, j'ai commencé à avoir une intuition : j'ai 0 dans le tableau, donc ça donne min = 0. Mais il y a encore des sections avec des valeurs non nulles, et le min est toujours 0, eh bien, que Dieu me vienne en aide, la question est annulée)) Merci à ceux qui ont juste lu la question, la noosphère vous a donné

 

Question d'attention))

Comment puis-je définir la barre de l'indicateur à partir de laquelle commencer le traitement ?

if(prev_calculated>rates_total-Bmax)

{ ... то что нужно обрабатывать начиная с бара[rates_total-Bmax]

}

J'ai essayé, mais le résultat est que l'indicateur ne bouge pas du tout.

 

Rebonjour, pouvez-vous me dire si je connais l'indice d'un élément d'un tableau et quelle fonction permet de connaître sa valeur ?

int Totall=OrdersTotal() ;

double Price ; // Prix de la commande sélectionnée

double Mas[] ; //tableau pour mettre en ordre toutes les commandes

for(int i=0 ; i<OrdersTotal() ; i++) //boucle d'ordre

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))

{Price=OrderOpenPrice() ; //Remplir le tableau avec les prix

Mas[i] = Prix ;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND) ; // Les prix d'ouverture sont maintenant classés par ordre décroissant.

int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND) // L'indice de l'élément le plus proche en valeur du prix actuel est déterminé

 
Nauris Zukas:

Comme je l'ai déjà rencontré en étudiant les cours, il y a encore des nuances qui ne sont pas décrites dans les articles ou qui sont tellement cachées qu'il n'est pas possible de les trouver avec un moteur de recherche. Une journée entière passée à chercher en vain des explications. Par exemple, ce que ce symbole signifie et comment il affecte si non. Comme on le voit ci-dessous dans l'exemple du stati, d'abord il est là et ensuite il ne l'est plus : &.

De plus, la signification de ce symbole n'est pas claire : ~

*

Les fonctions mql4, mql5 passent toujours un tableau par référence uniquement (& == esperluette).

Premièrement, dans les paramètres formels d'une fonction, une esperluette indique que ce n'est pas le tableau lui-même qui est transmis à la fonction, mais un lien vers celui-ci. Ensuite, à l'intérieur de la fonction, vous travaillez déjà avec la référence, ce qui signifie que vous n'avez pas besoin de la spécifier à nouveau.

Le tilde (~) est écrit avant le nom du destructeur de la classe - le constructeur et le destructeur ont le même nom que la classe elle-même, mais le destructeur a ~.

Lisez cet article pour savoir quand utiliser des références et quand utiliser des pointeurs.

Mais vous devez quand même lire les bases.

 
vikzip:

Rebonjour, pouvez-vous me dire si je connais l'indice d'un élément d'un tableau et quelle fonction permet de connaître sa valeur ?

int Totall=OrdersTotal() ;

double Price ; // Prix de la commande sélectionnée

double Mas[] ; //tableau pour mettre en ordre toutes les commandes

for(int i=0 ; i<OrdersTotal() ; i++) //boucle d'ordre

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))

{Price=OrderOpenPrice() ; //Remplir le tableau avec les prix

Mas[i] = Prix ;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND) ; // Les prix d'ouverture sont maintenant classés par ordre décroissant.

int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND) // L'indice de l'élément le plus proche en valeur du prix actuel est déterminé

Tableau des éléments de valeur = Tableau [index] ;

 

Veuillez me conseiller, j'ai un EA et je l'ai testé au travail sur un ordinateur normal, windows hp. Tout fonctionne bien et ainsi de suite.

Je rentre à la maison, à la maison ordinateurs portables macbook, et absolument avec les mêmes paramètres sur le même outil avec le même délai montre un résultat complètement différent dans le testeur, des suggestions ou des idées pourquoi ainsi ?

 
Artyom Trishkin:

Valeur_de_l'élément_du_ray = Array[index] ;


Merci, maintenant il y a un nouveau problème. Lors de l'écriture de la condition suivante, une erreur 'PriceBlizko1' - undeclared identifier se produit. Veuillez expliquer pourquoi ?

double prix ; // Prix de la commande sélectionnée

double Mas[] ; //tableau pour classer toutes les commandes

for(int i=0 ; i<OrdersTotal() ; i++) // Boucle de commande

{

if(OrderSelect(i,SELECT_BY_POS)) // if(OrderSelect(i,SELECT_BY_POS))

{


Prix=OrderOpenPrice() ; //Remplir le tableau avec les prix

Mas[i] = Prix ;

}

}

ArraySort (Mas,WHOLE_ARRAY,0,MODE_ASCEND) ; // Les prix d'ouverture sont maintenant classés par ordre décroissant.

int Blizko1=ArrayBsearch(Mas,Bid,WHOLE_ARRAY,0,MODE_ASCEND) ; //L'indice de l'élément le plus proche en valeur du prix actuel est déterminé

double PriceBlizko1=Mas[Blizko1] ;

}

if (PriceBlizko1-Bid>=30*Point) //si l'ordre inférieur est supérieur à 30 points ! !!!!! IN THIS STREET !!!!!

OrderSend(Symbol(),OP_SELL,LtsS,Bid,2,0,Bid+30*Point) ; //Ouverture de l'ordre de vente

Alerte (GetLastError()) ; //Message d'erreur.



 
vikzip:

Utilisez le bouton pour insérer le code !

Raison: