Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 852

 
Comment trouver la valeur maximale de High[] parmi plusieurs barres ?
 

Il est préférable d'utiliser les nouvelles fonctions CopyHigh de mql4 et la fonction mathématique MathMax.

Ou iHighest

 

Bonjour, dites-moi où se trouve l'erreur.

/////////////////////////////////////////////////////////////////////////////////////////////////////

  //////////////////////////////////Зона консолидации/////////////////////////////////////////////////

  ///////////////////////////////////////////////////////////////////////////////////////////////////

  if(Hour()>=10)

  {

   for(x9=2; x9<=5; x9++)

   {

    x10=Hour()-x9;//x10 -номер свечи от которой считаем восемь свечей назад

    if(x10>=0)

    {

     int Minn=iLowest(NULL, PERIOD_H1, MODE_LOW , x10+8, x10);

     int Maxx=iHighest(NULL, PERIOD_H1, MODE_HIGH, x10+8, x10);

     z11 =iHigh(NULL,PERIOD_H1,Maxx);

     z12 =iLow(NULL, PERIOD_H1,Minn);

     ZPB     =iTime(NULL,PERIOD_H1,x10+8);

     ZPB1     =iTime(NULL,PERIOD_H1,x10);

     if(z11-z12<=z10)

     {

      y4=ObjectCreate("Зона консолидации",OBJ_RECTANGLE,0,0,0,0,0);

      y4=ObjectSet("Зона консолидации",OBJPROP_WIDTH,2);

      y4=ObjectSet("Зона консолидации",OBJPROP_COLOR,Blue);

      y4=ObjectSet("Зона консолидации",OBJPROP_BACK,true);

      y4=ObjectMove("Зона консолидации",0,ZPB,z11);

      y4=ObjectMove("Зона консолидации",1,ZPB1,z12);

     }

    }

   }

  }

  ////////////////////////////////////////////////////////////////////////////////////////////////////

L'idée est qu'à chaque itération, le code devrait vérifier la largeur du canal et si elle est inférieure ou égale à la valeur actuelle(z11-z12<=z10), un rectangle devrait être dessiné, mais la sortie est que toutes les itérations sont passées en premier, et ensuite il y a un contrôle de cohérence.
 
AlexeyVik:

Il est préférable d'utiliser les nouvelles fonctions CopyHigh de mql4 et la fonction mathématique MathMax.

Ou iHighest

Si CopyHigh, alors ArrayMaximum, IMHO...
 

Veuillez indiquer comment traiter l'erreur numéro 1 (ERR_NO_RESULT Pas d'erreur, mais résultat inconnu) ?

Lorsqu'un ordre perd plus de 1 $ (100 pips à 0,01 lot) sur EURUSD, mon conseiller expert essaie de modifier l'ordre (placer le TakeProfit de l'ordre à son prix d'ouverture).

Je reçois cette erreur, que dois-je faire ?

 
evillive:
Si CopyHigh, alors ArrayMaximum, IMHO...
Oui, c'est ce que je pensais... Il peut y avoir des dérapages et des malentendus. Il y a environ un mois et demi, la même question se posait sur le cinquième forum. Alors là, j'ai parlé d'ArrayMaximum, et là, ça s'est un peu mélangé...
 

Bonjour, je travaille avec des moyennes mobiles(MA) de 2000.

La tâche consiste à calculer le nombre de répétitions du prix MA sur Close [1].

- Comment puis-je réaliser cette tâche avec un minimum de ressources ?

 
Top2n:

Bonjour, je travaille avec des moyennes mobiles (MA) de 2000.

La tâche consiste à calculer le nombre de répétitions du prix MA sur Close [1].

- Comment puis-je réaliser cette tâche avec un minimum de ressources ?

Si nous n'utilisons pas la période 1 sur les prix de clôture, le nombre de répétitions sera de zéro. Mais si nous envisageons d'entrer dans une certaine fourchette, la tâche peut être solvable et plus intéressante. Alternativement, nous trouvons les valeurs maximales et minimales. Nous divisons la différence par la fourchette. Ensuite, nous définissons une plage tombant dans chaque muving (nous considérerons un tableau qui correspond à des plages ou des intervalles). L'indice du tableau avec le nombre maximum de résultats est le gagnant. Je n'ai peut-être pas été assez clair. Il est préférable que cette tâche soit résolue dans un sujet distinct. Il peut y avoir plusieurs variantes de solution. Et dans le futur, quelqu'un pourrait en avoir besoin. Et ici, ils n'en trouveront pas la fin par la suite.
 

