Dans mon cas, c'était "<=", mais les valeurs stochastiques changent très fortement, même à chaque tick - il y a quatre décimales supplémentaires, c'est-à-dire qu'en un tick, les valeurs peuvent passer de (par exemple) 75.0003 à 74.0900.
Ainsi, le signe "=" peut être omis sans crainte. Mais bien sûr, pour ne pas penser - je pense que je le ferai.
J'ai regardé l'expert - tout semble être correct. Impossible de le vérifier - pas d'indicateur. Essayez d'ajouter Print avant OrderClose et voyez si le signal de fermeture apparaît.
Je ne comprends pas ! J'ai mis ce bloc dans un autre EA. Et un troisième. ... . Mais la situation n'a pas changé ! Les postes ne sont pas fermés. Bien que rarement, rarement (une ou deux fois sur l'historique = 1 an) et clignote un triangle vert de fermeture sur le graphique visuel. Mais ça ne devrait pas être comme ça ! Les positions, à en juger par le code, devraient se fermer comme une navette de machine à coudre !
Peut-être que ce bloc ne devrait pas fonctionner ? Après tout, nous avons des stops dans le code lorsque nous ouvrons : - stoploss et takeprofit. Et peut-être que toutes les autres conditions de clôture sont ignorées pour cette raison ?
Il est compréhensible que les bénéfices ne soient pas augmentés par ces fermetures. Mais le tirage au sort..... Diminue souvent de manière significative.
komposter: Je n'ai pas regardé le code. Mais une chose est sûre : au lieu de "if(Stochast_1>75 && Stochast_0<75)", je ferais "if(Stochast_1>75 && Stochast_0<=75)".
Une meilleure solution serait : if(Stochast_1-75.0>0 && Stochast_0-75.0<=0) afin d'éviter les conversions inutiles des types int et double.
Et comment éviter les int et double inutiles. ? De plus, au lieu de chiffres, nous pouvons utiliser des paramètres externes - extern int Up_lim = 80 ; extern int Low_lim = 20 ;
rid: Et comment éviter les int et double inutiles. ? Je n'arrive pas à comprendre. En outre, au lieu de chiffres, nous pouvons utiliser des paramètres externes : extern int Up_lim = 80 ; extern int Low_lim = 20 ;
Premièrement, il est incorrect de comparer le réel Stochast_ et l'entier 75, et deuxièmement, il est plus correct de comparer leur différence avec zéro.
Dans mon cas, c'était "<=", mais les valeurs stochastiques changent très fortement, même à chaque tick - il y a quatre décimales supplémentaires, c'est-à-dire qu'en un tick, les valeurs peuvent passer de (par exemple) 75.0003 à 74.0900.
Ainsi, le signe "=" peut être omis sans crainte. Mais bien sûr, pour ne pas penser - je pense que je le ferai.
Essayez d'ajouter Print avant OrderClose et voyez si le signal de fermeture apparaît.
C'est fait. Ajouté. Non, ..... ! L'avis de clôture n'apparaît pas dans le journal de bord.
Je ne comprends pas ! J'ai mis ce bloc dans un autre EA. Et un troisième. ... . Mais la situation n'a pas changé ! Les postes ne sont pas fermés. Bien que rarement, rarement (une ou deux fois sur l'historique = 1 an) et clignote un triangle vert de fermeture sur le graphique visuel. Mais ça ne devrait pas être comme ça ! Les positions, à en juger par le code, devraient se fermer comme une navette de machine à coudre !
Indicateur NOnLagMA dans le téléchargement
Peut-être que ce bloc ne devrait pas fonctionner ? Après tout, nous avons des stops dans le code lorsque nous ouvrons : - stoploss et takeprofit. Et peut-être que toutes les autres conditions de clôture sont ignorées pour cette raison ?
ticket=OrderSend(Symbol(),0,Lots,Ask,Slippage,Bid-SL_long*Point,Ask+TP_long*Point, NULL,MagicNum, 0,CLR_NONE) ;
Vous devrez vous en occuper d'une autre manière.
Je ne comprends rien !
Vous devriez être plus attentif.)
Voici la fonction start() de la variante de test (sans SL et TP, avec des messages corrects et sans glissement inutile) :
Mais je n'utiliserais pas cet EA sur un compte réel si j'étais vous. Il faut le mettre en ordre, ou en "préparation", si vous voulez ;)
Oui, bien sûr. Merci pour votre aide ! Je comprends votre commentaire sur mon erreur.
Et j'ai pris note de vos recommandations. Il y a encore un long chemin à parcourir avant un véritable commerce...
p.s/ Tout fonctionne.... ! Et comment ça a marché !
Je n'ai pas regardé le code.
Mais une chose est sûre : au lieu de "if(Stochast_1>75 && Stochast_0<75)", je ferais "if(Stochast_1>75 && Stochast_0<=75)".
Une meilleure solution serait : if(Stochast_1-75.0>0 && Stochast_0-75.0<=0) afin d'éviter les conversions inutiles des types int et double.
Et comment éviter les int et double inutiles. ? Je n'arrive pas à comprendre. En outre, au lieu de chiffres, nous pouvons utiliser des paramètres externes : extern int Up_lim = 80 ; extern int Low_lim = 20 ;
Premièrement, il est incorrect de comparer le réel Stochast_ et l'entier 75, et deuxièmement, il est plus correct de comparer leur différence avec zéro.
"Comparaison de nombres réels".