Aide au codage - page 292

 
daytrade5:
Cher Monsieur MLADEN, Je n'ai pas réussi à trouver un indicateur qui trace simplement le haut et le bas de la journée précédente en excluant les dimanches. J'ai utilisé l'indicateur ci-joint et j'espérais qu'il pourrait être modifié pour exclure les données du dimanche. Merci d'avance pour votre aide.

daytrade5

Cela devrait être ça. Essayez-le : prevday_hilo_no_sunday.mq4

Dossiers :
 
mladen:
daytrade5 Ça devrait être ça. Essayez-le : prevday_hilo_no_sunday.mq4

Mladen,

C'est absolument parfait. Merci beaucoup pour votre aide.

 

Bonjour,

Je sais que c'est un peu vague mais est-ce que cela affecte les fonctions d'un EA de manière majeure et si oui, que dois-je rechercher pour y remédier ? Le problème est 36 avertissements de "tableaux passés par référence seulement", y a-t-il une certaine façon de traiter les tableaux avec ce nouveau MT4. Merci pour toute information complémentaire.

 
cja:
Bonjour, je sais que c'est un peu vague mais est-ce que cela affecte les fonctions d'une EA de manière importante et si oui, que dois-je rechercher pour y remédier ? Le problème est 36 avertissements de "tableaux passés par référence seulement". Y a-t-il une certaine façon de traiter les tableaux avec ce nouveau MT4 ? Merci pour toute information sur ce sujet

cja

Cela ne devrait pas l'affecter puisque le compilateur devrait le convertir automatiquement.

Pour éviter cet avertissement, il suffit d'ajouter "&" après la déclaration du type de tableau dans la déclaration de fonction (ainsi, au lieu de "void example(double arrayPassedByReference[])", utilisez "void example(double& arrayPassedByReference[])").

 

Cher Mladen et toute autre personne,

Savez-vous comment le code ci-dessous permet de créer dessignaux d' achat et de vente ? Il est écrit ''Series array that contains open-close-high-low prices of each bar'' ''Indicator Curves created:Implements a curve of type DRAW_HISTOGRAM'' D'après ce que je vois, il ne se repeint pas.

Merci.

double W_Buffer0[];

double W_Buffer1[];

double R_Buffer0[];

double R_Buffer1[];

double S_Buffer0[];

double S_Buffer1[];

double E_Buffer0[];

double E_Buffer1[];

int R_t3_period=21;

double R_b=0.8;

extern int R_mBar=0;

double W_e1, W_e2, W_e3, W_e4, W_e5, W_e6, W_c1, W_c2, W_c3, W_c4, W_n, W_w1, W_w2, W_b2, W_b3;

double W_t3, W_shift, W_wpr, W_trig, W_t3_period, W_b, W_per, W_psel, W_pbuy;

bool R_ft=True;

double R_e1, R_e2, R_e3, R_e4, R_e5, R_e6, R_c1, R_c2, R_c3, R_c4, R_n, R_w1, R_w2, R_b2, R_b3;

double R_t3[];

int R_LoopBegin, R_shift;

int init()

{

//---- indicators

SetIndexStyle (0,DRAW_NONE);

SetIndexBuffer (0,W_Buffer0);

SetIndexEmptyValue(0,EMPTY_VALUE);

SetIndexStyle (1,DRAW_NONE);

SetIndexBuffer (1,W_Buffer1);

SetIndexEmptyValue(1,EMPTY_VALUE);

SetIndexStyle (2,DRAW_NONE);

SetIndexBuffer (2,R_Buffer0);

SetIndexEmptyValue(2,EMPTY_VALUE);

SetIndexStyle (3,DRAW_NONE);

SetIndexBuffer (3,R_Buffer1);

SetIndexEmptyValue(3,EMPTY_VALUE);

SetIndexStyle (4,DRAW_ARROW,EMPTY,2);

SetIndexArrow (4,241);

SetIndexBuffer (4,S_Buffer0);

SetIndexEmptyValue(4,EMPTY_VALUE);

SetIndexStyle (5,DRAW_ARROW,EMPTY,2);

SetIndexArrow (5,242);

SetIndexBuffer (5,S_Buffer1);

SetIndexEmptyValue(5,EMPTY_VALUE);

SetIndexStyle (6,DRAW_ARROW,EMPTY,2);

SetIndexArrow (6,251);

SetIndexBuffer (6,E_Buffer0);

SetIndexEmptyValue(6,EMPTY_VALUE);

SetIndexStyle (7,DRAW_ARROW,EMPTY,2);

SetIndexArrow (7,251);

SetIndexBuffer (7,E_Buffer1);

SetIndexEmptyValue(7,EMPTY_VALUE);

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

W_t3_period=8;

W_b=0.8;

W_per=21;

W_psel=-30;

W_pbuy=-70;

W_b2=W_b*W_b;

W_b3=W_b2*W_b;

W_c1=-W_b3;

W_c2=(3*(W_b2+W_b3));

W_c3=-3*(2*W_b2+W_b+W_b3);

W_c4=(1+3*W_b+W_b3+3*W_b2);

W_n=W_t3_period;

if (W_n<1) W_n=1;

W_n = 1 + 0.5*(W_n-1);

W_w1 = 2 / (W_n + 1);

W_w2 = 1 - W_w1;

if (R_mBar==0) R_LoopBegin=Bars;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars);

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

