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

Mon premier Robot Expert Advisor (Macd, CCI, BBands)

  • Lorka85

    bon les resultats son eourageants ;)

    j'ai quand même un mini soucis, en fait j'utilise la fonction newbarformed pour que l'ea détecter l'action a faire a chaque nouvelle barre (bougie) former
    Code
    double savedVolume; bool newBarFormed() { bool ret=Volume[0] < savedVolume; savedVolume = Volume[0]; return(ret);

    utilisation :
    Code
    if (newBarFormed()) // le code a faire faire a l'ea {
    Mais j'aimerais que ça sois l'avant dernière barre (bougie) qu'il regarde, pour des raison évidente de repainting, car la barre actuelle ne fait que commencer, et peu évidement changer, mais plus la barre précédente !

    j'ai tenter de changer Volume[0] en Volume[1] pour cilber la bougie précédent l'actuelle, mais je constate que ça ne semble pas suffisant, car mes screenshot pris par l'ea dans 20% des cas m'indique que l'avant dernière barre n'ai pas conforme, voyez vous meme (a moins que l'indicateur repeigne pile au moment du screenshot)

    merci de votre aide, c'est la derniere chose a finaliser et let's go ^^
    Lorka85 a joint une image
    G3131EB
  • ForexAutomatique

    Slt,

    La fonction "newBarFormed()" ne sert à rien du tout, en effet, la fonction "start" tourne en boucle quoi qu' il arrive.
    Ton problème a plusieurs solutions. Apparemment, tu ne veux pas utiliser la période actuelle car le signal reçu n' est pas certain. Déjà, il faut savoir ce qui t' intéresse dans la bougie précédente ? Si c' est le volume, tu peux utiliser la fonction iVolume qui fonctionne mieux que Volume.
    Ensuite, on peut trouver des astuces pour gagner un peu de temps et ne pas être obligé d' attendre la deuxième période, mais ça, ça dépend vraiment de ton code et de tes objectifs. Par exemple avec la fonction "Sleep" :
    <code>
    ret=Volume[0] < savedVolume;
    Sleep(60000);
    ret2=Volume[0] < savedVolume;
    savedVolume2 = Volume[0];
    if ( ret == ret2 )
    {...}
    </code>
  • furynick

    La fonction start tourne en boucle !!!
    Alors celle là on ne me l'avait jamais faite ... pardon d'avance mais qu'est-ce qu'il ne faut pas lire comme imbécilités (et je reste poli) !

    Pour ton information, puisque manifestement tu débutes en programmation et que tu n'as pas encore bien compris à quoi servait un EA et comment il fonctionne :
    1) la fonction start est lancée à chaque tick, si tu veux t'en convaincre tu peux faire un simple Print("start is active";); dans la fonction start et regarder dans les logs sur une paire peu volatile un vendredi soir vers 22h. Si la fonction start tournait en boucle tu remplirais ton disque dur vitesse grand V !
    2) la fonction newBarFormed() permet de détecter la formation d'une nouvelle barre, si tu ne comprends pas à quoi cela peut bien servir je t'invite à apprendre comment trader sur le forex, le site Forexagone devrait pouvoir t'aider.
    3) la variable prédéfinie Volumes est aussi fiable que la fonction iVolume et donne le même résultat plus rapidement (pas d'appel de fonction, pas de code superflu à exécuter, la donnée est stockée en mémoire), c'est aussi plus souple à utiliser si tu n'as pas besoin de faire un EA multipaire pour lequel il faudra impérativement utiliser la fonction iVolume

    Si tu as des questions sur le développement d'EA n'hésite pas à poser tes questions car ce n'est pas parce que tu ne comprends pas que ça ne sert à rien.

    Lorka, concernant ton problème, tu n'as pas besoin de modifier la fonction newBarFormed, ton problème n'est pas là. Quand tu obtiens le signal d'une nouvelle barre, tous les indicateurs doivent utiliser un shift de 1 (le dernier paramètre des fonctions iXxx) pour fournir les données de la dernière barre complète et un shift de 2 pour l'avant dernière barre. En effet, la barre en shift 0 venant juste d'être créée et pour laquelle il y aura une évolution tout au long de la période il y aura modification de sa valeur.
  • ForexAutomatique

    Oui, la fonction "start" tourne en boucle, à chaque tick effectivement, et je soutiens que par conséquent "newBarFormed() " n' a aucun intérêt. Tu fais exprès de mal interpréter ce que j' écris, pas grave si je suis un meilleur codeur que toi ! Pffffffff jamais vu un looser pareil...
  • furynick

    wahh, on a trouvé un meilleur codeur que moi ... allez-y demandez-lui de développer vos indics et EA, avec cette assurance vous aurez certainement des résultats et deviendrez vite très riches.

    Bref, pour ton information la fonction newBarFormed() sert à détecter la formation d'une nouvelle barre, pas d'un nouveau tick ... tu fais comment toi pour les prises de position à l'ouverture d'une barre ?
    vas-y, montre nous tes capacités sans pareil, je suis très curieux.
  • ForexAutomatique

    @ Lorka85
    Si tu supprimes "newBarFormed() ", les prises de position pourront se faire à chaque tick, et non uniquement lors de la création d' une nouvelle période. Tu as tout a y gagner.
    Ensuite, stp reviens sur le forum pour poster que en effet, mes conseils sont plus pertinents, ça calmera quelqu' un qui s' y croit un peu trop...
  • Lorka85

    Ou la, allons programmeurs, allons de l'avant et soyons constructif :)

    Je souhaite prendre position a une nouvelle barre (bougie) donc cette fonction m'est indispensable, sinon tu ouvre 50 positions par minutes a chaque tick, une fois j'ai carrément changer de compte demo car mon ea avait ouvert des milliers de positions ^^

    Furynick tu a trouver la bonne solution, merci, il suffisé de changer le shit, a la fin, j’ignorer sa fonction, gros gros merci:)

    Bon je vais lancé mes 2 EA sur PC portable 24/24, il prend donc position suivant le concordance des 2 timeframes (la barre du haut ne repeint pas car au timeframe du graph, celle du plus gros timeframe repeint forcement car une barre en H4 affiché sur du H1 vaut 4 barres.
    J'ai filtré les signaux avec un adx > a 20 et un CCI < ou > a 20 aussi, si vous avez des idées de filtre de range, hésitez pas :)

    J'ai réussi a faire un CCI sous forme de barre rouge/verte ou gold en range (si < ou > 20 , parametrable, vraiment sympa, je vous ferez partager toutes ces redoutables armes :) voici un screen de l'indicateur en attendant

    Lorka85 a joint une image
    G3140HB
  • Lorka85

    qui c'est qui a fait un jolie EA today, qui prend position quand le CCI 5 part dans la direction du CCI50 avec filtre adx50 ? c'est lolo bien sur :)

  • furynick

    on veut le code !
    on veut le code !
    on veut le code !
  • Lorka85

    Ca se présente comme ça, et ca prend un screenshot lors de la position pour preuve, ca ne repeint pas, ouverture a la bougie suivante, etc...
    pour le moment je considère pas l'ea comme fini car je decouvre des choses a corrigé, mais si tu veut je peu te donner ça par mail, le template, l'indicateur CCi sous forme de barre fait maison, + l'ea actuel :)
    Lorka85 a joint une image
    G3158EC
  • furynick

    Je prends volontiers, toutes les idées sont bonnes ;)
  • Brrtony (invité)

    Et nous :(
  • furynick

    T'en fais pas, je suis sûr que Lorka publiera son robot dès qu'il estimera qu'il est suffisamment opérationnel. Comme on l'a souvent dit et répété, la mise au point d'un EA est long et semé d'embuches.

    De plus, si c'est son 1er EA de A à Z Lorka va surement faire ses armes et bucher un peu avant de trouver les réponses ;)

    Courage.
  • NYKOES

    Oui je suis impatient de découvrir cela également ! Moi qui me met doucement au MQL, je compatis :) Bon courage pour la suite Lorka !!

  • Lorka85

    Fury je t'ai envoyer le CCI EA :)

    je vais tenter de faire un EA basé sur le fameux 1-2-3 pattern, qui se base sur l'indicateur zigzag, j'ai trouvé un code qui renvoie le dernier plus haut/bas du zig zag :
    http://forum.mql4.com/3930/page3 (le code de l'internaute arshadfx )

    qui devrais donner ce résultat au final : (voir screenshot)

    Que de projets ^^
    Lorka85 a joint une image
    G3169GB
  • Lorka85

    en gros dés que un nouveau plus haut est détecté via le zig zag (qui pourra repeindre pour aller encore plus haut) bien sur, l'ea foutra un ordre différé au dernier plus bas, et vis versa.

    j'aurais besoin de toi fury pour qu'il supprime les anciens order différé non percuté, enfin repose toi pour le week end :)
  • furynick

    Tu peux consulter mon robot FuRyXmabol qui travaille avec des ordres différés pour voir comment les positionner est les supprimer.
  • Lorka85

    ok merci fury :)

    tu a pu voir mon robot cci cross ? j'ai l'impression qu'il prend pas position aussi souvent qu'il le devrait d’après mes test de jeudi et vendredi, en tf m15 voir m30, mais en M1 c'est impec...

    rien ne te choque dans le code ?
  • Lorka85

    bon en gros j'ai fait 3 ea :
    un basé sur les HAS bar, une sur le CCI le plsu rapide doit etre dans le sens du plus long) et une basé sur 2 cross de moyenne mobiles, le cross le plus court doit aller dans le sens du plus long.

    Furynick tu pourrais en tester un pendant 1 semaine sur ton VPS ?

    et la j'ai peu etre trouvé une methode for sympa pour mon prochain ea : un stochastic dinapoli ou on ne prend ses signaux de croisement uniquiementd ans le sens de la tendance , représenté par un croisement d'EMA 10 / 144 .

    si vous avez une autre idée pour voir la tendance de fond precisement sans trop de faux signaux, hesitez pas !

    voici le screenshot : vous voyez 2 lignes horizontales en bas, la 1ere représente le sens des croisement du stochastic dinapoli, celle du bas, le cross EMA 14/144. quand 2 couleurs correspondent entre les 2 barres, paf, le chien :)



    Lorka85 a joint une image
    G3210BA
  • Lorka85

    résultat de mes ea apres 2 jorus seulement : pres de 400 $ de gains avec des lots de 0,2 seulement !


    ca me motive serieusement, et cela en full auto, il vise les 50 pips, avec un sl de 30 pips.
    quand les gains arrivent a +15 pips il rabat le SL a 15 pips, puis quand ca depasse les 26 pips, il rabat le sl au niveau de la position, donc apres sois j'ai 0$ sois +50 pis :)

    Alors, vous en voulez ou pas ?
    Lorka85 a joint une image
    G3245AD