Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

Amélioration d'EA et codage MT4

  • alexxela59

    Bonjour à tous,

    Dernièrement, en fouillant dans quelques sites, j'ai déniché une petite EA travaillant sur du court terme et visant des gains d'une petite de pips.
    Actuellement en test sur un compte démo, l'EA semble prendre correctement des positions, néanmoins légèrement déficitaire pour le moment.

    D'ou mon constat, les spreads pratiqué sur mon compte démo ne sont pas fixe, et j'ai la forte impression que les positions perdantes le sont, la plupart du temps, à cause de spreads élévés.

    Ma question est donc, est-il possible de rajouter une (ou plusieurs^^) ligne de code visant à controler le spread pour valider/annuler une prise de position.
    Exemple : interdire la prise de position quand les spreads sont supérieur à X

    Comme je suis une buse en dev (enfin je m'y mets, mais ce n'est pas encore ma priorité d'apprentissage dans le forex ;)), si quelqu'un à une idée, ou même les ligne à copier coller dans le code (normalement, je devrai m'en sortir^^) je suis preneur !

    Je posterai les résultats de test d'aujourd'hui, demain dans la journée, pour vous donner une idée de la bête, et je lancerai également un backtest que je publierai d'ici la fin du weekend.

    Bonne journée à tous et bon trades biensur :)

    Alex
  • babs

    Salut,

    J'ai trouvé ceci : Spread=NormalizeDouble((Ask-Bid)/Point,0);

    Je ne l'ai pas tester mais ça me semble correct.

    Après tu peux faire un truc du genre :

    Code
    If(Spread<=SpreadLimite) { //Le code à exécuter }
  • alexxela59

    Merci beaucoup !

    Je vais tenter d'insérer ça dans le code :)

  • babs

    Pas de problème. Si tu as d'autres questions n'hésite pas.

    Et si tu n'y arrive pas je pourrais certainement te le faire.

    Bon test
  • furynick

    Attention à l'utilisation de la variable Point ... elle fixe la valeur du point or ce dernier varie en fonction du nombre de décimales utilisées.

    Pour limiter le spread à un nombre de pips il est préférable de calculer le spread en pips de la manière suivante :

    factor=Point*MathPow(10, Digits % 2);
    spread = NormalizeDouble((Ask-Bid)/factor, Digits%2);

    le spread ainsi calculé sera identique quelle que soit la précision du broker (2 ou 3 digits pour les *JPY* et 4 ou 5 digits pour les autres paires).
  • babs

    Bien vu!

    Un autre conseil, afin d'éviter d'avoir à changer ses calculs en fonction du broker lorsqu'on fait un EA. Je vous conseille d'utiliser un variable, par exemple, MyPoint que vous initialiser dans la fonction init() de votre EA.
    Ensuite il ne vous reste qu'à utiliser la variable MyPoint plutôt que Point.

    Cette méthode n'engage que moi ;)
  • alexxela59

    Ca sort de mes limites de compétence actuelle ;) Mais au final, j'avais mal lu la section paramétrage qui permet de regler le spread max, et le slippage. (Mais vos réponses m'ont fait penser à controler le nombre de décimale^^)

    Par contre, je vais vous mettre l'adresse de l'EA en lien, car elle me semble interessante (bon, jsuis dans le deuxième jour de test, donc on relativise :))

    http://www.forex-tsd.com/expert-advisors-metatrader-4/17341-_rdb_the-best-free-ea.html

    Dans les grandes lignes :
    - EA pour trader sur EUR/GBP
    - Utiliser une TF 5m
    - Fonctionne de 21h à 5h (perso je la test en continu)
    - C'est une EA orienté scalp

    La "maintenance" de l'EA semble ne plus etre d'actualité (selon le forum)