{

W_wpr=iWPR(NULL,0,W_per,i);

W_e1 = W_w1*W_wpr + W_w2*W_e1;

W_e2 = W_w1*W_e1 + W_w2*W_e2;

W_e3 = W_w1*W_e2 + W_w2*W_e3;

W_e4 = W_w1*W_e3 + W_w2*W_e4;

W_e5 = W_w1*W_e4 + W_w2*W_e5;

W_e6 = W_w1*W_e5 + W_w2*W_e6;

W_t3 = W_c1*W_e6 + W_c2*W_e5 + W_c3*W_e4 + W_c4*W_e3;

if (W_t3>=-50) W_trig=W_psel;

if (W_t3<-50) W_trig=W_pbuy;

W_Buffer0=W_t3;

W_Buffer1=W_trig;

}

if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);

ArrayResize(R_t3, R_LoopBegin);

if (R_ft) {

R_b2=R_b*R_b;

R_b3=R_b2*R_b;

R_c1=-R_b3;

R_c2=(3*(R_b2+R_b3));

R_c3=-3*(2*R_b2+R_b+R_b3);

R_c4=(1+3*R_b+R_b3+3*R_b2);

R_n=R_t3_period;

if (R_n<1) R_n=1;

R_n=1+0.5*(R_n-1);

R_w1=2/(R_n+1);

R_w2=1-R_w1;

R_ft=False;

}

for (R_shift=R_LoopBegin; R_shift>=0; R_shift--) {

R_e1=R_w1*Close[R_shift]+R_w2*R_e1;

R_e2=R_w1*R_e1+R_w2*R_e2;

R_e3=R_w1*R_e2+R_w2*R_e3;

R_e4=R_w1*R_e3+R_w2*R_e4;

R_e5=R_w1*R_e4+R_w2*R_e5;

R_e6=R_w1*R_e5+R_w2*R_e6;

R_t3[R_shift]=R_c1*R_e6+R_c2*R_e5+R_c3*R_e4+R_c4*R_e3;

if (R_t3[R_shift+1]<=R_t3[R_shift]) R_Buffer0[R_shift]=R_t3[R_shift]; else R_Buffer0[R_shift]=0;

if (R_t3[R_shift+1]>R_t3[R_shift]) R_Buffer1[R_shift]=R_t3[R_shift]; else R_Buffer1[R_shift]=0;

}

if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);

for (int cnt=0;cnt<=R_LoopBegin;cnt++)

{

if(R_Buffer0[cnt]>0 && R_Buffer1[cnt+1]>0 && W_Buffer0[cnt]>W_Buffer0[cnt+1] && W_Buffer0[cnt+1]>W_psel) S_Buffer0[cnt]=Low[cnt]-6*Point; else S_Buffer0[cnt]=0;

if(R_Buffer1[cnt]>0 && R_Buffer0[cnt+1]>0 && W_Buffer0[cnt]<W_Buffer0[cnt+1] && W_Buffer0[cnt+1]<W_pbuy) S_Buffer1[cnt]=High[cnt]+6*Point; else S_Buffer1[cnt]=0;

}

if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);

for (cnt=0;cnt<=R_LoopBegin;cnt++)

