Discussion de l'article "Apprendre à concevoir un système de trading basé sur les Fractales"

 

Un nouvel article Apprendre à concevoir un système de trading basé sur les Fractales a été publié :

Voici un nouvel article de notre série sur la façon de concevoir un système de trading basé sur les indicateurs techniques les plus populaires. Nous apprendrons un nouvel indicateur, l'indicateur Fractals, et nous apprendrons comment concevoir un système de trading basé sur celui-ci pour être exécuté dans le terminal MetaTrader 5.

1. Hauts et Bas des Fractales

    Sur la base de cette stratégie, nous devons créer un système de trading qui peut être utilisé pour renvoyer les hauts et les bas de l'indicateur Fractals sous forme de commentaire sur le graphique en vérifiant en permanence la valeur de fracUp et de fracDown. Si fracUp est supérieur à 0 ou s'il n'a pas de valeur vide et que fracDown a une valeur vide, le système de trading doit renvoyer un signal sur le graphique sous forme de commentaire avec la valeur suivante :

      • Fractales Haut autour de : n

    Dans l'autre cas, si fracDown est supérieur à 0 ou s'il n'a pas de valeur vide et que fracUp a une valeur vide, le système de trading doit renvoyer un signal sur le graphique sous forme de commentaire avec la valeur suivante :

      • Fractales Bas autour de : n

    Voici le plan de cette stratégie :

    Plan des hauts et des bas des fractales

    Auteur : Mohamed Abdelmaaboud

     


    Merci à l'auteur. Tout est très bien expliqué dans les articles. Moi-même je n'exclus pas - que le code sur les signaux fractals et Ma prendra pour le compléter avec quelque chose d'autre - par exemple, la vitesse des ticks pour son stock scalper robot. Et sur les ticks on peut tout faire du tout - et peut-être sur m1. On peut aussi a la moyenne purement sur les rebonds des fractales et chaluter sur les premiers ts là aussi quelque chose à finir. En général, je respecte l'auteur pour ses articles utiles sur ces sujets !
     

    Veuillez répondre aux questions.

    1. Pourquoi utilisez-vous la valeur de la Fractale sur la 2ème barre fermée ? Elle n'est pas encore formée. Je pense que vous devriez utiliser la valeur de la 3ème barre fermée :

       CopyBuffer(fracDef,UPPER_LINE,3,1,fracUpArray);
       CopyBuffer(fracDef,LOWER_LINE,3,1,fracDownArray);

    2. Pourquoi appelez-vous cela des systèmes de trading ? Ils ne font pas de transactions. Ils ne font que commenter le graphique.

     
    Ivan Titov Fractale sur la 2ème barre fermée ? Elle n'est pas encore formée. Je pense que vous devriez utiliser la valeur de la 3ème barre fermée :

    2. Pourquoi appelez-vous cela des systèmes de trading ? Ils ne font pas de transactions. Ils ne font que des commentaires sur le graphique.

    La bougie actuelle est 0, la précédente est 1, et la troisième est 2 et non 3.

    Les systèmes de trading tels qu'ils sont programmés se basent sur des étapes systématiques et logiques pour vous aider à trader même s'il s'agit de commentaires, vous pouvez ajouter des ordres d'envoi si vous les avez testés et trouvés utiles pour vous.

     
    Mohamed Abdelmaaboud #:

    La bougie actuelle est 0, la précédente est 1, et la troisième est 2 et non 3.

    La bougie actuelle (0) n'est pas encore fermée, et son utilisation pourrait donner lieu à de nombreuses fausses entrées, en particulier lorsqu'elle vient de s'ouvrir.

     

    Servus, je me suis permis d'implémenter ton exemple "Fractals_with_Alligator" dans les fonctions prévues à cet effet (déclaration/définition). Merci de me corriger si je metrompe😊

    //creating arrays
    double   fracUpArray[];
    double   fracDownArray[];
    MqlRates priceArray[];
    double   jawsArray[];
    double   teethArray[];
    double   lipsArray[];
    // init
    int      fracDef;
    int      Data;
    int      alligatorDef;
    //get values
    double   fracUpValue;
    double   fracDownValue;
    double   closingPrice;
    double   jawsValue;
    double   teethValue;
    double   lipsValue;
    //création de variables bool pour acheter et vendre des signaux aviod en même temps
    bool     isBuy;
    bool     isSell;
    
    int OnInit() {
    //création de variables bool pour acheter et vendre des signaux aviod en même temps
       isBuy    = false;
       isSell   = false;
    
       ArraySetAsSeries(fracUpArray, true);
       ArraySetAsSeries(fracDownArray, true);
       ArraySetAsSeries(jawsArray, true);
       ArraySetAsSeries(teethArray, true);
       ArraySetAsSeries(lipsArray, true);
    
       fracDef        =  iFractals(_Symbol, _Period);
       Data           =  CopyRates(_Symbol, _Period, 0, 3, priceArray);
       alligatorDef   =  iAlligator(_Symbol, _Period, 13, 8, 8, 5, 5, 3, MODE_SMMA,PRICE_MEDIAN);
    
    
       return(INIT_SUCCEEDED);
    }
    
    void OnTick() {
    
       CopyBuffer(fracDef, UPPER_LINE, 2, 1, fracUpArray);
       CopyBuffer(fracDef, LOWER_LINE, 2, 1, fracDownArray);
       CopyBuffer(alligatorDef, 0, 0, 3, jawsArray);
       CopyBuffer(alligatorDef, 1, 0, 3, teethArray);
       CopyBuffer(alligatorDef, 2, 0, 3, lipsArray);
    
    //get values
       fracUpValue    = NormalizeDouble(fracUpArray[0], 5);
       fracDownValue  = NormalizeDouble(fracDownArray[0], 5);
       closingPrice   = priceArray[0].close;
       jawsValue      = NormalizeDouble(jawsArray[0], 5);
       teethValue     = NormalizeDouble(teethArray[0], 5);
       lipsValue      = NormalizeDouble(lipsArray[0], 5);
    
    //conditions de la stratégie et commentaire sur le graphique
    //en cas d'achat
       if(lipsValue>teethValue && lipsValue > jawsValue && teethValue > jawsValue
          && closingPrice > teethValue && fracDownValue != EMPTY_VALUE) {
          Comment("Buy", "\n",
                  "jawsValue = ", jawsValue, "\n",
                  "teethValue = ", teethValue, "\n",
                  "lipsValue = ", lipsValue, "\n",
                  "Fractals Low around: ", fracDownValue);
          isBuy = true;
       } // end if
    //in case of sell
       if(lipsValue < teethValue && lipsValue < jawsValue && teethValue < jawsValue
          && closingPrice < teethValue && fracUpValue != EMPTY_VALUE) {
          Comment("Sell", "\n",
                  "jawsValue = ", jawsValue, "\n",
                  "teethValue = ", teethValue, "\n",
                  "lipsValue = ", lipsValue, "\n",
                  "Fractals High around: ", fracUpValue);
          isSell = true;
       } // end if
    }
    
    void OnDeinit(const int reason) {
       EventKillTimer();
       ObjectsDeleteAll(0,0,-1);
    
       IndicatorRelease(fracDef);
       IndicatorRelease(Data);
       IndicatorRelease(alligatorDef);
       
       ArrayFree(fracUpArray);
       ArrayFree(fracDownArray);
       ArrayFree(jawsArray);
       ArrayFree(teethArray);
       ArrayFree(lipsArray);
    
       Comment("");
    }
     

    Bonjour, merci pour cet article si clair... j'obtiens une erreur dans mon code fractal (2024.11.10 17:42:12.121 _24 Dev 3 EA Strat1 (EURUSD,H1) _24 Dev 3 EA Strat1.mq5:void OnDeinit(const int):OnDeinit:48 Error Code:INDICATOR_DATA_NOT_FOUND ) .

    Lorsque j'exécute votre code, j'obtiens la même erreur.


    Pouvez-vous m'aider ? J'ai essayé de nombreuses combinaisons différentes.


    Merci de votre aide.

    Jay