Aide au codage - page 201

 
Slow Moe:
Bonjour, je voudrais savoir s'il est possible de réécrire cet indicateur, afin qu'il ne montre que les flèches, et qu'elles apparaissent sur les chandeliers ? Quelqu'un pourrait-il m'aider à le faire, ou peut-être le coder pour moi ?

Salutations

Slow

fxmtn-test.mq4

Slow

Essayez-le comme ceci

Dossiers :
 

Merci beaucoup à mladen qui fonctionne à merveille ! !!

J'essaie aussi d'activer "extern int arrowDistance = XXX ;" d'une manière ou d'une autre.

Il apparaît dans le menu de sélection maintenant, mais il ne change pas la distance. Où mettre la *arrowDistance ?

Ou est-ce que je me trompe complètement ?

Je l'ai mis à plusieurs endroits, mais cela m'a seulement donné plus de points, pas plus de distance.....

Je suis un novice qui essaie de comprendre le code et j'espère avoir un peu de lumière.

 

Je l'ai fait maintenant comme ceci :

si (AboveBuff > 24,0) ShortBuff = High+ (Point*arrowDistance /2) ;

si (BelowBuff < -24.0) LongBuffe = Low- (Point*arrowDistance /2) ;

Est-ce une bonne méthode ? Ce n'est pas parce que cela fonctionne que cela peut être faux

 
Slow Moe:
Je l'ai fait maintenant comme ceci :

si (AboveBuff > 24.0) ShortBuff = High+ (Point*arrowDistance /2) ;

si (BelowBuff < -24.0) LongBuffe = Low- (Point*arrowDistance /2) ;

Est-ce une bonne méthode ? Ce n'est pas parce que ça marche que c'est faux.

Cela devrait fonctionner, mais il existe un autre moyen de procéder comme suit

LongBuffe = Low-arrowDistance*iATR(NULL,0,20,i) et ShortBuff = High+arrowDistance**iATR(NULL,0,20,i)

 

Lent,

Mieux vaut utiliser le mode iATR(). Changez de cadre temporel et vous verrez ce que je veux dire. Visuellement, vous aurez un problème sur les cadres temporels plus élevés lorsque la distance d'une flèche par rapport au haut ou au bas est fixe (ils auront l'air désordonné sur certains cadres temporels). L'utilisation de iATR() au lieu d'utiliser une distance fixe résout ce problème.

 

Merci mrtools, mladen fonctionne vraiment beaucoup mieux.

Un dernier indicateur que je n'arrive pas à contrôler....

J'essaie de le modifier ici : SignalGap = MathCeil(iATR(NULL,0,50,0)/Point) ;

Je pensais que c'était le bon endroit, puisque changer le 50 change la distance. Mais rien de ce que j'ai testé n'a fonctionné avec arrowDistance.

 
Slow Moe:
Merci mrtools, mladen fonctionne vraiment beaucoup mieux.

Un dernier indicateur que je n'arrive pas à contrôler ....

J'essaie de le modifier ici : SignalGap = MathCeil(iATR(NULL,0,50,0)/Point) ;

Je pensais que c'était le bon endroit, puisque changer le 50 change la distance. Mais rien de ce que j'ai testé n'a fonctionné avec arrowDistance.

Lent

Lorsque vous suivez l'atr pour la distance des flèches, probablement la meilleure façon de modifier cette distance est une sorte de multiplicateur. Par exemple :

arrowPrice = High+iATR(NULL,0,50,0)*arrowDistance ;

Où arrowDistance est défini comme un double et peut être fractionné (vous pouvez donc utiliser des valeurs comme 0.5 aussi bien que des valeurs comme 10.5). Changer la période de l'atr ne changera pas la distance de manière significative (elle prendra simplement en compte une moyenne plus longue des plages).

 

essayer de récupérer la valeur d'un autre indicateur

Bonjour à tous,

j'essaie d'écrire mon premier indicateur personnel et je veux aussi utiliser une valeur d'un indicateur existant que j'ai obtenu sur ce site. j'ai juste copié le code de l'indicateur ici.

Que dois-je coder dans mon nouvel indicateur pour savoir si la barre est bleue/rouge ou 1/0 ? Je n'ai rien contre mais j'ai déjà beaucoup essayé et j'obtiens toujours zéro.

J'ai même essayé de mettre tout le code dans mon indicateur, ce qui n'a pas fonctionné.

toute aide serait appréciée

merci Bob

#property copyright "fxfariz"

#property link "fxfariz@gmail.com"

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue //Red //Aqua

#property indicator_color2 Red

extern int SSP=7;

extern double Kmax=50.6; //24 21.6 21.6

extern int CountBars=300;

extern int myPeriod = 0 ;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double ExtHBuffer1[];

double ExtHBuffer2[];

int xPeriod ;

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

string TimeFrameToString(int tf)

{

string tfs;

switch(tf) {

case PERIOD_M1: tfs="M1" ; break;

case PERIOD_M5: tfs="M5" ; break;

case PERIOD_M15: tfs="M15" ; break;

case PERIOD_M30: tfs="M30" ; break;

case PERIOD_H1: tfs="H1" ; break;

case PERIOD_H4: tfs="H4" ; break;

case PERIOD_D1: tfs="D1" ; break;

case PERIOD_W1: tfs="W1" ; break;

case PERIOD_MN1: tfs="MN1";

}

return(tfs);

}

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

IndicatorBuffers(4);

SetIndexStyle(0,DRAW_HISTOGRAM,0,4); //Red

SetIndexBuffer(0,ExtHBuffer1);

SetIndexStyle(1,DRAW_HISTOGRAM,0,4); //Lime

SetIndexBuffer(1,ExtHBuffer2);

SetIndexBuffer(2,ExtMapBuffer1);

