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

Fabriquer son EA à partir d'indicateur

  • robotrader

    est tu la babs?
  • babs

    Bien sûr ;)
  • babs

    Le code de la première page a été mis à jour afin de rendre l'EA fonctionnelle ( je ne sais pas ce que j'ai fais ce jour là mais j'étais pas en forme ;) )
  • robotrader

    merci beaucoup babs j' en ai beaucoup appris grace a ces explications
  • robotrader

    salut babs
    comment rajouter un traillingstop dans cet EA ?

    merci
  • dens

    Merci BABS,
    Je suis nouveau sur le forex et je ne conçois le trading qu'à partir d'EA car comme je passe presque tout mon temps à programmer, en dehors de mon temps de travail, j'évite l'écran. Je me suis farci la doc MQL4 (bien faite au demeurant) mais franchement je commence à être saturé d'apprendre des normes et des langages (en ce moment je suis dans SCORM et c'est une tannée...) bref, ce genre de post didactique facilite grandement la tache d'apprentissage.
    Il y a quelques années j'avais mis au point une martingale basée sur l'observation du déséquilibre des séries que j'ai testée au casino.
    J'étais gagnant sur presque touts les coups (chances simples) à la roulette mais la méthode bloquait ma place à la table, faisait de petits gains (entre 500 et 1000F par soir) et finalement je me faisait gentillement raccompagner à la sortie à chaque fois car ça énervait le croupier.
    Je pense que les règles de sortie de séries de pips s'apparentent beaucoup à la roulette et qu'une méthode toute bête de comptage des séries doit donner un résultat similaire.
    As-tu entendu parler d'un indicateur qui peut effectuer ce boulot ?
  • Arantis

    Hum je veux pas jouer les casses pieds mais Trade uniquement basé sur EA aie aie aie
    :)
  • dens

    Ma modeste expérience en programmation me conforte chaque jour dans le fait d'éviter au maxi l'intervention humaine. Je pense qu'il faut injecter de l'intelligence en amont d'un système puis ne plus laisser un opérateur agir de façon irrationnelle dessus...c'est aussi valable pour moi car je me méfie de mon côté bêtement humain...
  • DayTrader

    Tu as deux approche pour les EA :

    - EA basée sur une stratégie manuelle : pour ça il faut savoir trader, et donc bouffer du graph

    - EA basée sur des stratégies impossible à mettre en place manuellement : ce sont des martingales très poussée (xmeter, fullpips, visionPro, etc.)

    Ce dont tu parles plus haut s'apparente au deuxième cas. Je pense que tu ne trouveras pas de réponse ici; tente plutôt ta chance sur trading automatique . fr
  • furynick

    Il m'est venu une idée pour résoudre au moins en partie cet éternel problème.

    La question est : pourquoi faire un EA qui intégrerai les calculs d'un indic ?
    En effet, un indicateur dispose de tous les éléments de calcul et sait lui même donner les signaux d'achat et de vente (avec des alertes sonores et visuelles).

    Dans cette optique, il ne reste plus qu'à faire un EA qui attrape les signaux d'un indicateur et passe les ordres correspondants.
    Je m'attache à ce problème sur l'heure et vous indiquerai comment d'une part modifier votre indicateur (à condition d'avoir les sources) et d'autre part le code de l'EA qui se contente de passer les ordres.
  • furynick

    La 1ère étape consiste à modifie votre indicateur, pour cela il faut commencer par ajouter les deux fonctions ci-après :
    Code
    void SignalOpen(int op) { if (op != OP_BUY && op != OP_SELL) return; GlobalVariableSet(StringConcatenate("SignalOpen", Symbol()), op); } void SignalClose(int op) { if (op != OP_BUY && op != OP_SELL) return; GlobalVariableSet(StringConcatenate("SignalClose", Symbol()), op); }

    Vous l'aurez compris, ces deux fonctions servent respectivement à signaler une ouverture de trade et une fermeture. Le seul et unique paramètre de ces fonctions désigne le type d'action qui doit être passée :
    OP_BUY : ouvrir/fermer un ordre à l'achat
    OP_SELL : ouvrir/fermer un ordre à la vente

    Faites appel à l'une ou l'autre de ces fonctions dans votre indicateur au moment le plus approprié, par exemple, si votre indic vous alerte visuellement, repérez l'appel à la fonction Alert et ajoutez à la suite la fonction de signal adéquate.
  • furynick

    La deuxième étape consiste à créer un EA qui récupérera les signaux soumis par le ou les indicateurs et qui passera les ordres en conséquence.
    L'exemple ci-après est simpliste et peut (doit) être amélioré pour gérer à minima un money management
    On peut également imaginer un indic qui signale le stoploss le plus judicieux et qui sera pris en compte par l'EA sur le même modèle pour calculer au mieux la taille de la position.

    Code
    //+------------------------------------------------------------------+ //| Igateway.mq4 | //| Copyright © 2011, Nicolas Tuffier | //| http://www.furyweb.fr/forex/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, Nicolas Tuffier" #property link "http://www.furyweb.fr/forex/" //--- input parameters extern string tradeComment="Gateway Managed"; extern double lotSize=0.1; extern int slippage=2; string clsVarName; string opnVarName; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- opnVarName = StringConcatenate("SignalOpen", Symbol(), Period()); clsVarName = StringConcatenate("SignalClose", Symbol(), Period()); //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int op; double price; color col; if (GlobalVariableCheck(opnVarName)) { op = GlobalVariableGet(opnVarName); GlobalVariableDel(opnVarName); if (op == OP_BUY) { col = Lime; price = Ask; } if (op == OP_BUY) { col = Red; price = Bid; } OrderSend(Symbol(), op, lotSize, price, slippage, 0, 0, tradeComment, 0, 0, col); } if (GlobalVariableCheck(clsVarName)) { op = GlobalVariableGet(clsVarName); GlobalVariableDel(clsVarName); if (op == OP_BUY) { col = Lime; price = Bid; } else { col = Red; price = Ask; } int n = OrdersTotal(); for (int i = 0; i < n; i++) if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) if (OrderType() == op && OrderComment() == tradeComment) OrderClose(OrderTicket(), OrderLots(), price, slippage, col); } //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+
  • furynick

    Le fonctionnement est donc le suivant :
    Vous ouvrez un graphique et sélectionnez le TF
    Vous placez l'EA sur le graphique, il commencera à inspecter les signaux
    Vous placez un indicateur qui vous signalera les points de sortie
    Vous placez enfin un indicateur qui vous signalera les points d'entrée

    Vous avez la possibilité de dupliquer ce schéma autant de fois que nécessaire en pensant à différencier à chaque fois le paramètre commentaire associé à chaque graphique.
  • NYKOES

    @Furynick

    Tu devrais vraiment ouvrir un site sur le développement MQL !!
  • Anonyme (invité)

    Merci Furinick pour la facilité de ta méthode
  • furynick

    J'y pense :)
    Mais si je le fais mes services seront payants ;)
  • robotrader

    salut furynick j aurais besoin d un peu d aide s il te plait j avais demandé a babs mais il a pas l air d etre la
    comment rajouter un trailling stop dans le code de babs au debut de ce topic ?
    merci
  • babs

    Pour ajouter une martingale il faut que ton robot calcul la différence entre le prix actuel et ton SL actuel (OrderStopLoss() après avoir fais un OrderSelect() ). Si cette différence est supérieur au nombre de pips désiré alors tu modifie ton SL avec un OrderModify().

    Je ne t'ai pas mis le code car pas le temps mais je pense que tu trouveras ceci facilement.
  • babs

    Non je n'ai jamais entendu parler de cela. Ton approche est intéressante et elle mérite d'être approfondi.
  • Da_blackst4r

    Merci babs :)
    je vais me pencher ce WE sur l'éventuel projet de créer un EA

    Penses tu que de créer un EA qui clôture mon trades au croisement de deux MM est possible à réaliser ?