Aide au codage - page 198

 
cain82:
Merci pour votre 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);

}

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

Cet indicateur calcule quelque chose de similaire à la pente (pas l'angle, puisque l'angle ne peut jamais être calculé exactement sur le graphique de la série temporelle, ni une pente exacte, puisque l'indicateur essaie d'utiliser des mathématiques différentes de celles nécessaires pour une pente) pour chaque barre de la MA. Si vous voulez l'inverser (je devine juste ce que vous voulez exactement), vous allez obtenir cette MA de départ comme résultat (donc vous allez obtenir une moyenne mobile sur le graphique).

Si vous souhaitez étendre la pente de la dernière barre, vous pouvez utiliser quelque chose de similaire à cet indicateur https://www.mql5.com/en/forum/173235/page36 qui étend la moyenne mobile en utilisant la pente de la dernière barre.

 
mladen:
Cet indicateur calcule quelque chose de similaire à la pente (pas l'angle, puisque l'angle ne peut jamais être calculé exactement sur le graphique des séries temporelles, ni une pente exacte, puisque l'indicateur essaie d'utiliser des mathématiques différentes de celles nécessaires pour une pente) pour chaque barre de la ma. Si vous voulez l'inverser (je devine juste ce que vous voulez exactement), vous allez obtenir cette ma de départ comme résultat (donc vous allez obtenir une moyenne mobile sur le graphique). Si vous souhaitez étendre la pente de la dernière barre, vous pouvez utiliser quelque chose de similaire à cet indicateur https://www.mql5.com/en/forum/173235/page36 qui étend la moyenne mobile en utilisant la pente de la dernière barre.

Merci mladen ! C'est très similaire à ce que je veux.

Avez-vous la même chose avec le mode MTF ?

 

mladen...

j'ai besoin de votre aide pour modifier cet indicateur https://www.mql5.com/en/forum/general

 

Mladen,

Calculer les BBands en utilisant les données d'une moyenne mobile.

Comme exemple à appliquer aux bas MT4 non standard.

Comme exemple pour un des types de moyenne mobile de AllAverages.

Est un BBands qui utilise les données réelles de la moyenne.

Pas de BBands SMA, avec un type différent de moyenne mobile.

 
Antonsan:
Mladen,

Calculer les BBands en utilisant les données d'une moyenne mobile.

Comme exemple à appliquer aux bas MT4 non standard.

Comme exemple pour l'un des types de moyenne mobile de AllAverages.

Est un BBands qui utilise les données réelles de la moyenne.

Pas de BBands SMA, avec une moyenne mobile de type différent.

Antonsan

Vous pouvez calculer les bandes de Bollinger sur n'importe quelle valeur si vous utilisez la fonction iStdDevOnArry().

Remplissez un tableau avec les valeurs que vous souhaitez utiliser (valeurs de n'importe quelle moyenne par exemple) calculez son écart en utilisant iStdDevOnArray() et calculez une ligne médiane pour les bandes de Bollinger en utilisant iMaOnArray() (en utilisant le même tableau que iStrDevOnArry()) et ensuite les bandes sont simples : ligne médiane + écart*multiplicateur pour la bande supérieure, et ligne médiane - écart*multiplicateur pour la bande inférieure.

 

Antonsan

Voici un exemple de code très simple que vous pouvez utiliser comme modèle pour construire des bandes de bollinger de n'importe quelle valeur. Tout ce que vous avez à faire est de remplacer l'appel à iRsi() dans cette ligne :

for(i=limit ; i >= 0 ; i--) value = iRSI(NULL,0,RsiLength,RsiPrice,i) ;

par la fonction désirée ou un appel iCustom() à un indicateur personnalisé et il calculera les bandes de Bollinger pour cette valeur.

Dossiers :
 
mladen:
person77 Une autre option a été ajoutée : AllowCloseEqualOpen. Vous pouvez donc maintenant le contrôler avec cette option.

Excellent travail mlanden ! Merci encore.

 

Bon indicateur pour EA

Bonjour,

Cet indicateur a 5 lignes (pivot+R1+R2+S1+S2).

Je veux faire un EA qui se base sur ces lignes. Malheureusement ces lignes n'ont pas de buffer, j'ai besoin de quelqu'un pour allouer un buffer à chaque ligne.

S'il vous plaît aider

Meilleures salutations ;

Bamik

Dossiers :
 
bamik:
Bonjour,

Cet indicateur a 5 lignes (pivot+R1+R2+S1+S2).

Je veux créer une application qui se base sur ces lignes. Malheureusement, ces lignes n'ont pas de tampon, j'ai besoin de quelqu'un pour allouer un tampon à chaque ligne.

S'il vous plaît aider

Meilleures salutations ;

Bamik

barnik

Avez-vous consulté ce fil de discussion : https://www.mql5.com/en/forum/172894

Il y a beaucoup d'indicateurs de pivot utilisant des tampons dans ce fil de discussion.

 
mladen:
barnik

Avez-vous consulté ce fil de discussion : https://www.mql5.com/en/forum/172894

Il y a beaucoup d'indicateurs de pivot utilisant des tampons dans ce fil de discussion.

Merci deer mladen pour votre aide,

J'ai téléchargé et testé la plupart de ces indicateurs, seul l'indicateur "AutoPivotIndicator_ver5" était comme "TARGETS-LINES".

Malheureusement, cet indicateur n'utilise pas non plus le buffer et utilise l'objet.

Pourriez-vous modifier mon indicateur simple (allouer un buffer à chaque ligne) ? c'est un petit indicateur.

Merci