Bonjour, en lisant le tutoriel, je suis arrivé aux variables GV. Je n'arrive pas à comprendre comment ils fonctionnent. Par exemple, le tutoriel indique que les variables GV ne peuvent être que de type double. Ok, double donc double). Mais ensuite, lorsqu'ils énumèrent les fonctionsGlobalVariableSet(),GlobalVariableGet(),GlobalVariableDel(), ils écrivent que l'une d'entre elles renvoie le temps, une autre renvoie un bool, etc. Je me suis embrouillé dans ma tête, je ne comprends pas comment ils sont organisés. J'ai également commencé à étudier le MQL4 récemment, j'ai reçu beaucoup de nouvelles informations dans ma tête. Si possible, veuillez m'expliquer un exemple d'un de ces problèmes dans un manuel (ou un de vos propres problèmes) :

Tâche 24. Plusieurs Expert Advisors fonctionnent simultanément dans le terminal. Le montant du dépôt est de 10 000 $. La valeur totale de tous les ordres ouverts ne doit pas dépasser 30 % du montant du dépôt. Chaque conseiller expert doit se voir attribuer la même somme d'argent. Réalisez un programme Expert Advisor contenant le calcul de la somme d'argent allouée au trading.

intExperts;//Nombre de conseillers experts. d'experts

double Depo=10000.0, // Dépôt spécifié

Persistant=30,// pourcentage donné

De l'argent;// Fonds recherchés.

string Quantity="GV_Quantity" ; // Nom de la variable GV

//--------------------------------------------------------------------

int init()/Spécial. fonction init

{

Experts=GlobalVariableGet(Quantity) ; // Obtenir la valeur du texte.

Experts=Experts+1 ; // Nombre d'experts.

GlobalVariableSet(Quantity, Experts) ; // Nouvelle valeur

Money=Depo*Persent/100/Experts ; // Exp.

Alert("Pour l'expert de la fenêtre ", Symbol()," alloué ",Money);

retour ;// Sortir de init()

}

//--------------------------------------------------------------------

int start()// Spécial. début de la fonction

{

int New_Experts= GlobalVariableGet(Quantity);// Nouveau nombre d'exp.

if (Experts!=New_Experts) // Si modifié

{

Experts=New_Experts ; // Le nombre actuel est maintenant le suivant

Money=Depo*Persent/100/Experts ; // Nouvelle valeur de l'exper.

Alert("Nouvelle valeur pour l'expert ",Symbol()," : ",Money);

}

/*

...

Le code principal du conseiller expert doit être spécifié ici,

qui utilise la valeur de la variable Money

...

*/

retour;//sortir de start()

}

//--------------------------------------------------------------------

int deinit()//Propre. Fonction deinit()

{

si (Experts ==1)// Si un seul expert..

GlobalVariableDel(Quantity) ; //...supprimer les variables GV

sinon// Sinon..

GlobalVariableSet(Quantity, Experts-1) ; //...diminuer de 1

Alert("EA est déchargé de la fenêtre ",Symbol()) ; // Notifier le déchargement.

retour ;// Sortie de deinit()

}

 
Vinin:
Si vous n'utilisez pas la période 1 sur les prix de clôture, le nombre de répétitions sera de zéro. Mais si vous comptez atteindre une certaine fourchette, alors le problème peut être résolu et plus intéressant. On peut aussi trouver les valeurs maximales et minimales. Nous divisons la différence par la fourchette. Ensuite, nous définissons une plage tombant dans chaque muving (nous considérerons un tableau qui correspond à des plages ou des intervalles). L'indice du tableau avec le nombre maximum de résultats est le gagnant. Je n'ai peut-être pas été assez clair. Il est préférable que cette tâche soit résolue dans un sujet distinct. Il peut y avoir plusieurs variantes de solution. Et dans le futur, quelqu'un pourrait en avoir besoin. Et ici, ils n'en trouveront pas la fin par la suite.

Je vais devoir y réfléchir, merci.

sujet séparé - https://forum.mql4.com/ru/66882