Expert Advisor Builder probleme

Présentation, Développement, Améliorations et Ressources pour les Stratégies de Trading Automatique.

Modérateur : Administrateurs

Message
Auteur
Lfo
Nouveau
Messages : 7
Inscription : 09 févr. 2013, 15:17

Expert Advisor Builder probleme

#1 Message par Lfo »

Coucou tout le monde,

Voilà je me suis inscrite car je désespère au niveau de la création de mon EA via Expert Advisor Builder et j'aurais besoin de votre aide.
Mon EA doit pouvoir analyser un plus haut et un plus bas sur une tranche horaire précise , seulement je ne trouve rien en rapport avec le temps dans Expert Advisor Builder, quelqu'un a une idée ? :cry:


Je vous remercie

Avatar de l’utilisateur
Fabien LABROUSSE
Administrateur
Messages : 16964
Inscription : 17 mars 2008, 19:41
Localisation : Paris, France

Re: Expert Advisor Builder probleme

#2 Message par Fabien LABROUSSE »

Tu peux choisir sur quelle timeframe tu veux voir ton EA exécuté.

Aussi, si tu veux avoir le plus haut de l'heure dernière, tu choisis le timeframe H1 avec shift 1 et tu demande le high.

Si tu n'y parviens pas je vais te montrer la démarche plus en détail.
Image

La Structure (par VideoBourse) : Formation sur mesure et évolutive pour optimiser compréhension et résultats en trading

📈 Informations et inscriptions : https://forms.gle/A2vnZduSwv2wPFSS7

🤝 Contact et échanges avec la communauté : Discord, mail, téléphone, LinkedIn...

Lfo
Nouveau
Messages : 7
Inscription : 09 févr. 2013, 15:17

Re: Expert Advisor Builder probleme

#3 Message par Lfo »

Coucou Fabien et je te remercie d'avoir répondu si rapidement.
J'ai déjà essayé en indiquant les timeframes, mais ça correspond pas à ma stratégie en fait :( qui est celle du Breakout londonien que tu dois surement connaître.
Si j'indique la timeframe, il va m'analyser par exemple le plus haut et le plus bas de chaque heure et prendre toutes les cassures, alors que moi je ne prend que la cassure du breakout à l'ouverture des marchés londoniens

Lfo
Nouveau
Messages : 7
Inscription : 09 févr. 2013, 15:17

Re: Expert Advisor Builder probleme

#4 Message par Lfo »

Re !

J'ai une idée mais je ne sais pas si ça peut marcher, j'ai lu que iCustom servait à inclure un indicateur.
J'ai un indicateur de breakout, qui délimite une zone par une boîte, est-ce possible de dire: quand le plus haut de la boîte est cassé tra la la, et inversement pour le plus bas?


Image


Et voici le code de l'indicateur

Code : Tout sélectionner

//+------------------------------------------------------------------+
//|                                               BreakOutPANCA-EAGLE.mq4 |
//|                                                        hapalkos  |
//|                                                       2007.11.20 |
//|   ++ modified so that rectangles do not overlay                  |
//|   ++ this makes color selection more versatile                   |
//|   ++ code consolidated                                           |
//+------------------------------------------------------------------+
#property copyright "hapalkos"
#property link      ""

#property indicator_chart_window
 
extern int    NumberOfDays = 50;        
extern string periodBegin    = "00:00"; 
extern string periodEnd      = "05:30";   
extern string BoxEnd         = "23:00"; 
extern int    BoxBreakOut_Offset = 10; 
extern color  BoxHLColor         = MidnightBlue; 
extern color  BoxBreakOutColor   = LimeGreen;
extern color  BoxPeriodColor     = OrangeRed;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() {
  DeleteObjects();
}

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit() {
  DeleteObjects();
return(0);
}

