Aide au codage - page 110

 

Bonjour,

J'ai besoin de deux indicateurs, l'un est le wpr(Williams' Percent Range) et son ma (wpr avec ma), l'autre est le cmo (chande momentum osc.).

et son ma (cmo avec ma),

Quelqu'un peut-il m'aider ?

Merci

 
anonimm:
Salut,

j'ai besoin de deux indicateurs, l'un est le wpr(Williams' Percent Range) et son ma (wpr avec ma), l'autre est le cmo (chande momentum osc.)

et son ma (cmo avec ma),

quelqu'un peut-il m'aider ?

Merci

anonimm

Voici un WPR avec une moyenne (ma)

Dossiers :
wpr_ma.mq4  2 kb
 
mladen:
anonimm Voici un WPR avec une moyenne (ma)

Merci Mladen,

J'essaie d'utiliser l'indicateur cmo's ma mais j'obtiens une erreur (fonction iCMO non définie)... pouvez-vous m'aider ?

//---- paramètres de l'indicateur

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Silver

#property indicator_color2 Red

#property indicator_width1 2

#property indicator_width2 2

//---- paramètres de l'indicateur

extern int CMO_Period=21 ;

extern int MA_Period=14 ;

extern string m = "--Moving Average Types--" ;

extern string m0 = " 0 = SMA" ;

extern string m1 = " 1 = EMA" ;

extern string m2 = " 2 = SMMA" ;

extern string m3 = " 3 = LWMA" ;

extern int MA_Type=1 ;

//---- tampons d'indicateurs

double CMO_Buffer[] ;

double MA_Buffer[] ;

double iCMO[] ;

int MA_Mode ;

string strMAType ;

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

//| Fonction d'initialisation de l'indicateur personnalisé |

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

int init()

{

//---- paramètres de dessin

SetIndexStyle(0,DRAW_LINE) ;

SetIndexStyle(1,DRAW_LINE) ;

SetIndexDrawBegin(1,CMO_Period) ;

IndicatorDigits(Digits+1) ;

//---- mappage des tampons d'indicateurs

SetIndexBuffer(0,CMO_Buffer) ;

SetIndexBuffer(1,MA_Buffer) ;

//---- nom de la DataWindow et étiquette de la sous-fenêtre de l'indicateur

switch (MA_Type)

{

cas 1 : strMAType="EMA" ; MA_Mode=MODE_EMA ; break ;

cas 2 : strMAType="SMMA" ; MA_Mode=MODE_SMMA ; break ;

cas 3 : strMAType="LWMA" ; MA_Mode=MODE_LWMA ; pause ;

par défaut : strMAType="SMA" ; MA_Mode=MODE_SMA ; break ;

}

IndicatorShortName( "CMO" + " (" + CMO_Period + ") " + " : " + strMAType+ " (" +MA_Period + ") ") ;

SetIndexLabel(0, "CMO" + " (" +CMO_Period + ") ") ;

SetIndexLabel(1,strMAType+ " (" + MA_Period + ") ") ;

//---- initialisation terminée

return(0) ;

}

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

//| Convergence/Divergence des Moyennes Mobiles |

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

int start()

{

int limite ;

int counted_bars=IndicatorCounted() ;

//---- dernière barre comptée sera recomptée

if(counted_bars>0) counted_bars-- ;

limit=Bars-counted_bars ;

//---- CMO compté dans le 1er tampon

for(int i=0 ; i<limit ; i++)

CMO_Buffer=iCMO(NULL,0,CMO_Period,i) ;

//---- ligne MA comptée dans le 2ème tampon

for(i=0 ; i<limit ; i++)

MA_Buffer=iMAOnArray(CMO_Buffer,Bars,MA_Period,0,MA_Mode,i) ;

//---- terminé

retour(0) ;

}

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

Dossiers :
cmo.mq4  6 kb
 

Mladen, pouvez-vous m'aider à trouver les erreurs?

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color2 Red

//----

double UpperBuf[];

double UpperBuf1[];

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

//| |

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

void init()

{

SetIndexStyle(0, DRAW_NONE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(0, N);

//----

SetIndexBuffer(0, UpperBuf);

SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(1, N);

//----

SetIndexBuffer(1, UpperBuf1);

}

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

//| |

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

void deinit()

{

//----

}

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

//| |

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

void start()

{

int counted = IndicatorCounted();

//----

if(counted < 0)

return (-1);

//----

if(counted > 0)

counted--;

int limit = Bars - counted;

//----

for(int i = 0; i < limit; i++)

{

UpperBuf= ((High/Close)-34)*Volume;

UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

}

}

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

 
anonimm:
Merci Mladen,

J'essaie d'utiliser l'indicateur cmo's ma mais j'obtiens une erreur (fonction iCMO non définie)... pouvez-vous m'aider ?

//---- paramètres de l'indicateur

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Silver

#property indicator_color2 Red

#property indicator_width1 2

#property indicator_width2 2

//---- paramètres de l'indicateur

extern int CMO_Period=21 ;

extern int MA_Period=14 ;

extern string m = "--Moving Average Types--" ;

extern string m0 = " 0 = SMA" ;

extern string m1 = " 1 = EMA" ;

extern string m2 = " 2 = SMMA" ;

extern string m3 = " 3 = LWMA" ;

extern int MA_Type=1 ;

//---- tampons d'indicateurs

double CMO_Buffer[] ;

double MA_Buffer[] ;

double iCMO[] ;

int MA_Mode ;

string strMAType ;

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

//| Fonction d'initialisation de l'indicateur personnalisé |

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

int init()

{

//---- paramètres de dessin

SetIndexStyle(0,DRAW_LINE) ;

SetIndexStyle(1,DRAW_LINE) ;

SetIndexDrawBegin(1,CMO_Period) ;

IndicatorDigits(Digits+1) ;

//---- mappage des tampons d'indicateurs

SetIndexBuffer(0,CMO_Buffer) ;

SetIndexBuffer(1,MA_Buffer) ;

//---- nom de la DataWindow et étiquette de la sous-fenêtre de l'indicateur

switch (MA_Type)

{

cas 1 : strMAType="EMA" ; MA_Mode=MODE_EMA ; break ;

cas 2 : strMAType="SMMA" ; MA_Mode=MODE_SMMA ; break ;

cas 3 : strMAType="LWMA" ; MA_Mode=MODE_LWMA ; pause ;

par défaut : strMAType="SMA" ; MA_Mode=MODE_SMA ; break ;

}

IndicatorShortName( "CMO" + " (" + CMO_Period + ") " + " : " + strMAType+ " (" +MA_Period + ") ") ;

SetIndexLabel(0, "CMO" + " (" +CMO_Period + ") ") ;

SetIndexLabel(1,strMAType+ " (" + MA_Period + ") ") ;

//---- initialisation terminée

return(0) ;

}

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

//| Convergence/Divergence des Moyennes Mobiles |

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

int start()

{

int limite ;

int counted_bars=IndicatorCounted() ;

//---- dernière barre comptée sera recomptée

if(counted_bars>0) counted_bars-- ;

limit=Bars-counted_bars ;

//---- CMO comptée dans le 1er tampon

for(int i=0 ; i<limit ; i++)

CMO_Buffer=iCMO(NULL,0,CMO_Period,i) ;

//---- ligne MA comptée dans le 2ème tampon

for(i=0 ; i<limit ; i++)

MA_Buffer=iMAOnArray(CMO_Buffer,Bars,MA_Period,0,MA_Mode,i) ;

//---- terminé

retour(0) ;

}

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

Et voilà PS : il s'agit d'une version autonome, pas besoin de la cmo.

Dossiers :
cmo_ma.mq4  2 kb
 
k3rn3l:
Mladen, pouvez-vous m'aider à trouver les erreurs ?

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color2 Red

//----

double UpperBuf[];

double UpperBuf1[];

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

//| |

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

void init()

{

SetIndexStyle(0, DRAW_NONE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(0, N);

//----

SetIndexBuffer(0, UpperBuf);

SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1);

//----

SetIndexDrawBegin(1, N);

//----

SetIndexBuffer(1, UpperBuf1);

}

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

//| |

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

void deinit()

{

//----

}

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

//| |

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

void start()

{

int counted = IndicatorCounted();

//----

if(counted < 0)

return (-1);

//----

if(counted > 0)

counted--;

int limit = Bars - counted;

//----

for(int i = 0; i < limit; i++)

{

UpperBuf= ((High/Close)-34)*Volume;

UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

}

}

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

k3rn3l

Essayez comme ceci :

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Red

double UpperBuf[];

double UpperBuf1[];

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

//| |

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

void init()

{

IndicatorBuffers(2);

SetIndexBuffer(0, UpperBuf1);

SetIndexBuffer(1, UpperBuf);

}

void deinit() {}

void start()

{

int counted = IndicatorCounted();

if(counted < 0) return (-1);

if(counted > 0) counted--;

int limit = Bars - counted;

for(int i = 0; i < limit; i++)

if (Close!=0)

UpperBuf= ((High/Close)-34)*Volume;

else UpperBuf= 0;

for( i = 0; i < limit; i++) UpperBuf1= iMAOnArray(UpperBuf,0,33,0,MODE_EMA,i);

}
 

Cher Mladen ;

Merci encore pour les indices wpr ma et cmo ma. Supposons que pour le premier indicateur je fixe le wpr per à a, le ma per à b, et pour le deuxième indicateur la gamme cmo à c et le ma per à d. Je voudrais acheter quand le wpr croise son ma (alors que le wpr>niveau x) et le cmo croise son ma (alors que le cmo>niveau y) à LA MÊME MINUTE/BAR. (c'est important, deux conditions doivent se produire en même temps), et vendre les conditions inverses.

est-ce possible ?

 
anonimm:
Cher Mladen ;

Merci encore pour les indices wpr ma et cmo ma. Supposons que pour le premier indicateur je fixe le wpr per à a, le ma per à b, et pour le second indicateur la gamme cmo à c et le ma per à d. Je voudrais acheter quand le wpr traverse son ma (alors que le wpr>niveau x) et le cmo traverse son ma (alors que le cmo>niveau y) à LA MÊME MINUTE/BAR. (c'est important, deux conditions doivent se produire en même temps), et vendre les conditions inverses.

Est-ce possible ?

Oui

c'est possible

Utilisez iCustom() pour vérifier les conditions que vous recherchez et vous pouvez combiner les conditions de n'importe quel nombre d'indicateurs personnalisés que vous utilisez en un seul signal.

 

Quelqu'un peut-il m'aider à réparer cet indicateur pour plus de 950 barres de comptage ?

Dossiers :
 
YSCWL:
Quelqu'un peut-il m'aider à réparer cet indicateur pour plus de 950 barres de comptage ?

Essayez-le

Dossiers :