Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 210
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Bon après-midi.
Ma stratégie prend en compte le spread, le spread est défini par une fonction :
Mais comme le spread est constant dans le testeur de stratégie, j'ai besoin d'un émulateur de spread aléatoire. Je veux émuler les changements d'écart dans le testeur dans la gamme de 2 à 3 points (4 chiffres) dans 80% des cas et plus de 3 points dans 20% des cas. Avez-vous des idées sur la manière de mettre en œuvre cette idée, ou des liens vers des sites où cette idée a été résolue ?
L'erreur avec le magicien fait que votre EA ne voit pas que sa position est fermée sur un stop lorsqu'elle se ferme sur un stop. Pourquoi ? La réponse est que vous ouvrez une position avec magic 123 et envoyez la variable Magic à la fonction qui vérifie la fermeture de la position au stop. Que pensez-vous qu'elle soit égale lorsqu'elle est initialisée implicitement ? Zéro. La fonction recherche naturellement les positions avec le numéro magique 0 et il est égal à 123 dans vos positions. Et nous ne sommes pas en train de nous disputer, juste... ...raisonnement... Vérifiez la réaction de fermeture sur l'arrêt :
Je n'ai pas regardé le reste de la logique de ton EA "mort" - je t'aidais à comprendre la fonction de contrôle de fermeture de l'arrêt...
Artem ! Bonne journée ! Merci encore pour votre aide.
J'ai supprimé toutes les logiques "mortes" inutiles et "ranimé" celles qui restaient..... pour autant que je le comprenne.
Il ne reste qu'une fonction, que vous m'avez aidé à réparer.
Mais des miracles ont commencé à se produire au-delà de mon entendement.
1. Mon conseiller expert ouvre des positions au début de chaque bougie (j'ai une bougie de 5 minutes).
et en ignorant toutes les conditions.
C'est-à-dire que le contrôle entre dans la première ligne
double Price=iOpen(Symbol (),0,0) ;
Et ensuite, il saute 11 lignes et arrive aux lignes suivantes
Lot=0.1 ;
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point, "jfh",123 ) ;
2. si nous supprimons la ligne qui calcule le lot minimum Lot=MarketInfo(Symbol(), MODE_MINLOT);
Le conseiller expert fonctionne bien, mais la fonction isCloseLastPosByStop ne fonctionne pas.
Je me suis longtemps creusé la cervelle..... mais en vain. Je vous serais reconnaissant de bien vouloir me dire où se cache l'erreur.
Solnce600:
Артем ! Добрый день! Еще раз спасибо за помощь.
Toute ma "logique morte" supprimée inutile et "ravivée" le reste..... pour autant que je le comprenne.
Je n'ai pratiquement laissé que la fonction, que vous m'avez aidé à corriger.
Mais les miracles, qui dépassent mon entendement, ont commencé à se produire.
Après
ajoutez tout au corps { }
Désolé, je ne suis pas Artem.
Solnce600:
Après
ajoutez tout au corps { }
Je suis désolé, je ne suis pas Artem.
t ou Lot ? ??
Solnce600:
Après
ajoutez tout au corps { }
Désolé, je ne suis pas Artem.
J'ai fait comme vous l'avez dit..... hélas le conseiller fonctionne .... la fonction isCloseLastPosByStop ne fonctionne pas
Voici un morceau de code de la fonction bool isCloseLastPosByStop(string sy, int op, int mn, double &ll)
Mais que se passe-t-il s'il y a un glissement de 3 pips ? Ce n'est pas très bien pensé ;))
Vous comprenez, cela ne me dérange pas vraiment pour l'instant. ....
Cela fait une semaine que j'essaie de comprendre pourquoi cette fonction ne fonctionne pas pour moi.
C'est-à-dire que j'ai besoin que l'ordre suivant s'ouvre avec un volume double de l'ordre fermé au stop, et que l'ordre suivant s'ouvre avec un volume régulier après le non-stop.
Corrigez la logique du travail, sinon il faudra beaucoup de temps pour réfléchir.
Voici un morceau de code de la fonction bool isCloseLastPosByStop(string sy, int op, int mn, double &ll)
Mais que se passe-t-il s'il y a un glissement de 3 pips ? Ce n'est pas très bien pensé ;))
Vous comprenez, je ne m'en occupe pas encore. ....
Cela fait une semaine que je ne comprends pas pourquoi cette fonction ne fonctionne pas comme je le souhaite.
C'est-à-dire que je dois ouvrir l'ordre suivant après le stop avec un volume double de l'ordre qui s'est fermé au stop, et après le non-stop, l'ordre suivant est ouvert avec un volume régulier.Et pourquoi toucher à l'historique des commandes? Regardez le solde - où il est allé dans cette direction et changez le lot.
S'il s'agit uniquement d'un robot qui effectuera des transactions sur votre compte.