Comment coder ? - page 282

 
gilben:
Je cherche une solution pour appliquer l'algorithme des indicateurs sur un tableau de prix.

Dans MQL4, certains indicateurs ont cette fonction, tels que : iCCIOnArray, iBandsOnArray...

Mais des indicateurs comme ADX n'ont pas cette fonction.

Quelqu'un a-t-il une idée de la façon dont je peux appliquer le calcul d'un indicateur sur un tableau prédéfini (ne provenant pas du serveur de cotations) ?

[Si vous savez comment un indicateur donné est calculé, vous pouvez tout faire :)

Veuillez expliquer plus précisément ce dont vous avez besoin.

Merci,

Grzesiek[/lang]

 

...

ADX utilise ce qu'on appelle un atruerange(Max(High,PreviousClose)-Min(Low,PreviousClose) et c'est la base du calcul d'ADX.

En raison des valeurs High, Low et Close requises, il ne peut pas être appliqué à un tableau. En général, si vous voyez qu'il y a un prix requis, alors l'indicateur devrait être applicable à un tableau. S'il n'y a pas de paramètre de prix, alors il est presque certain qu'il ne peut pas être appliqué à un tableau (en supposant que l'indicateur fonctionne en premier lieu sur les prix).

 
g.pociejewski:
[Si vous savez comment un indicateur donné est calculé, vous pouvez tout faire :)

Veuillez expliquer plus précisément ce dont vous avez besoin.

Merci,

Grzesiek[/lang]

Merci Grzesiek.

J'ai cherché une bonne solution. Finalement, la meilleure solution est d'intégrer le code indi dans le code expert.

Quoi qu'il en soit, à moins que quelqu'un ne me montre une autre solution, je vais l'appliquer de cette façon.

 

Avez-vous le fichier source ? Le fichier *.ex4 est compilé, vous n'avez donc pas accès au code source.

Salutations

 

demande

mladen:
star821

Essayez celle-ci

________________________

Quelques explications : Je n'ai pas utilisé ceux que vous avez postés mais j'ai fait ceux-ci (l'indicateur joint dans votre post porte mon nom, mais cette version n'est pas faite par moi, mais ce n'est pas la seule raison pour laquelle je n'ai pas utilisé cet indicateur). ...

salutations

Mladen

helo Mladen

est-il possible d'adapter le stc EA pour une HMA couleur nrp-indi et High-low trend indi ?....

j'ai écrit un pseudo code (* je ne sais pas coder du tout... *) :

************************************************************

externes :

Lot#

période pour la HMA

? ??.

.....................

répéter :

Obtenez la couleur du zigzag (fermeture de la barre) ;

obtenir la couleur de la tendance de la HMA (fermeture de la barre) ;

----------------------------------------------------------------

// vente ouverte

si le dernier point zigzag = bleu && la tendance HMA = rouge -> ouvrir un ticket de VENTE (une seule fois par couleur de tendance HMA)

si la vente n'est pas ouverte-> réessayer 3 fois

si pas de succès alerte & email : impossible d'ouvrir la vente pour le symbole, TF, temps ;

sinon

// ouvrir l'achat

si le dernier point zigzag = rouge && tendance HMA = bleu -> ouvrir le ticket BUY (une seule fois par couleur de tendance HMA)

si l'achat ne peut être ouvert-> réessayer 3 fois

si pas de succès alerte & email : couldn't open buy for symbol,TF, time ;

-------------------------------------------------------------------

si la tendance HMA (rouge) devient bleue -> fermer la vente, attendre 10 secondes ;

si la tendance HMA ( bleue ) devient rouge -> fermer l'achat, attendre 10 sec ;

-------------------------------------------------------------------

fermer tous les trades le vendredi à 12:00h AM (GMT)...

****************************************************************

je sais qu'il y aura des pertes mais cela ne me dérange pas...

je ne veux pas de SLs ...

salutations

Cado

hma_color_nrp.ex4high_-_low_trend.mq4

Dossiers :
 

ATR + MA & Bande passante + MA

[Bonjour, j'ai besoin d'un indicateur personnalisé qui, dans une fenêtre séparée, écrive l'ATR et le calcul de la moyenne mobile et la même chose pour la largeur de bande. J'ai fait le code dans mql4 et j'ai utilisé l'IMAONARRAY pour calculer la MA, mais l'indicateur ne fonctionne pas... quelqu'un peut-il m'aider ?

C'est l'un des codes teo...

Merci

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Red

//---- input parameters

extern int AtrPeriod=14;

//---- buffers

double AtrBuffer[];

double TempBuffer[];

double MaBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

string short_name;

//---- 1 additional buffer used for counting.

IndicatorBuffers(2);

//---- indicator line

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,AtrBuffer);

SetIndexBuffer(1,TempBuffer);

SetIndexStyle(2,DRAW_LINE);

SetIndexBuffer(2,MaBuffer);

//---- name for DataWindow and indicator subwindow label

short_name="ATR("+AtrPeriod+")";

IndicatorShortName(short_name);

SetIndexLabel(0,short_name);