SetIndexBuffer(3,ExtMapBuffer2);

if(myPeriod==0){xPeriod=Period();} {xPeriod=myPeriod;}

string tPeriod = TimeFrameToString(xPeriod) ;

IndicatorShortName(tPeriod + " Trade What You see ("+SSP+")");

//----

return(0);

}

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

//| Custor indicator deinitialization function |

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

int deinit()

{

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

if (CountBars>=Bars) CountBars=Bars;

SetIndexDrawBegin(0,Bars-CountBars+SSP);

SetIndexDrawBegin(1,Bars-CountBars+SSP);

int i, counted_bars=IndicatorCounted();

double SsMax, SsMin, smin, smax;

if(Bars<=SSP+1) return(0);

if(counted_bars<SSP+1)

{

for(i=1;i<=SSP;i++) ExtMapBuffer1[CountBars-i]=0.0;

for(i=1;i<=SSP;i++) ExtMapBuffer2[CountBars-i]=0.0;

}

for(i=CountBars-SSP;i>=0;i--) {

SsMax = High;

SsMin = Low[Lowest(NULL,xPeriod,MODE_LOW,SSP,i-SSP+1)];

smax = SsMax-(SsMax-SsMin)*Kmax/100;

ExtMapBuffer1=smax;

ExtMapBuffer2=smax;

}

for(int b=CountBars-SSP;b>=0;b--)

{

if(ExtMapBuffer1>ExtMapBuffer2)

{

ExtHBuffer1=1;

ExtHBuffer2=0;

}

else

{

ExtHBuffer1=0;

ExtHBuffer2=1;

}

}

return(0);

}
 
BobMorane1000:
bonjour com,

j'essaie d'écrire mon premier indicateur personnel et je veux aussi utiliser une valeur d'un indicateur existant que j'ai obtenu sur ce site. j'ai juste copié le code de l'indicateur ici.

qu'est ce que je dois coder dans mon nouvel indicateur pour savoir si la barre est bleue/rouge ou 1/0 ça ne me dérange pas mais j'ai déjà beaucoup essayé et tout le temps j'obtiens juste zéro

J'ai même essayé de mettre tout le code dans mon indicateur, ce qui n'a pas fonctionné.

toute aide serait appréciée

merci bob

#property copyright "fxfariz"

#property link "fxfariz@gmail.com"

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue //Red //Aqua

#property indicator_color2 Red

extern int SSP=7;

extern double Kmax=50.6; //24 21.6 21.6

extern int CountBars=300;

extern int myPeriod = 0 ;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double ExtHBuffer1[];

double ExtHBuffer2[];

int xPeriod ;

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

string TimeFrameToString(int tf)

{

string tfs;

switch(tf) {

case PERIOD_M1: tfs="M1" ; break;

case PERIOD_M5: tfs="M5" ; break;

case PERIOD_M15: tfs="M15" ; break;

case PERIOD_M30: tfs="M30" ; break;

case PERIOD_H1: tfs="H1" ; break;

case PERIOD_H4: tfs="H4" ; break;

case PERIOD_D1: tfs="D1" ; break;

case PERIOD_W1: tfs="W1" ; break;

case PERIOD_MN1: tfs="MN1";

}

return(tfs);

}

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

IndicatorBuffers(4);

SetIndexStyle(0,DRAW_HISTOGRAM,0,4); //Red

SetIndexBuffer(0,ExtHBuffer1);

SetIndexStyle(1,DRAW_HISTOGRAM,0,4); //Lime

SetIndexBuffer(1,ExtHBuffer2);

SetIndexBuffer(2,ExtMapBuffer1);

SetIndexBuffer(3,ExtMapBuffer2);

if(myPeriod==0){xPeriod=Period();} {xPeriod=myPeriod;}

string tPeriod = TimeFrameToString(xPeriod) ;

IndicatorShortName(tPeriod + " Trade What You see ("+SSP+")");

//----

return(0);

}

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

//| Custor indicator deinitialization function |

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

int deinit()

{

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

if (CountBars>=Bars) CountBars=Bars;

SetIndexDrawBegin(0,Bars-CountBars+SSP);

SetIndexDrawBegin(1,Bars-CountBars+SSP);

int i, counted_bars=IndicatorCounted();

double SsMax, SsMin, smin, smax;

if(Bars<=SSP+1) return(0);

if(counted_bars<SSP+1)

{

for(i=1;i<=SSP;i++) ExtMapBuffer1[CountBars-i]=0.0;

for(i=1;i<=SSP;i++) ExtMapBuffer2[CountBars-i]=0.0;

}

for(i=CountBars-SSP;i>=0;i--) {

SsMax = High;

SsMin = Low[Lowest(NULL,xPeriod,MODE_LOW,SSP,i-SSP+1)];

smax = SsMax-(SsMax-SsMin)*Kmax/100;

ExtMapBuffer1=smax;

ExtMapBuffer2=smax;

}

for(int b=CountBars-SSP;b>=0;b--)

{

if(ExtMapBuffer1>ExtMapBuffer2)

{

ExtHBuffer1=1;

ExtHBuffer2=0;

}

else

{

ExtHBuffer1=0;

ExtHBuffer2=1;

}

}

return(0);

}

BobMorane1000

Vous pouvez faire quelque chose comme ceci :

bool blueValue = (iCustom(NULL,0,"indicatorNameHere",SSP,Kmax,0,0)!=0);

bool redValue = (iCustom(NULL,0,"indicatorNameHere",SSP,Kmax,1,0)!=0);

Mais attention. Cet indicateur est une variation du super indicateur de signal, et le super indicateur de signal recalcule (repeint).

 

Merci beaucoup et pour votre avertissement^^, je vais essayer maintenant ...