Aide au codage - page 197

 
mladen:
Vous pouvez l'ajouter pour dessiner ces lignes supplémentaires une fois de plus - comme ceci :
if (add>0) { drawLine(totalLevels,current+diff+add,addLinesColor,addLinesStyle); drawLine(totalLevels,current+diff-add ,addLinesColor,addLinesStyle); }
et il dessinera ces lignes supplémentaires autour de toutes les lignes "de base".

Merci encore à mladen

 

Besoin d'aide pour programmer un Alert

Bonjour, je suis nouveau dans la programmation de mql4.

Je veux créer une nouvelle alarme "tout en un".

J'ai le Fx MNT, le Super Signal et le CHT Value Chart avec des signaux d'alarme.

Maintenant je veux avoir une seule alarme, quand MNT, Super Signal, Value Chart et RSI sont au bon endroit.

Comment coder cela ? Puis-je utiliser les parties d'alarme de l'existant et les mettre toutes dans un grand code ?

Sincères salutations Slow

 
Slow Moe:
Bonjour, je suis nouveau dans la programmation de mql4.

Je veux créer une nouvelle alarme "tout en un".

Je dispose de Fx MNT, Super Signal et CHT Value Chart avec des signaux d'alarme.

Maintenant je veux avoir une seule alarme, quand MNT, Super Signal, Value Chart et RSI sont au bon endroit.

Comment coder cela ? Puis-je utiliser les parties d'alarme de l'existant et les mettre dans un seul code ?

Sincères salutations Slow

Slow

Vous pouvez le faire, mais le code qui serait "responsable" de récupérer les données de tous ces indicateurs ne serait pas simple (en particulier la partie avec les paramètres où vous auriez besoin de déclarer des paramètres externes à tous les indicateurs qui seraient appelés afin de savoir si l'alerte doit être déclenchée ou non).

 

clôtures consécutives supérieures/inférieures

Le fichier joint comporte un certain nombre de conditions qui peuvent être incluses en sélectionnant vrai/faux.

J'aimerais incorporer une autre condition en tant que vrai/faux : y a-t-il

2 clôtures consécutives plus élevées pour les longs ?

Si c'est le cas, alors si les autres conditions activées par true sont présentes, alors une flèche vers le haut sera produite.

2 clôtures inférieures consécutives pour les shorts ?

Si oui, alors si les autres conditions activées par true sont présentes, alors une flèche vers le bas est produite.

Le nombre de fermetures pourrait-il être une variable ?

Quelqu'un pourrait-il coder cette condition supplémentaire dans l'indicateur Stoch_Indy ? Merci.

Dossiers :
 
person77:
Le fichier joint contient un certain nombre de conditions qui peuvent être incluses en sélectionnant vrai/faux.

Je voudrais incorporer une autre condition comme vrai/faux : y a-t-il

2 clôtures consécutives plus élevées pour les longs ?

Si c'est le cas, si les autres conditions activées par true sont présentes, alors une flèche vers le haut est produite.

2 clôtures inférieures consécutives pour les shorts ?

Si oui, alors si les autres conditions activées par true sont présentes, alors une flèche vers le bas est produite.

Le nombre de fermetures pourrait-il être une variable ?

Quelqu'un pourrait-il coder cette condition supplémentaire dans l'indicateur Stoch_Indy ? Merci.

person77

Essayez celui-ci

Option UseConsecutiveCloseBars ajoutée à cet effet. Ce n'est pas seulement une fermeture qui est testée, mais une fermeture doit être supérieure à l'ouverture sur ces barres afin d'en faire une hausse consécutive, ou elle doit être inférieure à l'ouverture sur ces barres afin d'en faire une baisse consécutive.

Dossiers :
 
mladen:
personne77

Essayez celui-ci

Option UseConsecutiveCloseBars ajoutée à cet effet. Ce n'est pas seulement une clôture qui est testée, mais une clôture doit être supérieure à l'ouverture sur ces barres afin d'en faire une hausse consécutive, ou elle doit être inférieure à l'ouverture sur ces barres afin d'en faire une baisse consécutive.

Très beau mladen - fonctionne très bien. Je vous remercie !

Dans les quelques cas que j'ai rencontrés, le fait que C = O soit autorisé est en général favorable.

Pourriez-vous le modifier pour permettre cela, ou, mieux encore, avoir une option permettant de savoir si C = O est autorisé ou non ?

Dossiers :
 
person77:

Très belle mladen - fonctionne très bien. Je vous remercie !

Dans les quelques cas que j'ai rencontrés, le fait que C = O soit autorisé est en général favorable.

Pourriez-vous le modifier pour permettre cela, ou, mieux encore, avoir une option permettant de savoir si C = O est autorisé ou non ?

personne77

Une option supplémentaire a été ajoutée : AllowCloseEqualOpen. Vous pouvez donc le contrôler avec cette option maintenant.

Dossiers :
 

Bonjour à tous,

J'ai une question sur le codage

Est-il possible de dessiner une moyenne mobile sur un graphique général avec ces préférences ?

nCountedBars = IndicatorCounted() ;

dFactor = 2*3.14159/180.0 ;

mFactor = 10000.0 ;

 
cain82:
Salut les gars,

J'ai une question sur le codage

Est-il possible de dessiner une moyenne mobile sur un graphique général avec ces préférences ?

nCountedBars = IndicatorCounted() ;

dFactor = 2*3.14159/180.0 ;

mFactor = 10000.0 ;

Ce que vous avez écrit (le dFactor et le mFactor) est évalué à une valeur constante indépendamment du prix et du numéro de barre, donc vous aurez une ligne horizontale sur le graphique.

 
mladen:
Ce que vous avez écrit (le dFactor et le mFactor) est évalué à une valeur constante indépendamment du prix et du numéro de la barre, donc vous auriez une ligne horizontale sur le graphique.

Merci pour la réponse !

Mais comment puis-je obtenir une ligne d'angle de la MA sur le graphique général comme dans ce code indi hystogramme ?

//---- indicator settings

#property indicator_separate_window

#property indicator_buffers 3

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

#property indicator_color3 Yellow

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

//---- indicator parameters

extern int TimeFrame = 60;

extern int MAMode = 0;

extern int MAPeriod = 50;

extern int Price = 4;

extern double AngleTreshold = 0.25;

extern int StartMAShift = 2;

extern int EndMAShift = 0;

extern int MaxBars = 500;

string TF1;

//---- indicator buffers

double UpBuffer[];

double DownBuffer[];

double ZeroBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- 2 additional buffers are used for counting.

IndicatorBuffers(3);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2 );

