Les indicateurs pour MT4

MT4 est certainement la plate-forme de trading pour le Forex (et les CFDs) la plus répandue, proposée par de nombreux courtiers forex notamment.

Personnellement, je l’utilise car j’aime sa simplicité d’utilisation et sa consommation légère des ressources de mon ordinateur.

De plus, il existe une multitudes d’indicateurs programmés que l’on peut trouver, plus ou moins facilement, sur le net.

Je vous propose donc de répertorier progressivement ici les indicateurs les plus intéressants que j’ai testé.

Tous ces indicateurs sont, à priori et à ma connaissance, libres de droit (si toutefois vous trouviez par hasard ici un indicateur qui vous appartienne, contactez moi au plus vite et je l’enlèverai aussitôt).

Les objectifs de cette rubrique sont:

– créer un catalogue d’indicateurs

– vous aider à trier ceux qui sont les plus utiles

Je ne suis pas un adepte des Expert Advisors (EA), sortes de “robots” programmés pour trader automatiquement. Je ne récuse pas cette approche du trading, mais je pense qu’avant de pouvoir modéliser une stratégie de trading, il faut déjà avant tout en maîtriser une. De plus, l’immense majorité des EA que l’on peut trouver sur internet ne fonctionnent que pendant une période de temps limitée avant de commencer à perdre. En effet, les marchés changent régulièrement… Bref, vous l’aurez compris, les EA sont pas ma tasse de thé ! En conséquence, vous n’en trouverez pas ici.

Comment installer un nouvel indicateur sur votre ordinateur ?

Les indicateurs MT4 possèdent l’extension .ex4 (version compilée, non modifiable) ou .mq4 (version décompilée, dont vous pourrez modifier le code grâce à l’éditeur fourni avec MT4).

Pour installer un nouvel indicateur, il suffit de:

– le télécharger (dans un des articles de ce blog par exemple…) exemple:l’indicateur

  BarTimer.mq4 (2,5 KiB, 2 275 hits)

– le copier dans le répertoire où vous avez installé MT4 sur votre ordinateur (en général dans /programmes/Meta Trader – nom de votre courtier/experts/indicators)

– lancer votre plate-forme MT4

– cliquer sur les onglets “insertion” puis “indicateurs” puis “personnalisés”: vous devriez alors voir votre nouvel indicateur

Voilà, ce n’est pas plus difficile que ça, et pas besoin de s’y connaître en programmation !

