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

Money Management pour mon EA

  • furynick

    Outre la précision de la méthode, je te conseille également d'établir des règles de codage pour que la mise en forme de tes programmes puisse être lisible et compréhensibles.

    J'essaie en ce moment d'établir une structure plus ou moins générique et de me constituer un Framework pour pouvoir par la suite me concentrer sur le cœur d'un EA sans perdre de temps à corriger les bugs annexes.
  • arbilus

    Merci pour toutes ces précisions et pour votre disponibilité!
    Je viens juste de trouver une nouvelle méthode (du moins, nouvelle pour moi :)) . En "manuel" quand on l'essaye elle a l'air de fonctionner vraiment bien! http://www.whselfinvest.com/fr/technique_analyse_indicateur_dinapoli_preferred_stochastics.php .
    Qu'en pensez-vous? ça vaut le coup d'en faire un EA, en ajoutant si besoin est un filtre?

    Pour les indicateurs, j'ai pris deux versions modifiées: http://www.fxstreet.com/metatrader/addons/dafc99d7-a446-4069-bad9-8fb343e11529 et http://www.fxstreet.com/metatrader/addons/6eb1e612-32e0-418f-bd52-9b8873f4e9c5 .
  • furynick

  • arbilus

    J'ai un nouveau problème avec l'EA. Comment éviter la situation sur l'image? Ici le take profit arrête la position mais du coup l'EA détecte une "nouvelle" opportunité juste après et sur la même bougie: ce qui ne devrait pas être. Il faudrait vérifier si une position a déjà été ouverte ET fermée sur la même bougie. Mais comment...
    arbilus a joint une image
    G2633HB
  • furynick

    C'est une simple question de logique, tu ne dois traiter qu'un seul signal à la fois.
    Tu récupères les signaux à chaque tick, ces signaux doivent inclure la formation d'une nouvelle barre pour être valides ainsi que le statut des ordres en cours, les signaux sont donc mutuellement exclusifs.

    void getSignals() {
    getATRSignal();
    getCCISignal();
    getRSISignal();

    if (newBarFormed()) {
    buyOpenSignal = !buyActive && ATRSignal == 1 && CCISignal == 1 && RSISignal == 1;
    sellOpenSignal = !sellActive && ATRSignal == -1 && CCISignal == -1 && RSISignal == -1;

    buyCloseSignal = buyActive && (Bid > TP || Bid < SL);
    sellCloseSignal = buyActive && (Ask < TP || Ask > SL);
    }
    }

    void openOrder() {
    if (buyOpenSignal)
    if (OrderSend(OP_BUY, ....))
    buyActive=true;
    if (sellOpenSignal)
    if (OrderSend(OP_SELL, ....))
    sellActive=true;
    }

    void closeOrder() {
    // boucle de sélection des ordres
    OrderClose(OrderTicket(), ...);
    }

    int start() {
    getSignals();
    openOrder();
    closeOrder();
    ...
    }
Page 2