Aide modification d'un indicateur

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

Modérateur : Administrateurs

Message
Auteur
kewin
Nouveau
Messages : 3
Inscription : 19 déc. 2011, 19:11

Aide modification d'un indicateur

#1 Message par kewin »

Bonjour,

Je souhaiterais de l'aide afin de modifier un indicateur Heiken Ashi.
J'ai réussi à m'insérer une alerte mail pour chaque changement de statut d'une bougie mais je me retrouve souvent spammé le temps que la bougie se décide définitivement.

Cette fois j'aimerais recevoir une alerte mail à la clôture de la bougie, si celle si est différente de l'ancienne.

Code : Tout sélectionner

//+------------------------------------------------------------------+
//|                                         Heiken Ashi Smoothed.mq4 |
//+------------------------------------------------------------------+
//|                                                      mod by Raff |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, forex-TSD.com "
#property link      "http://www.forex-tsd.com/"
#property link      "Alerts added by cja"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 RoyalBlue
#property indicator_color3 Red
#property indicator_color4 RoyalBlue
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 3
#property indicator_width4 3

//---- parameters
extern int MaMetod  = 2;
extern int MaPeriod = 6;
extern int MaMetod2  = 3;
extern int MaPeriod2 = 2;

extern bool POP_UP_Box_Alert = false;
extern bool Sound_Alert = false;
extern bool Mail_Alert = false;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];
//----
int ExtCountedBars=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//|------------------------------------------------------------------|
int init()
  {
//---- indicators
   IndicatorBuffers(8);

   SetIndexStyle(0,DRAW_HISTOGRAM, 0);
   SetIndexBuffer(0, ExtMapBuffer1);
   SetIndexStyle(1,DRAW_HISTOGRAM, 0);
   SetIndexBuffer(1, ExtMapBuffer2);
   SetIndexStyle(2,DRAW_HISTOGRAM, 0);
   SetIndexBuffer(2, ExtMapBuffer3);
   SetIndexStyle(3,DRAW_HISTOGRAM, 0);
   SetIndexBuffer(3, ExtMapBuffer4);
//----
   SetIndexDrawBegin(0,5);
//---- indicator buffers mapping
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexBuffer(3,ExtMapBuffer4);
   SetIndexBuffer(4,ExtMapBuffer5);
   SetIndexBuffer(5,ExtMapBuffer6);
   SetIndexBuffer(6,ExtMapBuffer7);
   SetIndexBuffer(7,ExtMapBuffer8);
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here
  return(0);
  }  
bool Crossed (double haOpen , double haClose )
{

static string last_direction = "";
string current_direction = "";

if(haOpen<=haClose) current_direction = "LONG";
if(haOpen>haClose) current_direction = "SHORT";



if(current_direction != last_direction) 
{
      if(POP_UP_Box_Alert==true)Alert ("H/Ashi Direction change "+current_direction+"  " ,Symbol()," ",Period()," @ ",Bid);
      if(Sound_Alert==true) PlaySound("alert2.wav");
      if(Mail_Alert==true)SendMail("Alerte Forex","H/Ashi Direction change "+current_direction+" "+Symbol()+" "+Period()+" "+" @ "+Bid); 
      last_direction = current_direction;
      return (true);
}
else
{
      return (false);

}
 
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   double maOpen, maClose, maLow, maHigh;
   double haOpen, haHigh, haLow, haClose;
   if(Bars<=10) return(0);
   ExtCountedBars=IndicatorCounted();
//---- check for possible errors
   if (ExtCountedBars<0) return(-1);
//---- last counted bar will be recounted
   if (ExtCountedBars>0) ExtCountedBars--;
   int pos=Bars-ExtCountedBars-1;
   while(pos>=0)
     {
      maOpen=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_OPEN,pos);
      maClose=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_CLOSE,pos);
      maLow=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_LOW,pos);
      maHigh=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_HIGH,pos);

      haOpen=(ExtMapBuffer5[pos+1]+ExtMapBuffer6[pos+1])/2;
      haClose=(maOpen+maHigh+maLow+maClose)/4;
      haHigh=MathMax(maHigh, MathMax(haOpen, haClose));
      haLow=MathMin(maLow, MathMin(haOpen, haClose));

      if (haOpen<haClose) 
        {
         ExtMapBuffer7[pos]=haLow;
         ExtMapBuffer8[pos]=haHigh;
        } 
      else
        {
         ExtMapBuffer7[pos]=haHigh;
         ExtMapBuffer8[pos]=haLow;
        } 
      ExtMapBuffer5[pos]=haOpen;
      ExtMapBuffer6[pos]=haClose;

 	   pos--;
     }

   int i;
   for(i=0; i<Bars; i++) ExtMapBuffer1[i]=iMAOnArray(ExtMapBuffer7,Bars,MaPeriod2,0,MaMetod2,i);
   for(i=0; i<Bars; i++) ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer8,Bars,MaPeriod2,0,MaMetod2,i);
   for(i=0; i<Bars; i++) ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer5,Bars,MaPeriod2,0,MaMetod2,i);
   for(i=0; i<Bars; i++) ExtMapBuffer4[i]=iMAOnArray(ExtMapBuffer6,Bars,MaPeriod2,0,MaMetod2,i);
   
  

     Print(Crossed (ExtMapBuffer1[0],ExtMapBuffer2[0]));
