[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 281

 
Pyro:

tara


C'est intéressant, car le prix de l'établissement d'un ordre est normalisé à 4 chiffres, c'est-à-dire qu'il ne peut y avoir de fractions de pip. Pourquoi en est-il ainsi ? Et oui, cela fonctionne correctement maintenant ! THX

En fait, la normalisation doit être effectuée au moment du calcul :

   int dg=MarketInfo(Symbol(),MODE_DIGITS);        // Количество цифр после десятичного точки в цене инструмента
   if (NormalizeDouble(OrderOpenPrice()-(p1+more),dg)==0) {
      // ... тут код, если результатом сравнения стал ноль, т.е. сравниваемые величины равны
      }

et quelques points dans votre code :

for(int i=1 ; i <= OrdersTotal() ; i++)   // делаете цикл от второго ордера в списке. Почему бы сразу не for(int i=0; i<OrdersTotal(); i++) ?
   {
   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES))  // если выбрали ЛЮБОЙ ордер, пусть он даже открыт другим советником или вручную
      {                                           
      if(OrderOpenPrice()-(p1+more) == 0)          // сравниваете без нормализации
         {
         ordersethigh1=true;                       // желательно флагу ПЕРЕД циклом задать значение false
         break;
         }
      }
   }
     
if((ordersethigh1==false) && (p2-price>pointsclose))  // второе условие тоже не нормализовано
   {
   OrderSend(Symbol(),OP_SELLLIMIT,baselot,p1+more,3,NULL,NULL,"Comment",0001,0,White);
   }
 

artmedia70


Eh bien, j'ai écrit en me basant sur votre code. Simplifié pour l'instant (je suis en train de le découvrir). La seule chose qui est devenue claire est que tout doit être normalisé. C'est une sorte de révélation (tout fonctionnait sur le testeur). Je m'en occupe maintenant.

если выбрали ЛЮБОЙ ордер, пусть он даже открыт другим советником или вручную

Dans ce cas, nous n'avons pas besoin de code redondant. Mais j'ai ajouté une vérification pour l'outil.

J'ai deux variantes, les deux fonctionnent :

if(OrderOpenPrice()-(channelhigh+more) <=Point*0.5)

if(NormalizeDouble(OrderOpenPrice()-(channelhigh+more),4) == 0)

Merci, ça a éclairci beaucoup de choses !



 
Pyro:

artmedia70


Eh bien, j'ai écrit en me basant sur votre code. Simplifié pour l'instant (je suis en train de le découvrir). La seule chose qui est devenue claire est que tout doit être normalisé. C'est une sorte de révélation (tout fonctionnait sur le testeur). Je m'en occupe maintenant.

Uncode excessif n'est pas nécessaire dans ce cas. Mais j'ai ajouté une vérification pour l'outil.

J'ai deux variantes, les deux fonctionnent :


Merci, beaucoup de choses ont été clarifiées !

Est-il redondant de vérifier quel est le type de l'ordre sélectionné ? S'il s'agit d'un ordre d'achat ou de vente ? Sans vérification, votre fonction vous indiquera qu'il y a un ordre en attente (vous vérifiez sa présence). Vous voulez vérifier s'il y a un ordre en attente, et vous obtiendrez vrai s'il y a un type. Même si vous l'ouvrez manuellement. Il existe quatre types d'ordres en attente. Afin d'éviter toute confusion, il est préférable de passer dans une fonction, lorsque vous l'appelez, le type d'un ordre en attente, puis de vérifier si le type d'ordre que vous avez choisi correspond à celui passé dans la fonction.
(Ce contrôle n'est pas présent dans mon exemple de la p. 277). Il vérifie seulement s'il y a une attente - si le type est inférieur à 1 et supérieur à 5, nous passerons à la sélection suivante).

Suivant. Votre EA peut travailler sur un TF, et sur l'autre, un autre EA peut travailler simultanément. Les deux travaillent sur le même symbole. Une position ouverte par un autre EA sera considérée par cet EA comme "oui, il y a un ordre". Nous devons donc introduire une vérification du MagicNumber afin que le Conseiller Expert puisse distinguer ses propres ordres et positions.

Par conséquent, les vérifications du symbole de l'instrument commercial, du numéro magique et du type de l'ordre contrôlé ne sont pas excessives, mais nécessaires. C'est le minimum, mais pas la redondance.

 

Salutations camarades !

Veuillez me conseiller : quelqu'un a-t-il rencontré le problème de la recherche du dernier ordre clôturé? Est-il devenu rentable ou non ?

Quelles sont les méthodes que vous avez utilisées ?

Merci d'avance.

R.S. Je suppose que l'opération n'est pas difficile, mais je ne sais pas comment m'en approcher.

 
artmedia70:

Par conséquent, les vérifications du symbole d'un instrument commercial, du numéro magique et du type d'un ordre contrôlé ne sont pas excessives, elles sont nécessaires. C'est le minimum mais pas excessif.

Mon erreur ici est que je n'ai affiché qu'une seule fonction en substance. Il y aura des contrôles, bien sûr. C'est juste que ce morceau de code, qui est un élément de formation à bien des égards, n'est rien de plus qu'une partie de l'EA. Merci encore pour votre aide, mes amis !

 
ramirez17:
Je suppose que c'est une opération simple, mais je ne sais pas comment m'y prendre.
Vous seriez surpris de la popularité de cette question.
Recherche sur Google :
dernière commande fermée site:mql4.com
 
ramirez17:

Salutations camarades !

Veuillez me conseiller : quelqu'un a-t-il rencontré le problème de la recherche du dernier ordre clôturé? Est-il devenu rentable ou non ?

Quelles sont les méthodes que vous avez utilisées ?

Merci d'avance.

s.s. Je suppose que cette opération n'est pas trop compliquée, mais je ne sais pas comment l'aborder.

https://www.mql5.com/ru/forum/131859/page4#434229

https://www.mql5.com/ru/forum/131859/page4#434230

 
granit77:
Vous seriez surpris de la popularité de cette question.
Recherche sur Google :
dernière commande fermée site:mql4.com

Ok. J'ai oublié Google. Je suis venu directement ici :)
 
dans quel dossier dois-je placer le fichier set de l'EA ?
 
drm1:
dans quel dossier dois-je placer le fichier set de l'EA ?
expert/présidents