{

if(W_Buffer0[cnt]W_psel) E_Buffer0[cnt]=High[cnt]+6*Point; else E_Buffer0[cnt]=0;

if(W_Buffer0[cnt]>W_pbuy && W_Buffer0[cnt+1]<W_pbuy) E_Buffer1[cnt]=Low[cnt]-6*Point; else E_Buffer1[cnt]=0;

}
 
nevar:
Cher Mladen et tout le monde,

Savez-vous comment le code ci-dessous permet de créer des signaux d'achat et de vente ? Il est écrit : ''Series array that contains open-close-high-low prices of each bar'' ''Indicator Curves created:Implements a curve of type DRAW_HISTOGRAM'' D'après ce que je vois, il ne se repeint pas.

Merci.

double W_Buffer0[];

double W_Buffer1[];

double R_Buffer0[];

double R_Buffer1[];

double S_Buffer0[];

double S_Buffer1[];

double E_Buffer0[];

double E_Buffer1[];

int R_t3_period=21;

double R_b=0.8;

extern int R_mBar=0;

double W_e1, W_e2, W_e3, W_e4, W_e5, W_e6, W_c1, W_c2, W_c3, W_c4, W_n, W_w1, W_w2, W_b2, W_b3;

double W_t3, W_shift, W_wpr, W_trig, W_t3_period, W_b, W_per, W_psel, W_pbuy;

bool R_ft=True;

double R_e1, R_e2, R_e3, R_e4, R_e5, R_e6, R_c1, R_c2, R_c3, R_c4, R_n, R_w1, R_w2, R_b2, R_b3;

double R_t3[];

int R_LoopBegin, R_shift;

int init()

{

//---- indicators

SetIndexStyle (0,DRAW_NONE);

SetIndexBuffer (0,W_Buffer0);

SetIndexEmptyValue(0,EMPTY_VALUE);

SetIndexStyle (1,DRAW_NONE);

SetIndexBuffer (1,W_Buffer1);

SetIndexEmptyValue(1,EMPTY_VALUE);

SetIndexStyle (2,DRAW_NONE);

SetIndexBuffer (2,R_Buffer0);

SetIndexEmptyValue(2,EMPTY_VALUE);

SetIndexStyle (3,DRAW_NONE);

SetIndexBuffer (3,R_Buffer1);

SetIndexEmptyValue(3,EMPTY_VALUE);

SetIndexStyle (4,DRAW_ARROW,EMPTY,2);

SetIndexArrow (4,241);

SetIndexBuffer (4,S_Buffer0);

SetIndexEmptyValue(4,EMPTY_VALUE);

SetIndexStyle (5,DRAW_ARROW,EMPTY,2);

SetIndexArrow (5,242);

SetIndexBuffer (5,S_Buffer1);

SetIndexEmptyValue(5,EMPTY_VALUE);

SetIndexStyle (6,DRAW_ARROW,EMPTY,2);

SetIndexArrow (6,251);

SetIndexBuffer (6,E_Buffer0);

SetIndexEmptyValue(6,EMPTY_VALUE);

SetIndexStyle (7,DRAW_ARROW,EMPTY,2);

SetIndexArrow (7,251);

SetIndexBuffer (7,E_Buffer1);

SetIndexEmptyValue(7,EMPTY_VALUE);

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

W_t3_period=8;

W_b=0.8;

W_per=21;

W_psel=-30;

W_pbuy=-70;

W_b2=W_b*W_b;

W_b3=W_b2*W_b;

W_c1=-W_b3;

W_c2=(3*(W_b2+W_b3));

W_c3=-3*(2*W_b2+W_b+W_b3);

W_c4=(1+3*W_b+W_b3+3*W_b2);

W_n=W_t3_period;

if (W_n<1) W_n=1;

W_n = 1 + 0.5*(W_n-1);

W_w1 = 2 / (W_n + 1);

W_w2 = 1 - W_w1;

if (R_mBar==0) R_LoopBegin=Bars;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars);

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

