insérer un indicateur personnel dans un expert advisor

 

Bonjour,


je suis relativement nouveau sur la création de robot (je code en VBA d'habitude :D) et je cherche à savoir comment intégrer un indicateur personnel dans un expert advisor.


Je trouve l'indicateur swing_line extrêmement sympathique et j'aimerais coder un robot autours de celui-ci. Dans un premier temps, par exemple, placer un buy lorsque le colorbuffer est = à 0 et un sell lorsque le colorbuffer est égale à 1... 


mon problème c'est que je ne sais pas comment intégrer le fichier swing_line.mq5 dans mon expert.


quelqu'un peut-il m'expliquer ou me rediriger vers un article qui explique comment faire ?


au besoin, voici le code de l'indicateur ci dessous (il ne m'appartient pas, il est en téléchargement gratuit sur le site) 


merci déjà


//------------------------------------------------------------------
#property copyright "www.forex-tsd.com"
#property link      "www.forex-tsd.com"
//------------------------------------------------------------------
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   1
#property indicator_label1  "Swing line"
#property indicator_type1   DRAW_COLOR_LINE
#property indicator_color1  clrLimeGreen,clrPaleVioletRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  3

//
//
//
//
//

double swli[];
double colorBuffer[];

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//
//
//
//

int OnInit()
{
   SetIndexBuffer(0,swli,INDICATOR_DATA); 
   SetIndexBuffer(1,colorBuffer,INDICATOR_COLOR_INDEX); 
   return(0);
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//
//
//
//


double  work[][5];
#define hHi   0
#define hLo   1
#define lHi   2
#define lLo   3
#define trend 4


int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
{

   //
   //
   //
   //
   //

   if (ArrayRange(work,0)!=rates_total) ArrayResize(work,rates_total);
      for (int i=(int)MathMax(prev_calculated-1,0); i<rates_total; i++)
      {
         if (i==0)
         {
            work[i][hHi]   = high[i]; work[i][hLo] = low[i];
            work[i][lHi]   = high[i]; work[i][lLo] = low[i];
            work[i][trend] = -1;
            continue; 
         }
      
         //
         //
         //
         //
         //
      
         work[i][trend] = work[i-1][trend];
         work[i][hHi]   = work[i-1][hHi]; work[i][hLo] = work[i-1][hLo];
         work[i][lHi]   = work[i-1][lHi]; work[i][lLo] = work[i-1][lLo];
 
               if (work[i-1][trend] == 1)
               {
                  work[i][hHi] = MathMax(work[i-1][hHi],high[i]);
                  work[i][hLo] = MathMax(work[i-1][hLo],low[i]);
                     if (high[i]<work[i][hLo]) { work[i][trend] = -1; work[i][lHi] = high[i]; work[i][lLo] = low[i]; }
               }
               if (work[i-1][trend] == -1)
               {
                  work[i][lHi] = MathMin(work[i-1][lHi],high[i]);
                  work[i][lLo] = MathMin(work[i-1][lLo],low[i]);
                     if (low[i]>work[i][lHi]) { work[i][trend] =  1; work[i][hHi] = high[i]; work[i][hLo] = low[i]; }
               }

         if (work[i][trend]==1)      
               swli[i] = work[i][hLo];
         else  swli[i] = work[i][lHi];
               colorBuffer[i] = colorBuffer[i-1];
               if (work[i][trend]== 1) colorBuffer[i]= 0;
               if (work[i][trend]==-1) colorBuffer[i]= 1;
   }
   return(rates_total);
}
 

Bonjour,

Voici deux articles très basiques :

Essayez de commencer par eux
Indicateurs personnalisés dans MQL5 pour débutants
  • www.mql5.com
Tout nouveau sujet semble compliqué et difficile à apprendre pour un débutant. Les sujets que nous connaissons nous semblent très simples et clairs. Mais nous oublions simplement que nous avons tous dû étudier quelque chose à partir de zéro, et même notre langue maternelle. Il en va de même avec le langage de programmation MQL5 qui offre de larges possibilités de développer ses propres stratégies de trading - vous pouvez commencer à l'apprendre à partir de notions de base et d'exemples les plus simples. L'interaction d'un indicateur technique avec le terminal client MetaTrader 5 est envisagée dans cet article sur l'exemple de l'indicateur personnalisé simple SMA.
 
Alexey Petrov #:

Bonjour,

Voici deux articles très basiques :

Essayez de commencer par eux
Jen vais regarder à cet article, merci déjà :)
 
Perso je te conseille de passer par un codeur expert.
si besoin, hésites pas (non je suis pas codeur, mais je bosse avec un).

Et bons trades !!!!