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

Aide pour créer un EA avec l'indicateur Fisher

  • Settela

    Bonjour

    je suis novice avec MQL4 et je souhaite créer un EA avec l'indicateur Fisher Yur4ik qu'on peut le télécharger : http://www.greattradingsystems.com/indicators/three-fisher-yur4ik-indicators-for-metatrader/

    La stratégie est simple:

    Go long quand indicateur fisher > 0
    Go short quand indicateur fisher <0
    Timeframe = 5MIN

    NB: à chaque fois que l'expert ouvre une nouvelle position ceci suppose qu'il a fermé la dernière position déja ouverte

    Merci
  • JJFlash

    Salut
    Le code est pas bien compliqué à faire. Pour récupérer la valeur de ton indicateur technique tu as deux solutions :
    - utiliser la fonction iCustom(), mais c'est pas vraiment la solution optimale
    - récupérer dans le code de ton indicateur ce qui calcule la valeur qui est retourné sur son graphique (le buffer)
    Ensuite, pour que l'expert prenne qu'une seul position à la fois, tu utilises un if (OrdersTotal == 0) { prendre le trad ;} else {return ;}
    J'espère t'avoir aidé, si tu veux plus de précision, n'hésite pas à demander !
  • Settela — en réponse à JJFlash dans son message #78688

    Salu JJFlash

    merci pour votre réponse, mais je sui novice et je ne c pas coder vous voyez :)
    donc j'ai besoin de votre aide ;) pour cet EA
  • JJFlash

    Ah et bah va falloir s'y mettre alors ^^
    Je te conseil d'allé voir ce site qui est pas mal pour commencer à apprendre
    http://www.trading-automatique.fr/MQL4/sommaire-cours-mql4.html
    Et ensuite y'a celui là qui est pas mal non plus, mais beaucoup moins complet !
    http://www.tribuforex.fr/Tutoriel-MQ4-Programmation-Expert.php
    As tu des bases de programmation déjà ? Sa pourra t'aider ^^
  • Settela

    ok je vais visiter ces sites
    oui j'ai des connaissances en programmation mais basiques
  • vincent_blogtrading

    Bonjour Settela
    si tu as besoin d'aide, n'hésite pas à me contacter
    Il est fort possible que la stratégie que tu veux mettre en place soit trop simple. Mais pour cela il faut s'en rendre compte et la tester.
    Vincent
    Modifié le 2013-06-25 20:23:53 par AliX
  • Settela

    Bonjour Vincent

    j'ai commencé avec cet EA mais quand j'ai voulu commencé avec le backtest j'ai eu l'erreur ERR_INVALID_TRADE_VOLUME, sachat que je prend des positions avec des lots de 0.1, voici le code:

    Code
    extern int sl = 10; extern double lot = 0.1; int last_op; int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if(last_op!=Time[1]) { RefreshRates(); double fish1=iCustom(NULL, 0, "Fisher_Yur4ik",0,1); double fish2=iCustom(NULL, 0, "Fisher_Yur4ik",0,2); if(fish1>0 && fish2<0) { OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-(sl*10)*Point,0,"",0,0); }else if(fish1<0 && fish2>0) { OrderSend(Symbol(),OP_SELL,0.01,Bid,3,Bid+(sl*10)*Point,0,"",0,0); } last_op=Time[1]; } return(0); }
    Modifié le 2013-06-26 12:32:34 par AliX
  • vincent_blogtrading

    Bonjour Sattela,
    attention, le nombre de lots est en dur (0.01) dans les fonctions orderSend. La variable lot n'est pas utilisée.
    Dans ton code, de plus, tu ne fais qu'ouvrir des trades. Si j'ai bien compris, tu veux faire du stop and reverse, donc avant d'ouvrir une position, il te faut fermer la position qui est dans le mauvais sens (orderClose).
    a+
  • Settela

    Re

    absolument, voila la logique de ma stratégie pour cet EA:

    si Fisher>0 ==> fermer toutes les postions AND go Long
    si Fisher <0 ==> fermer toutes les position AND go short

    NB: une position ne peut être prise que si le timeFrame (ici 5MIN) sera passé, cad l'EA n'entre en position que si la valeur affichée par l'indicateur est close

    le lot souhaité= 0.1, mon broker ne me permet pas de passer des ordres avec des lots de taille inférieure à 0.1

    Est ce que c'est possible ?
  • fog

    bonjour settela
    j'ai fait ça vite fait

    https://mega.co.nz/#!wNNDyCRQ!RfFz5xb0kMZ6zyx3hag0BkfTYL8aKE7BFRNepLzi4p4

    parametres:
    seuilin =valeur fisher à partir de laquelle entrer, (convertie en négatif en short)
    seuilout= pareil mais en sortie
    shiftin = decalage de l'entrée (1=cloture bougie précedentre)
    shiftout = pareil mais en sortie
    fixed_lot_size == true, taille de position = Lots
    fixed_lot_size == false, taille de position = balance /size

    j'ai utilisé un icustom ( la flemme ;) ) donc si tu as une autre version de fisher que celle là :Fisher_Yur4ik , il te suffit d'aller dans le code et de remplacer le nom.
    Modifié le 2013-06-26 16:34:47 par fog : mauvais lien...
  • Settela

    Salut fog et merci pour votre aide

    sauf que voila quand j'ai voulu backtesté ca na pas marché avec un timeframe de 5MIN ==> test generation no hsitory data
    et en 15MIN ca donné order modify error 1 ce qui correspond à ERR_NO_RESULT

    Merci
  • Settela — en réponse à Settela dans son message #78737

  • fog — en réponse à Settela dans son message #78737

    Settela, le 26/06/2013 dit :
    Salut fog et merci pour votre aide sauf que voila quand j'ai voulu backtesté ca na pas marché avec un timeframe de 5MIN ==> test generation no hsitory data et en 15MIN ca donné order modify error 1 ce qui correspond à ERR_NO_RESULT Merci


    le modify error 1 est du au fait qu'il n'y a pas de tp et de sl c'est pas très propre mais ça ne gene pas pour le trading

    le no history data signifie (ce qu'il signifie) tu dois telecharger un historique touche F2

    ah et j'oubliais il ne trade qu'entre l'heure de début et l'heure de fin
  • settela (invité) — en réponse à fog dans son message #78754

    qu'est ce que ca veut dire qu'il ne trade qu'entre l'heure de début et l'heure de fin, ta pris un time frame de 1h ?
  • Settela

    BUG :)

    je crois que d'après le backtest il n'est pas entrain d'appliquer la procédure
    en faite ci joint une capture d'écran qui montre que le MT4 a pris une position, puis il l'a fermé sans se conformer à la procédure et à la stratégie

    le lien pour la capture d'écran : https://mega.co.nz/#!sh0CTL6I!SkYK5iwBeSNSvqM09tFqsHcfqKk3U6rrX6GvqskwW4I

    Merci
  • fog — en réponse à Settela dans son message #78778

    Settela, le 26/06/2013 dit :
    BUG :) je crois que d'après le backtest il n'est pas entrain d'appliquer la procédure en faite ci joint une capture d'écran qui montre que le MT4 a pris une position, puis il l'a fermé sans se conformer à la procédure et à la stratégie Merci


    ^^ si si il l'applique, le problème c'est pas l'EA , il ouvre long quand la précedente valeur de fisher est positive et ferme quand la précédente valeur de fisher est négative, simplement l'indicateur , repeint jusqu'à 3 barres des fois donc sa valeur passée n'est pas figée, résultat tout joli qu'il est après coup, il ne donne pas du tout la même chose en live , fait un test en observant le graphique en m1 tu comprendra.
  • fog

    image...
    fog a joint une image
    aide-pour-creer-un-ea-avec-l-indicateur-fisher-7632
  • wimz01

    c'est pour ça que dans le cas où l'on veut exploiter les donnés passé d'un indicateurs pour mettre au point une stratégie, il faut vérifier au préalable que cet indicateur ne repeint pas, car en effet si on ne connais pas le comportement de nos indics en live on a vite fais de se faire des films.

    Ex : le 3_level_semafor, si on ne le connait pas, au premier abords on peut se dire ouaou il est génial cet indic
  • Settela

    Bonsoir tout le monde,

    voila, peut être que j'aurai la solution, et avec un indicateur Fisher_no_repainting.mq4 (ci joint le lien: http://forex-strategies-revealed.com/mt4/swingstrategy) je vais tester avec cet indicateur et voire si ca marche ou pas

    SETTELA
  • furynick

    Avant de se lancer dans le développement d'EA basé sur un indic il serait bien plus efficace de se renseigner sur ledit indic.
    Il a déjà été dit sur ce forum (en l'occurence par moi) que le Fisher était inexploitable car l'original repeint et en recodant le calcul du graph pour ne plus repeindre les signaux sont nazes.