//+------------------------------------------------------------------+
//| Remove all Rectangles                                            |
//+------------------------------------------------------------------+
void DeleteObjects() {
    ObjectsDeleteAll(0,OBJ_RECTANGLE);     
 return(0); 
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start() {
  datetime dtTradeDate=TimeCurrent();

  for (int i=0; i<NumberOfDays; i++) {
  
    DrawObjects(dtTradeDate, "BoxHL  " + TimeToStr(dtTradeDate,TIME_DATE), periodBegin, periodEnd, BoxEnd, BoxHLColor, 0, 1);
    DrawObjects(dtTradeDate, "BoxBreakOut_High  " + TimeToStr(dtTradeDate,TIME_DATE), periodBegin, periodEnd, BoxEnd, BoxBreakOutColor, BoxBreakOut_Offset,2);
    DrawObjects(dtTradeDate, "BoxBreakOut_Low  " + TimeToStr(dtTradeDate,TIME_DATE), periodBegin, periodEnd, BoxEnd, BoxBreakOutColor, BoxBreakOut_Offset,3);
    DrawObjects(dtTradeDate, "BoxPeriod  " + TimeToStr(dtTradeDate,TIME_DATE), periodBegin, periodEnd, periodEnd, BoxPeriodColor, BoxBreakOut_Offset,4);

    dtTradeDate=decrementTradeDate(dtTradeDate);
    while (TimeDayOfWeek(dtTradeDate) > 5) dtTradeDate = decrementTradeDate(dtTradeDate);
  }
}

//+------------------------------------------------------------------+
//| Create Rectangles                                                |
//+------------------------------------------------------------------+

void DrawObjects(datetime dtTradeDate, string sObjName, string sTimeBegin, string sTimeEnd, string sTimeObjEnd, color cObjColor, int iOffSet, int iForm) {
  datetime dtTimeBegin, dtTimeEnd, dtTimeObjEnd;
  double   dPriceHigh,  dPriceLow;
  int      iBarBegin,   iBarEnd;

  dtTimeBegin = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeBegin);
  dtTimeEnd = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeEnd);
  dtTimeObjEnd = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeObjEnd);
      
  iBarBegin = iBarShift(NULL, 0, dtTimeBegin);
  iBarEnd = iBarShift(NULL, 0, dtTimeEnd);
  dPriceHigh = High[Highest(NULL, 0, MODE_HIGH, iBarBegin-iBarEnd, iBarEnd)];
  dPriceLow = Low [Lowest (NULL, 0, MODE_LOW , iBarBegin-iBarEnd, iBarEnd)];
 
  ObjectCreate(sObjName, OBJ_RECTANGLE, 0, 0, 0, 0, 0);
  
  ObjectSet(sObjName, OBJPROP_TIME1 , dtTimeBegin);
  ObjectSet(sObjName, OBJPROP_TIME2 , dtTimeObjEnd);
  
