[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 588

 

Dites-moi où trouver des programmeurs qui écrivent des EA !

 

Vous devez également contrôler le moment de l'ouverture de la barre :

datetime bartime;

int init()
{
   ...
   bartime=0;
   ...
}

int start
{
   ...
   if(bartime<Time[0]) //если пришел новый бар
   {
       //делаем то что нужно
   }
   ...
   bartime=Time[0]; //обязательно запомнили обсчитанный бар
}

 
supernovik:

Dites-moi où trouver des programmeurs qui écrivent des EA !

https://www.mql5.com/ru/forum/116708
 
alsu:
...

3. remplir le tableau for(i=1;i<=PerB;i++) MyATR[i-1]=(High[i]-Low[i])/Low[i] ; l'indice i commence à 1 car nous n'avons besoin que des barres fermées

...

vérifiez, c'est peut-être juste une erreur

Ok merci, j'essaierai demain matin (ma tête n'est pas très bonne en ce moment), mais dans ce cas (i=1) je pourrai me référer au prix Open [0] de la barre actuelle ?

P. S. Ok, je pense que j'ai compris l'essentiel - je vais essayer dans l'après-midi.

 
Craft:
OK, je vais essayer, mais dans ce cas (i=1) je pourrai me référer au prix de l'Open de la barre courante Open[0]&
Bien sûr que vous pouvez, rien ne peut l'empêcher. D'une manière générale, en MQL, il faut traiter les index de tableaux avec beaucoup de précaution, et vérifier constamment leur exactitude, car étant donné le manque d'outils de débogage, la recherche d'une éventuelle erreur peut prendre des semaines. En outre, cela conduit souvent à des "pseudo-grailles", c'est-à-dire des programmes qui, par inadvertance, se projettent d'une barre dans le futur et donnent donc des résultats exceptionnels lors des tests, mais échouent en temps réel.
 

Il n'a pas tenu jusqu'au matin. Cela s'est un peu amélioré, mais les placements de fleurs dans l'ordre ne pouvaient être évités. Comment puis-je établir une seule commande à la condition requise ? Vous avez mentionné : Non, cela ne fonctionnerait pas. Seulement par l'analyse de l'historique des commandes - comment pouvons-nous faire cela ou qu'est-ce qui convient d'autre ?

 
alsu:

Vous devez également contrôler le moment de l'ouverture de la barre :


Alsu, est-ce que tu faisais référence à mon exemple ?
 
Veuillez me conseiller, j'ai du mal avec la rédaction de l'EA. Je dois ouvrir un nouvel ordre lorsque l'ancien est fermé par tp ou sl.



Je serais heureux de vous aider !
 
Top2n:
Dites-moi s'il vous plaît, j'essaie d'écrire un EA. Je dois ouvrir un nouvel ordre quand je ferme l'ancien par tp ou sl.
Je vous en serais reconnaissant !

Vous devez insérer (copier) séparément dans le code (en dehors du Start) les f-i qui indiquent comment la dernière position a été fermée.

Ils sont disponibles à l'adresse suivante : https://www.mql5.com/ru/forum/107476

pg. 21

La fonction isCloseLastPosByTake().
Cette fonction renvoie un drapeau pour fermer la dernière position par Take. Le drapeau est levé - Vrai - TakeProfit a été déclenché. Drapeau abaissé - Faux - le poste a été fermé pour une autre raison.

La fonction isCloseLastPosByStop(). Cette fonction renvoie un drapeau pour fermer la dernière position par arrêt. Le drapeau est levé - Vrai - StopLoss déclenché. Drapeau abaissé - Faux - le poste a été fermé pour une autre raison.

-------------------

Très probablement, cela nécessitera aussi un type F :

Fonction GetTypeLastClosePos(). Page 20

Cette fonction renvoie le type de la dernière position fermée ou -1.

=================================

Alors, dans le cas le plus simple, le - Les conditions d'ouverture seront :

//--------------Для бай-сделок-------------

si ( isCloseLastPosByTake(NULL, OP_BUY, -1)==true || isCloseLastPosByStop(NULL, OP_BUY, -1)==true) {

//si la dernière position d'achat a été fermée au niveau du take ou du stop, une nouvelle position d'achat sera ouverte.

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

Idem pour les transactions de vente ....

 

Dites-moi comment les magiciens expérimentés distinguent un EA d'un indicateur et d'un script (sans le "disséquer" dans l'éditeur). J'ai tout mélangé dans mes dossiers. Le dossier EA est rempli d'indicateurs qui ne fonctionnent pas et le dossier des indicateurs est rempli de scripts qui ne fonctionnent pas. J'ai donc (juste au cas où) copié le nouvel indicateur EA dans les deux dossiers.

Je pense que c'est une grosse erreur commise par les créateurs de la langue. L'extension du fichier doit être différente.

Qu'est-ce que les aksakals ont à dire ?