2 Commentaires

  1. Bonjour,

    Je me permets de vous contacter car je n’arrive pas, depuis des jours, à installer cet indicateur sur MT4.

    Il m’est impossible de relier cet indicateur à un graph et de le personnaliser.

    //+——————————————————————+
    //| OboTrading.mq4 |
    //| Christophe Sangouard |
    //| cs@o-bo.com http://www.o-bo.com |
    //+——————————————————————+

    #property copyright “Christophe Sangouard”
    #property link “http://www.o-bo.com”

    extern string rem1=”//—- Definition Trend et Breakout”;
    extern int BreakoutPeriode=1;
    extern int TrendPeriode=3;
    extern string rem2=”//—- Order”;
    extern int MaxTradesPerBar=1;
    extern int StopLoss=7;
    extern int BreakEven=7;
    extern int PartialTP1=55;
    extern int PartialRatio1=30;
    extern int PartialTP2=110;
    extern int PartialRatio2=70;
    extern int TakeProfit=150;
    extern int Slippage=3;
    extern string rem3=”//—- MM: 1.Fixed 2.Geometrical 3.Proportional 4.Smart 5.TSSF”;
    extern int MMType=3;
    extern double FixedLots=0.1;
    extern int GeometricalFactor=3;
    extern int ProportionalRisk=90;
    extern int LastXTrades=10;
    extern double DecreaseFactor=2;
    extern double TSSFTrigger1=1;
    extern int TSSFRatio1=50;
    extern double TSSFTrigger2=2;
    extern int TSSFRatio2=75;
    extern double TSSFTrigger3=3;
    extern int TSSFRatio3=100;
    extern string rem4=”//—- Debug”;
    extern bool DebugMode=false;

    int Magic=12387;
    double Lots;
    bool SignalBuy=false;
    bool SignalSell=false;
    double highrange, lowrange;
    double trend, trend1, signaltrend;
    datetime LastTradeTime=0;
    int MaxTrades=false;
    int FlagPartial=0;
    int OrdersThisBar;
    int orders;
    int losses;

    int tradegagnant,tradeperdant;
    double profit, perte, avgwin, avgloss, prcwin, tssf;

    bool TradingRange;

    //+——————————————————————+
    //| expert initialization function |
    //+——————————————————————+
    int init()
    {
    //—-

    //—-
    return(0);
    }
    //+——————————————————————+
    //| expert deinitialization function |
    //+——————————————————————+
    int deinit()
    {
    //—-

    //—-
    return(0);
    }
    //+——————————————————————+
    //| expert start function |
    //+——————————————————————+
    int start()
    {
    //—-

    if (OrdersTotal()>0) OrdersList();
    if (OrdersTotal()=MaxTradesPerBar)
    {MaxTrades=true;}
    else
    {MaxTrades=false;}
    if (Time[0]!=LastTradeTime)
    {OrdersThisBar=0;}

    if (Close[0]==High[0]&&Close[0]>highrange&&signaltrend>0&&OrdersTotal()<1&&MaxTrades==false) SignalBuy=true;
    if (Close[0]==Low[0]&&Close[0]<lowrange&&signaltrend<0&&OrdersTotal()<1&&MaxTrades==false) SignalSell=true;

    //+——————————————————————+
    //| Money Management |
    //+——————————————————————+

    if (SignalBuy==true||SignalSell==true)
    {
    if (MMType==1&&OrdersTotal()<1)Lots=FixedLots;
    if (MMType==2&&OrdersTotal()<1)Lots=0.1*MathSqrt(AccountBalance()/1000)*GeometricalFactor;
    if (MMType==3&&OrdersTotal()<1)Lots=AccountEquity()/Close[0]/1000*ProportionalRisk/100;

    if (MMType==4&&OrdersTotal()=orders-LastXTrades;i–)
    {
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==False)
    {
    Print(“Erreur dans l historique!”);
    break;
    }
    if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)
    continue;
    //—-
    if(OrderProfit()>0)
    break;
    if(OrderProfit()1)
    Lots=NormalizeDouble(Lots-Lots*losses/DecreaseFactor,1);
    }

    if (MMType==5&&OrdersTotal()=orders-LastXTrades;j–)
    {
    if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)==False)
    {
    Print(“Erreur dans l historique!”);
    break;
    }

    if(OrderProfit()>=0)
    {
    tradegagnant++;
    profit=profit+OrderProfit();
    }
    else
    {
    tradeperdant++;
    perte=perte+OrderProfit();
    }

    }
    if (orders>LastXTrades)avgwin=profit/tradegagnant;
    if (orders>LastXTrades)avgloss=perte/tradeperdant;
    if (orders>LastXTrades)prcwin=tradegagnant/(tradegagnant+tradeperdant);
    if (orders>LastXTrades)tssf=avgwin/avgloss*((1.1-prcwin)/(prcwin-0.1)+1);

    if(tssfTSSFTrigger1&&tssfTSSFTrigger2&&tssfTSSFTrigger3)Lots=NormalizeDouble(AccountFreeMargin()*ProportionalRisk/TSSFRatio3*100/100000,1);
    }

    if(Lots<0.1)Lots=0.1;
    }

    //+——————————————————————+
    //| Passage des ordres |
    //+——————————————————————+

    if (SignalBuy==true)
    {
    OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-StopLoss*Point,Ask+TakeProfit*Point,"MindFulNess",Magic,Blue);
    SignalBuy=false;
    LastTradeTime=Time[0];
    OrdersThisBar++;
    }
    if (SignalSell==true)
    {
    OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+StopLoss*Point,Bid-TakeProfit*Point,"MindFulNess",Magic,Red);
    SignalSell=false;
    LastTradeTime=Time[0];
    OrdersThisBar++;
    }

    if (DebugMode==true)
    {
    Comment (
    "OboTrading, @2009 Christophe Sangouard",
    "\nStopLoss="+StopLoss*Point,
    "\nStopLevel="+DoubleToStr(MarketInfo(Symbol(), MODE_STOPLEVEL),0),
    "\nSpread= "+DoubleToStr(MarketInfo(Symbol(),MODE_SPREAD),0),
    "\nLastError="+GetLastError()
    );
    }

    //—-
    return(0);
    }
    //+——————————————————————+

    //+——————————————————————+
    //| expert deinitialization function |
    //+——————————————————————+

    void OrdersList()
    {
    for (int cnt=0;cntPoint*BreakEven&&OrderStopLoss()!=OrderOpenPrice())
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,LightGreen);
    return(0);
    }
    //—- PartialTP1
    if (Bid-OrderOpenPrice()>Point*PartialTP1&&FlagPartial==0&&PartialTP1>0&&OrderLots()*PartialRatio1*PartialRatio2/10000>=0.1)
    {
    OrderClose(OrderTicket(),OrderLots()*PartialRatio1/100,Bid,Slippage,Red);
    FlagPartial=1;
    return(0);
    }
    //—- PartialTP2
    if (Bid-OrderOpenPrice()>Point*PartialTP2&&FlagPartial==1&&PartialTP2>0)
    {
    OrderClose(OrderTicket(),OrderLots()*PartialRatio2/100,Bid,Slippage,Red);
    FlagPartial=2;
    return(0);
    }
    }
    if (OrderType()==OP_SELL)
    {
    //—- BreakEven
    if (OrderOpenPrice()-Ask>Point*BreakEven&&OrderStopLoss()!=OrderOpenPrice())
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Yellow);
    return(0);
    }
    //—- PartialTP1
    if (OrderOpenPrice()-Ask>Point*PartialTP1&&FlagPartial==0&&PartialTP1>0&&OrderLots()*PartialRatio1*PartialRatio2/10000>=0.1)
    {
    OrderClose(OrderTicket(),OrderLots()*PartialRatio1/100,Ask,Slippage,Red);
    FlagPartial=1;
    return(0);
    }
    //—- PartialTP2
    if (OrderOpenPrice()-Ask>Point*PartialTP2&&FlagPartial==1&&PartialTP2>0)
    {
    OrderClose(OrderTicket(),OrderLots()*PartialRatio2/100,Ask,Slippage,Red);
    FlagPartial=2;
    return(0);
    }
    }
    }
    }
    }

    Pourriez-vous avoir la gentillesse de me dire ce qui cloche car là, je suis dépassée…

    Merci infiniment par avance.

    Cordialement.

    Laurence.

    1. Bonjour !
      Je ne suis pas très porté sur la programmation d’indicateurs (le trading automatisé est un domaine que j’observe de loin…), mais je pense que le problème vient du fait qu’il ne semble pas s’agir d’un INDICATEUR mais d’un EXPERT.
      Il faut donc le placer dans le répertoire /votre répertoire MT4/experts et non pas dans le sous répertoire /indicators
      Ensuite, pour l’attacher au graphique, il suffit de cliquer dessus (dans la fenêtre navigateur de MT4, dans “expert consultant”.
      Pour l’activer, il faut cliquer sur l’onglet (en haut de la fenêtre générale de MT4) “Expert advisors” (qui par défaut est stoppé, avec un symbole rouge, qui changera en symbole vert de “lecture” quand il est activé).
      Je vous recommande très vivement de ne l’utiliser que sur un compte démo, car il peut passer des ordres.
      Si cela ne fonctionnait pas ainsi, je regarderai de plus près.
      Bon courage ! (et méfiez vous des experts miracles qui font gagner de l’argent sans rien faire, si c’était aussi simple…. :o)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.