{

W_wpr=iWPR(NULL,0,W_per,i);

W_e1 = W_w1*W_wpr + W_w2*W_e1;

W_e2 = W_w1*W_e1 + W_w2*W_e2;

W_e3 = W_w1*W_e2 + W_w2*W_e3;

W_e4 = W_w1*W_e3 + W_w2*W_e4;

W_e5 = W_w1*W_e4 + W_w2*W_e5;

W_e6 = W_w1*W_e5 + W_w2*W_e6;

W_t3 = W_c1*W_e6 + W_c2*W_e5 + W_c3*W_e4 + W_c4*W_e3;

if (W_t3>=-50) W_trig=W_psel;

if (W_t3<-50) W_trig=W_pbuy;

W_Buffer0=W_t3;

W_Buffer1=W_trig;

}

if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);

ArrayResize(R_t3, R_LoopBegin);

if (R_ft) {

R_b2=R_b*R_b;

R_b3=R_b2*R_b;

R_c1=-R_b3;

R_c2=(3*(R_b2+R_b3));

R_c3=-3*(2*R_b2+R_b+R_b3);

R_c4=(1+3*R_b+R_b3+3*R_b2);

R_n=R_t3_period;

if (R_n<1) R_n=1;

R_n=1+0.5*(R_n-1);

R_w1=2/(R_n+1);

R_w2=1-R_w1;

R_ft=False;

}

for (R_shift=R_LoopBegin; R_shift>=0; R_shift--) {

R_e1=R_w1*Close[R_shift]+R_w2*R_e1;

R_e2=R_w1*R_e1+R_w2*R_e2;

R_e3=R_w1*R_e2+R_w2*R_e3;

R_e4=R_w1*R_e3+R_w2*R_e4;

R_e5=R_w1*R_e4+R_w2*R_e5;

R_e6=R_w1*R_e5+R_w2*R_e6;

R_t3[R_shift]=R_c1*R_e6+R_c2*R_e5+R_c3*R_e4+R_c4*R_e3;

if (R_t3[R_shift+1]<=R_t3[R_shift]) R_Buffer0[R_shift]=R_t3[R_shift]; else R_Buffer0[R_shift]=0;

if (R_t3[R_shift+1]>R_t3[R_shift]) R_Buffer1[R_shift]=R_t3[R_shift]; else R_Buffer1[R_shift]=0;

}

if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);

for (int cnt=0;cnt<=R_LoopBegin;cnt++)

{

if(R_Buffer0[cnt]>0 && R_Buffer1[cnt+1]>0 && W_Buffer0[cnt]>W_Buffer0[cnt+1] && W_Buffer0[cnt+1]>W_psel) S_Buffer0[cnt]=Low[cnt]-6*Point; else S_Buffer0[cnt]=0;

if(R_Buffer1[cnt]>0 && R_Buffer0[cnt+1]>0 && W_Buffer0[cnt]<W_Buffer0[cnt+1] && W_Buffer0[cnt+1]<W_pbuy) S_Buffer1[cnt]=High[cnt]+6*Point; else S_Buffer1[cnt]=0;

}

if (R_mBar==0) R_LoopBegin=Bars-R_t3_period-1;

else R_LoopBegin=R_mBar;

R_LoopBegin=MathMin(R_LoopBegin, Bars-R_t3_period-1);

for (cnt=0;cnt<=R_LoopBegin;cnt++)

{

if(W_Buffer0[cnt]W_psel) E_Buffer0[cnt]=High[cnt]+6*Point; else E_Buffer0[cnt]=0;

if(W_Buffer0[cnt]>W_pbuy && W_Buffer0[cnt+1]<W_pbuy) E_Buffer1[cnt]=Low[cnt]-6*Point; else E_Buffer1[cnt]=0;

}

Il combine des signaux provenant de t3 smoothed wpr et d'un t3 simple.

Mais la dernière partie est faite du futur au passé (quelque chose de similaire au sidus et au vent solaire) donc je serais prudent en l'utilisant.

 

Bonjour Cher Mladen. Est-il possible de faire des barres Step ma ?

 
Air92:
Bonjour Cher Mladen. Il est possible de faire des barres Step ma ?

Vous voulez dire des barres colorées en fonction de la couleur de l'étape ma ?

 
mladen:
Vous voulez dire des barres colorées en fonction de la couleur de l'étape ma ?

Oui, vous avez raison.

 
Air92:
Oui, vous avez raison

Air92

J'ai posté une version ici : https://www.mql5.com/en/forum/173044/page12