//----

SetIndexDrawBegin(0,AtrPeriod);

//----

return(0);

}

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

//| Average True Range |

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

int start()

{

int i,counted_bars=IndicatorCounted();

//----

if(Bars<=AtrPeriod) return(0);

//---- initial zero

if(counted_bars<1)

for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;

//----

i=Bars-counted_bars-1;

while(i>=0)

{

double high=High;

double low =Low;

if(i==Bars-1) TempBuffer=high-low;

else

{

double prevclose=Close;

TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);

}

i--;

}

//----

if(counted_bars>0) counted_bars--;

int limit=Bars-counted_bars;

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

AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);

//----

double MyArray[];

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

ArrayResize( MyArray, limit);

ArraySetAsSeries(MyArray,true);

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

{

MyArray = AtrBuffer;

}

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

{

MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);

}

//----

return(0);

}

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

[/lang]

 

...

Essayez-le maintenant

k3rn3l:
[Bonjour, j'ai besoin d'un indicateur personnalisé qui, dans une fenêtre séparée, écrive l'atr et calcule la moyenne mobile dessus et même chose pour la bande passante. J'ai fait le code dans mql4 et j'ai utilisé le IMAONARRAY pour calculer la MA, mais l'indicateur ne fonctionne pas...quelqu'un peut-il m'aider ???

C'est un des codes Teo...

Merci

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue

#property indicator_color2 Red

//---- input parameters

extern int AtrPeriod=14;

//---- buffers

double AtrBuffer[];

double TempBuffer[];

double MaBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

string short_name;

//---- 1 additional buffer used for counting.

IndicatorBuffers(2);

//---- indicator line

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,AtrBuffer);

SetIndexBuffer(1,TempBuffer);

SetIndexStyle(2,DRAW_LINE);

SetIndexBuffer(2,MaBuffer);

//---- name for DataWindow and indicator subwindow label

short_name="ATR("+AtrPeriod+")";

IndicatorShortName(short_name);

SetIndexLabel(0,short_name);

//----

SetIndexDrawBegin(0,AtrPeriod);

//----

return(0);

}

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

//| Average True Range |

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

int start()

{

int i,counted_bars=IndicatorCounted();

//----

if(Bars<=AtrPeriod) return(0);

//---- initial zero

if(counted_bars<1)

for(i=1;i<=AtrPeriod;i++) AtrBuffer=0.0;

//----

i=Bars-counted_bars-1;

while(i>=0)

{

double high=High;

double low =Low;

if(i==Bars-1) TempBuffer=high-low;

else

{

double prevclose=Close;

TempBuffer=MathMax(high,prevclose)-MathMin(low,prevclose);

}

i--;

}

//----

if(counted_bars>0) counted_bars--;

int limit=Bars-counted_bars;

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

AtrBuffer=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);

//----

double MyArray[];

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

ArrayResize( MyArray, limit);

ArraySetAsSeries(MyArray,true);

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

{

MyArray = AtrBuffer;

}

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

{

MaBuffer = iMAOnArray(MyArray,limit,10,0,MODE_SMA,i);

}

//----

return(0);

}

//+------------------------------------------------------------------+
[/lang]
Dossiers :
atr__ma.mq4  2 kb
 

[Bonjour, Quelqu'un peut-il m'aider à construire cette formule dans le code metatrader ?

(ceci est dans la formule metastock :)

Q1:=Input("PERIOD",1,1000,3);

Q2:=Input("PERIOD",0.001,100,1);

Q3:=Q2/100 ;

Q4:=Mov( Typique(),Q1,E) ;

Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));

Q5

[/lang]

 

...

Intéressant

La seule chose que vous devez ajuster pour les différents cadres temporels est le pourcentage. 1% semble être un bon choix pour un graphique de 4 heures, mais voici un exemple de graphique de 15 minutes avec 0,5% au lieu du 1% par défaut.

PS : Je n'ai aucune idée du nom original de ce programme, je l'ai donc nommé tel quel.

Salutations

mladen

cedid:
[Bonjour, Quelqu'un peut-il m'aider à construire cette formule dans le code metatrader ?

(ceci est dans la formule metastock :)

Q1:=Input("PERIOD",1,1000,3);

Q2:=Input("PERIOD",0.001,100,1);

Q3:=Q2/100 ;

Q4:=Mov( Typique(),Q1,E) ;

Q5:=If((Q4*(1-Q3))>PREV,Q4*(1-Q3),If((Q4*(1+Q3))<PREV,Q4*(1+Q3),PREV));

Q5

[/lang]
Dossiers :
levels.gif  22 kb
 
mladen:
Intéressant

La seule chose que vous devez ajuster pour les différents cadres temporels est le pourcentage. 1% semble être un bon choix pour un graphique de 4 heures, mais voici un exemple de graphique de 15 minutes avec 0,5% au lieu du 1% par défaut.

PS : Je n'ai aucune idée du nom original de ce programme, je l'ai donc nommé tel quel.

salutations

mladen

[lang=tr]merci mladen je vais essayer, je pense que ça va marcher [/lang]