//---- 3 indicator buffers mapping

if(!SetIndexBuffer(0,UpBuffer) &&

!SetIndexBuffer(1,DownBuffer) &&

!SetIndexBuffer(2,ZeroBuffer))

Print("cannot set indicator buffers!");

SetIndexLabel(0,"");

SetIndexLabel(1,"");

SetIndexLabel(2,"");

switch(TimeFrame)

{

case 1: TF1="M1"; break;

case 5: TF1="M5"; break;

case 15: TF1="M15"; break;

case 30: TF1="M30"; break;

case 60: TF1="H1"; break;

case 240: TF1="H4"; break;

case 1440: TF1="D1"; break;

case 10080: TF1="W1"; break;

case 43200: TF1="MN1"; break;

default: {TimeFrame = Period(); init(); return(0);}

}

IndicatorShortName("MAAngle MTF * "+TF1+" *");

//---- initialization done

return(0);

}

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

//| The angle for EMA |

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

int start()

{

double fEndMA, fStartMA;

double fAngle, mFactor, dFactor;

int nLimit, i;

int nCountedBars;

double angle;

int ShiftDif;

string Sym;

if (MAMode >= 4) MAMode = 0;

if(EndMAShift >= StartMAShift)

{

Print("Error: EndMAShift >= StartMAShift");

StartMAShift = 6;

EndMAShift = 0;

}

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

Sym = StringSubstr(Symbol(),3,3);

if (Sym == "JPY") mFactor = 100.0;

ShiftDif = StartMAShift-EndMAShift;

mFactor /= ShiftDif;

//---- check for possible errors

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

//---- last counted bar will be recounted

if(nCountedBars>0) nCountedBars--;

nLimit=Bars-nCountedBars;

nLimit=MathMax(nLimit,TimeFrame/Period());

nLimit=MathMin(nLimit,MaxBars );

//---- main loop

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

{

int y = iBarShift(NULL,TimeFrame,Time);

if (TimeFrame<Period()) TimeFrame=Period();

fEndMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+EndMAShift);

fStartMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+StartMAShift);

// 10000.0 : Multiply by 10000 so that the fAngle is not too small

// for the indicator Window.

fAngle = mFactor * (fEndMA - fStartMA)/2.0;

//fAngle = MathArctan(fAngle)/dFactor;

DownBuffer = 0.0;

UpBuffer = 0.0;

ZeroBuffer = 0.0;

if(fAngle > AngleTreshold)

UpBuffer = fAngle;

else if (fAngle < -AngleTreshold)

DownBuffer = fAngle;

else ZeroBuffer = fAngle;

}

return(0);

}

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