//----
   return(0);
  }
//+------------------------------------------------------------------+

Teal'C
Membre assidu
Messages : 314
Inscription : 10 mai 2011, 13:43

Re: Aide modification d'un indicateur

#2 Message par Teal'C »

Lien intéressant pour apprendre à programmer sous MQL4

http://www.trading-automatique.fr/MQL4/ ... -nuls.html

kewin
Nouveau
Messages : 3
Inscription : 19 déc. 2011, 19:11

Re: Aide modification d'un indicateur

#3 Message par kewin »

Merci pou le lien.

C'est effectivement sur ce support que je travail actuellement.Malheureusement il ne me semble pas avoir trouver la réponse pour le moment.

Sinon que me conseillez-vous par la suite pour continuer mon apprentissage ?

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

Re: Aide modification d'un indicateur

#4 Message par Fabien LABROUSSE »

Désolé je serais pas t'aider pour ton problème mais pour apprendre le mql rien de mieux que le site officiel en anglais que tu peux traduire en français avec google traduction ( mais tu l'avais peut-être déjà étudié?):

http://docs.mql4.com/
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...

📖 Marchés en aparté : Témoignages de traders, investisseurs, analystes et économistes sur les marchés financiers

Avatar de l’utilisateur
AUTOFOREX
Membre actif et régulier
Messages : 97
Inscription : 05 janv. 2012, 14:04

Re: Aide modification d'un indicateur

#5 Message par AUTOFOREX »

Effectivement le site mql4.com est une véritable mine d'or, pour le peu que l'on ne soit pas anglophobe ! :)
[url]http://www.autoforex.fr/[/url]
[img]http://www.autoforex.fr/wp-content/uploads/2013/10/logo-new-site-50percent.gif[/img]
[url=http://www.myfxbook.com/members/babs][img]http://widgets.myfxbook.com/widget?id=528537&type=2&color=red[/img][/url]
[url=http://www.myfxbook.com/members/babs][img]http://widgets.myfxbook.com/widget?id=698375&type=2&color=red[/img][/url]

kewin
Nouveau
Messages : 3
Inscription : 19 déc. 2011, 19:11

Re: Aide modification d'un indicateur

#6 Message par kewin »

(Re)Bonjour,

J'ai mis le temps mais je pense être sur la bonne piste.Faut dire que par manque de temps j'avais un peu lâché l'affaire. :mrgreen:
En fouillant un peu à droite et à gauche je suis tombé sur une fonction qui fait ce que je cherche :

Code : Tout sélectionner

bool isNewBar() {
if (NbBars < Bars) {
NbBars = Bars;
return (TRUE);
}
return (FALSE);
}
Je l'ai donc intégrer au code (rouge = rajout) :

if(isNewBar())
{

if(current_direction != last_direction)
{
if(POP_UP_Box_Alert==true)Alert ("H/Ashi Direction change "+current_direction+" " ,Symbol()," ",Period()," @ ",Bid);
if(Sound_Alert==true) PlaySound("alert2.wav");
if(Mail_Alert==true)SendMail("Alerte Forex","H/Ashi Direction change "+current_direction+" "+Symbol()+" "+Period()+" "+" @ "+Bid);
last_direction = current_direction;
return (true);
}
else
{
return (false);

}
}

Avatar de l’utilisateur
traders59
VideoBourse family
Messages : 1646
Inscription : 05 juin 2009, 14:52
Localisation : LILLE

Re: Aide modification d'un indicateur

#7 Message par traders59 »

Effectivement le site mql4.com est une véritable mine d'or, pour le peu que l'on ne soit pas anglophobe ! :)
LOL je te rejoins là :x

a quand une version francaise?

Répondre