//---- High-Low Rectangle
   if(iForm==1){  
      ObjectSet(sObjName, OBJPROP_PRICE1, dPriceHigh);  
      ObjectSet(sObjName, OBJPROP_PRICE2, dPriceLow);
      ObjectSet(sObjName, OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet(sObjName, OBJPROP_COLOR, cObjColor);
      ObjectSet(sObjName, OBJPROP_BACK, True);
   }
   
//---- Upper Rectangle
  if(iForm==2){
      ObjectSet(sObjName, OBJPROP_PRICE1, dPriceHigh);
      ObjectSet(sObjName, OBJPROP_PRICE2, dPriceHigh + iOffSet*Point);
      ObjectSet(sObjName, OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet(sObjName, OBJPROP_COLOR, cObjColor);
      ObjectSet(sObjName, OBJPROP_BACK, True);
   }
 
 //---- Lower Rectangle 
  if(iForm==3){
      ObjectSet(sObjName, OBJPROP_PRICE1, dPriceLow - iOffSet*Point);
      ObjectSet(sObjName, OBJPROP_PRICE2, dPriceLow);
      ObjectSet(sObjName, OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet(sObjName, OBJPROP_COLOR, cObjColor);
      ObjectSet(sObjName, OBJPROP_BACK, True);
   }

//---- Period Rectangle
  if(iForm==4){
      ObjectSet(sObjName, OBJPROP_PRICE1, dPriceHigh + iOffSet*Point);
      ObjectSet(sObjName, OBJPROP_PRICE2, dPriceLow - iOffSet*Point);
      ObjectSet(sObjName, OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet(sObjName, OBJPROP_COLOR, cObjColor);
      ObjectSet(sObjName, OBJPROP_WIDTH, 2);
      ObjectSet(sObjName, OBJPROP_BACK, False);
   }   
      string sObjDesc = StringConcatenate("High: ",dPriceHigh,"  Low: ", dPriceLow, " OffSet: ",iOffSet);  
      ObjectSetText(sObjName, sObjDesc,10,"Times New Roman",Black);
}

//+------------------------------------------------------------------+
//| Decrement Date to draw objects in the past                       |
//+------------------------------------------------------------------+

datetime decrementTradeDate (datetime dtTimeDate) {
   int iTimeYear=TimeYear(dtTimeDate);
   int iTimeMonth=TimeMonth(dtTimeDate);
   int iTimeDay=TimeDay(dtTimeDate);
   int iTimeHour=TimeHour(dtTimeDate);
   int iTimeMinute=TimeMinute(dtTimeDate);

   iTimeDay--;
   if (iTimeDay==0) {
     iTimeMonth--;
     if (iTimeMonth==0) {
       iTimeYear--;
       iTimeMonth=12;
     }
    
     // Thirty days hath September...  
     if (iTimeMonth==4 || iTimeMonth==6 || iTimeMonth==9 || iTimeMonth==11) iTimeDay=30;
     // ...all the rest have thirty-one...
     if (iTimeMonth==1 || iTimeMonth==3 || iTimeMonth==5 || iTimeMonth==7 || iTimeMonth==8 || iTimeMonth==10 || iTimeMonth==12) iTimeDay=31;
     // ...except...
     if (iTimeMonth==2) if (MathMod(iTimeYear, 4)==0) iTimeDay=29; else iTimeDay=28;
   }
  return(StrToTime(iTimeYear + "." + iTimeMonth + "." + iTimeDay + " " + iTimeHour + ":" + iTimeMinute));
}

//+------------------------------------------------------------------+

Avatar de l’utilisateur
Fabien LABROUSSE
Administrateur
Messages : 16964
Inscription : 17 mars 2008, 19:41
Localisation : Paris, France

Re: Expert Advisor Builder probleme

#5 Message par Fabien LABROUSSE »

Je n'ai jamais su me servir de iCustom, mais effectivement, ça sert à utiliser un indicateur personnaliser apparemment.
Lfo a écrit :J'ai déjà essayé en indiquant les timeframes, mais ça correspond pas à ma stratégie en fait qui est celle du Breakout londonien que tu dois surement connaître.
Si j'indique la timeframe, il va m'analyser par exemple le plus haut et le plus bas de chaque heure et prendre toutes les cassures, alors que moi je ne prend que la cassure du breakout à l'ouverture des marchés londoniens
Ok, je vois. Mais si cela marche pour toutes les heures, tu peux me l'envoyer et j'y ajouter une fonction de filtre horaire, c'est très facile à mettre en place.
Image

La Structure (par VideoBourse) : Formation sur mesure et évolutive pour optimiser compréhension et résultats en trading

📈 Informations et inscriptions : https://forms.gle/A2vnZduSwv2wPFSS7

🤝 Contact et échanges avec la communauté : Discord, mail, téléphone, LinkedIn...

anthony
Membre actif et régulier
Messages : 53
Inscription : 10 août 2012, 23:08

Re: Expert Advisor Builder probleme

#6 Message par anthony »

Lfo a écrit :Re !

J'ai une idée mais je ne sais pas si ça peut marcher, j'ai lu que iCustom servait à inclure un indicateur.
J'ai un indicateur de breakout, qui délimite une zone par une boîte, est-ce possible de dire: quand le plus haut de la boîte est cassé tra la la, et inversement pour le plus bas?


[/code]
bien sure

Répondre