[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 577

 
lottamer:

Bonjour aux membres du forum,

J'ai décidé d'écrire un EA pour moi-même. Je suis en train de lire un tutoriel sur mql4 car je trade MT4. Et voici la chose intéressante. Les fichiers mqh téléchargés à partir de ce tutoriel s'ouvrent (automatiquement) dans MetaEditor 5 (j'ai également installé Mt5) ! Cela signifie-t-il qu'ils ne fonctionneront pas avec Mt4 ?


Essayez de le compiler et vous le découvrirez.
 
rigonich:


Il ne s'agit pas d'une fonction, mais d'un moyen de comparer des nombres non normalisés. Ils ne peuvent pas être comparés entre eux, mais le résultat de la soustraction de l'un à l'autre peut être comparé à zéro.

Et mon chèque est comme ça :

Vous le dites bien, mais vous le faites "à votre façon"... Et il est plus lettré (après tout) :

//+------------------------------------------------------------------+ 
 double ND(double nd){return(NormalizeDouble(nd,Digits));}
//+------------------------------------------------------------------+ 
if (ND (price - OrderOpenPrice()) != 0.0 || ND (SL - OrderStopLoss()) != 0.0 || ND (TP - OrderTakeProfit()) != 0.0 || Expiration != OrderExpiration())
{OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE);}

...bien que je ne sois pas d'accord avec toutes les conditions de comparaison. Vous pouvez lire les conditions ici.

 
rigonich:

Essayez de compiler et vous verrez.

oui...il suffit d'ouvrir ces fichiers mqh avec 4Editor...
 
Desead:

Besoin de normaliser le graphique des prix, n'importe quelle paire de devises de votre choix. J'en ai besoin pour un indicateur. J'ai essayé de diviser la valeur actuelle par la précédente - j'obtiens une sorte d'oscillateur autour de 1. J'ai eu l'idée de convertir le graphique de valeurs absolues en valeurs relatives, c'est-à-dire que dans ce cas, je pourrai voir le pourcentage de changement de cotation. Elle a été mise en œuvre. Il est déjà meilleur et correspond pratiquement à ce dont nous avons besoin. Cependant, mon souhait ultime est de normaliser les citations dans l'intervalle [0:1] . A propos,voici ce dont j'ai besoin mais en bourgeois - je voudrais la même chose en russe : http://people.revoledu.com/kardi/tutorial/Similarity/Normalization.html.

Je suis déjà fatigué de me battre avec ça. Je n'arrive pas à supprimer tous les ordres en attente normalement, je n'arrive pas à le faire :

J'ai même ajouté à la boucle FOR WHILE les commandes supprimées qui sont toujours là, mais je ne les ai toujours pas supprimées. J'ai beaucoup d'ordres en attente à supprimer, c'est-à-dire environ 20, peut-être s'agit-il de quelque chose de compliqué ?


Il semble que le problème de la suppression des commandes ait été résolu. J'utilise une fonction séparée pour compter le nombre d'ordres "nécessaires" (à enlever), Total, j'appelle cette fonction et while avec une condition (Total>0), puis le cycle d'enlèvement pour (int i=Total-1 ;i<=0l ; i--), à nouveau f-kind de"nécessaire", compteur de tentatives d'enlèvement avec sortie dewhile quand le niveau donné est atteint. De cette façon, ils sont tous supprimés.
 
TarasBY:

Voici un exemple de suppression d'ordres, y compris ceux en attente (j'ai supprimé avec celui-ci) :

Tous les ordres en attente ne sont pas présents dans votre code (dans le filtre de sélection). Autre variante d'erreur : vérifiez le Magick reçu par les ordres en attente lors de leur ouverture (dans votre propre code).

Je vous remercie de votre réponse. Je n'ai pas besoin de tous les ordres en attente, seulement bylimit et selllimit et je ne les règle que, la magik est la même partout. Si je ne peux pas résoudre le problème par mes propres moyens, je dois me pencher sur vos scripts, je ne peux pas le faire autrement, il ne veut tout simplement pas le supprimer.

Ce que je pensais. Je règle la suppression de tous les robots en attente à un seul endroit : lorsque je décharge mon robot, il est placé dans deinit. Peut-être que cette section a une sorte de limite de temps ? Quand je ne supprime que quelques ordres, tout va bien, mais quand je décharge une grille entière, alors que diable se passe-t-il, il reste toujours une douzaine d'ordres et il n'est pas possible de la nettoyer manuellement.

 
rigonich:

Hourra, il semble que j'ai résolu le problème de la suppression des commandes. J'ai calculé le nombre d'ordres "nécessaires" (à enlever) dans une fonction séparée, appelée cette fonction, puis while avec une condition (Total>0), puis le cycle d'enlèvement for(int i=Total-1 ;i<=0l ; i--), à nouveau, la fonction de comptage des"nécessaires", compteur de tentatives d'enlèvement avec la sortie dewhile lorsque le niveau spécifié est atteint. De cette façon, tout est supprimé.
Au fait, c'est une bonne alternative, laissez ce while continuer sa boucle jusqu'à la fin du monde, merci, je vais l'essayer maintenant.
 

vous devez insérer les termes HAVE d'une transaction ouverte (une, sans majoration) dans une ligne, par exemple, avec un croisement de moyennes.

a trouvé ceci

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

int start()

{

for(int i=0 ; i<OrdersTotal() ; i++)

{

si ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) )

PlaySound ("alert.wav") ;

retour(0) ;

}}

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

Il y aune position ouverte mais pas de son.

Pouvez-vous me dire ce qui ne va pas ?

Ou la facilité avec laquelle il est possible d'écrire la condition :

SI MA 5 croise MA 10 et qu'il y a une position ouverte - fermez cette position.

Il semble que c'est là que void.... est nécessaire.

 
lottamer:

Oui... il suffit d'ouvrir ces fichiers mqh avec 4Editor...

S'ils sont issus du tutoriel MQL4, ils seront ouverts par4thEditor. Mettez-les dans le dossier includ ou renommez-les enmq4 et mettez-les dans le dossier Expert, le principal s'il s'agit d'une EA, ou les dossiers scripts ou indicateurs respectivement, et ouvrez-les.
 
Desead:
Bonne option d'ailleurs, et laisser ce tout en course son cycle jusqu'au bout du monde jusqu'à ce qu'il supprime les commandes, merci, je vais l'essayer maintenant.


Il faut 2,5 secondes pour l'exécuter dans mt4.
 
rigonich:

Il faut 2,5 secondes pour l'exécuter dans mt 4.

Mince, c'est mon problème. Je me demande comment je peux le contourner si j'ai seulement besoin de supprimer toute la grille lorsque je décharge le robot... Je n'arrive même pas à penser à quelque chose ici :(