Indicateurs multitemporels - page 108

 

pente mtf

regarde ici alpha24seven

https://www.mql5.com/en/forum/173574

 

Merci Lodol2

Désolé de les avoir manqués. Merci de les avoir portées à mon attention.

J'ai eu quelques problèmes de compilation. Je n'ai jamais vu cette erreur auparavant. Avez-vous une idée ?

Voir le graphique

Merci.

Dossiers :
 

je suis d'accord avec tout ce que vous avez dit, mais je ne pense pas avoir été assez clair.

la formule de keris ne ressemble pas à ça en temps réel (sans rafraîchir les graphiques !), elle ressemble plus à cette ligne jaune ; si vous rafraîchissez les graphiques, oui, tout semble bien - mais alors pourquoi ne pas simplement utiliser un deuxième graphique avec l'horizon temporel supérieur... et confirmer que l'indicateur bouge uniquement sur l'horizon temporel supérieur ?

à partir du moment où vous tracez un indicateur mtf sur un timeframe inférieur, vous avez une autre façon de faire la moyenne de certaines données sur ce timeframe (et non sur un tf supérieur). cela ne ressemblera jamais à l'original - mais cela peut être approché. la question est donc de savoir comment trouver la meilleure formule pour l'approximation la plus proche ? et je pense que cela répond à votre question... n'est-ce pas ?

mladen:
La ligne rouge est l'approximation de la MA que vous proposez.

Magenta est la façon Keris de MTF MA

La ligne dorée représente les valeurs réelles de la MA d'un cadre temporel supérieur sur un cadre temporel inférieur.

Comme vous pouvez le voir, il n'y a pratiquement pas une seule valeur correcte de la MA approximative sur une période de temps, alors que la formule de Keris donne au moins une valeur correcte par période. De toute façon, la formule pour l'approximation dans Metatrader serait :

MAperiod=MAperiod*TimeFrame/Period().

Si vous essayez d'appliquer cette approximation à des indicateurs dérivés de la moyenne mobile (MACD par exemple), vous obtiendrez de grandes, et je dis bien de GRANDES différences (j'ai vu une différence de 7-8% d'un MACD 4H sur un cadre temporel 1H).

Une autre question : à votre avis, combien de personnes ont essayé différentes approches pour les indicateurs multi-temporels ?
 

Erreur dans le code

J'ai trouvé la solution. Ce code supplémentaire a été laissé dans le fichier -- à la fin. Il suffit de le supprimer, de compiler et voilà.

Excellent indicateur BTW.

---

/*

void drawLine(double lvl,string name, color Col )

{

ObjectDelete(name) ;

ObjectCreate(name, OBJ_HLINE, WindowFind(name), Time[0], lvl,Time[0], lvl) ;

ObjectSet(name, OBJPROP_STYLE, STYLE_DOT) ;

ObjectSet(name, OBJPROP_COLOR, Col) ;

ObjectSet(name,OBJPROP_WIDTH,1) ;

}

---

 

...

La ligne jaune est la moyenne mobile"MTF réelle".

Il n'est pas nécessaire de "rafraîchir" les indicateurs de l'image.

Pour le reste, veuillez relire ce message.

salutations

mladen

Scrat:
je suis d'accord avec tout ce que tu as dit, mais je ne pense pas avoir été assez clair.

la formule de keris ne ressemble pas à cela en temps réel (sans rafraîchir les graphiques !), elle ressemble plus à cette ligne jaune ; si vous rafraîchissez les graphiques, oui, tout semble bien - mais alors pourquoi ne pas simplement utiliser un deuxième graphique avec l'horizon temporel supérieur... et confirmer que l'indicateur se déplace uniquement sur l'horizon temporel supérieur ?

à partir du moment où vous tracez un indicateur mtf sur un timeframe inférieur, vous avez une autre façon de faire la moyenne de certaines données sur ce timeframe (et non sur un tf supérieur). cela ne ressemblera jamais à l'original - mais cela peut être approché. la question est donc de savoir comment trouver la meilleure formule pour l'approximation la plus proche ? et je pense que cela répond à votre question... n'est-ce pas ?
 

Besoin d'un homme pour cette Indienne

Bonjour à tous,

J'ai toujours voulu avoir la possibilité de tracer des indicateurs de différentes périodes sur mon graphique.

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

//| Fisher_m11.mq4 |

//| Copyright ฉ forexjr

//| Index de /cam06/fisher |

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

#property copyright "Copyright ฉ 23.07.2006 MartinG "

#property link "http://home.arcor.de/cam06/fisher"

#property indicator_separate_window

//#property indicator_minimum -1

//#property indicator_maximum 1

#property indicator_buffers 3

#property indicator_color2 RoyalBlue

#property indicator_color3 Red

#property indicator_width2 0.5

#property indicator_width3 0.5

int LeftNum1=56 ;

int LeftNum2=56 ;

extern int RangePeriods=35 ;

extern double PriceSmoothing=0.3 ; // =0.67 bei Fisher_m10

extern double IndexSmoothing=0.3 ; // =0.50 bei Fisher_m10

string ThisName="Fisher_kuskus" ;

int DrawStart ;

//---- tampons

double ExtMapBuffer1[] ;

double ExtMapBuffer2[] ;

double ExtMapBuffer3[] ;

double ExtMapBuffer4[] ;

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

//| Fonction d'initialisation de l'indicateur personnalisé |

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

int init()

{

//---- indicateurs

IndicatorBuffers(4) ;

SetIndexLabel(0, "Star") ;

SetIndexStyle(0,DRAW_NONE) ;

SetIndexBuffer(0,ExtMapBuffer1) ;

SetIndexStyle(1,DRAW_HISTOGRAM) ;

SetIndexBuffer(1,ExtMapBuffer2) ;

SetIndexStyle(2,DRAW_HISTOGRAM) ;

SetIndexBuffer(2,ExtMapBuffer3) ;

SetIndexStyle(3,DRAW_NONE) ;

SetIndexBuffer(3,ExtMapBuffer4) ;

string Text=ThisName ;

Text=Text+" (rPériodes "+RangePeriods ;

Text=Text+", pSmooth "+DoubleToStr(PriceSmoothing,2) ;

Text=Text+", iSmooth "+DoubleToStr(IndexSmoothing,2) ;

Text=Text+") " ;

IndicateurNomCourt(Texte) ;

SetIndexLabel(1,NULL) ;

SetIndexLabel(2,NULL) ;

DrawStart=2*RangePeriods+4 ; // DrawStart=Numéro de barre calculé de gauche à droite

SetIndexDrawBegin(1,DrawStart) ;

SetIndexDrawBegin(2,DrawStart) ;

si (PriceSmoothing>=1.0)

{

PriceSmoothing=0.9999 ;

Alert("Poisson61 : Le facteur PriceSmothing doit être inférieur à 1 !") ;

}

if (PriceSmoothing<0)

{

PriceSmoothing=0 ;

Alert("Fish61 : Le facteur de lissage des prix ne doit pas être négatif !") ;

}

if (IndexSmoothing>=1.0)

{

IndexSmoothing=0.9999 ;

Alert("Poisson61 : Le facteur de lissage des prix doit être inférieur à 1 !") ;

}

if (IndexLissage<0)

{

IndexSmoothing=0 ;

Alert("Fish61 : Le facteur de lissage des prix ne doit pas être négatif !") ;

}

//----

retour(0) ;

}

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

//| Fonction personnalisée de désinitialisation de l'indicateur |

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

int deinit()

{

//----

//----

return(0) ;

}

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

//| Fonction d'itération de l'indicateur personnalisée |

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

int start()

{

si (Bars<DrawStart)

{

Alert("Fish84 : Not enough Bars loaded to calculate FisherIndicator with RangePeriods=",RangePeriods) ;

return(-1) ;

}

//----

int counted_bars=IndicatorCounted() ;

si (counted_bars<0) return(-1) ;

if (counted_bars>0) counted_bars-- ;

//----

int Position=Bars-counted_bars ; // Position = BarPosition calculée de droite à gauche

int LeftNum1=Bars-Position ; // lorsque plusieurs barres sont chargées, la position d'une barre change mais pas son LeftNum.

if (LeftNum1<RangePeriods+1)Position=Bars-RangePeriods-1 ;

while(Position>=0)

{

CalculateCurrentBar(Position) ;

Position-- ;

}

//----

retour(0) ;

}

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

//| Fonction de calcul de la barre unique |

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

int CalculateCurrentBar(int pos)

{

double LowestLow, HighestHigh, GreatestRange, MidPrice ;

double PriceLocation, SmoothedLocation, FishIndex, SmoothedFish ;

//----

LowestLow = Low[Lowest(NULL,0,MODE_LOW,RangePeriods,pos)] ;

HighestHigh = High ;

si (HighestHigh-LowestLow<0.1*Point)HighestHigh=LowestLow+0.1*Point ;

GreatestRange=HighestHigh-LowestLow ;

MidPrice = (High[pos]+Low[pos])/2 ;

// Position du prix dans la plage actuelle

si (GreatestRange!=0)

{

PriceLocation=(MidPrice-LowestLow)/GreatestRange ;

PriceLocation= 2.0*PriceLocation - 1.0 ; // -> -1 < PriceLocation < +1

}

// Lissage de PriceLocation

ExtMapBuffer4[pos]=PriceSmoothing*ExtMapBuffer4[pos+1]+(1.0-PriceSmoothing)*PriceLocation ;

SmoothedLocation=ExtMapBuffer4[pos] ;

if (SmoothedLocation> 0.99) SmoothedLocation= 0.99 ; // verhindert, dass MathLog unendlich wird

if (SmoothedLocation<-0.99) SmoothedLocation=-0.99 ; // verhindert, dass MathLog minuns unendlich wird

// FisherIndex

if(1-SmoothedLocation!=0) FishIndex=MathLog((1+SmoothedLocation)/(1-SmoothedLocation)) ;

else Alert("Fisher129 : Unerlaubter Zustand bei Bar Nummer ",Bars-pos) ;

// Lissage de FisherIndex

ExtMapBuffer1[pos]=IndexSmoothing*ExtMapBuffer1[pos+1]+(1.0-IndexSmoothing)*FishIndex ;

si (Bars-pos<DrawStart)ExtMapBuffer1[pos]=0 ;

SmoothedFish=ExtMapBuffer1[pos] ;

if (SmoothedFish>0) // tendance à la hausse

{

ExtMapBuffer2[pos]=SmoothedFish ;

ExtMapBuffer3[pos]=0 ;

}

else // tendance à la baisse

{

ExtMapBuffer2[pos]=0 ;

ExtMapBuffer3[pos]=SmoothedFish ;

}

//----

retour(0) ;

}

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

merci

 
mladen:
Les gens, soyons sérieux

Je suis sérieux mladen...

Je suis un débutant et pas un programmeur, peut-être que la méthode de Scrat n'est pas parfaite, mais je peux peut-être l'utiliser. Je vais l'essayer. Si c'est utile, je l'utiliserai. Si ce n'est pas le cas, je chercherai à nouveau une autre méthode ou un autre indicateur.

J'ai déjà demandé à Codersguru la même chose.

Ma question à lui était si j'utilise 1 EMA dans 30M TF, alors dans 1M TF il doit être 30 EMA.

Et il a répondu que ce n'était pas le cas. Mais je n'étais pas satisfait, peut-être qu'il y avait un autre moyen, alors je l'ai trouvé ici. Mais si ce n'est pas utile, c'est très bien pour moi... . Au moins, je sais quel est le résultat.

BTW, merci pour le dernier RSIOMA mladen, je l'aime beaucoup, et merci à fxbs et Kalenzo aussi, pour ce grand indicateur.

Salutations,

IIN

 

Le problème est le suivant :

Cette idée avec les MA's est probablement la plus vieille idée de l'analyse technique.

Je suis d'accord que des endroits comme TSD sont des endroits pour partager des idées et des connaissances.

Mais s'il vous plaît, personne ne devrait essayer de le faire de cette façon :

Je me demandais juste si l'un d'entre vous avait déjà pensé à faire une correspondance entre le même indicateur sur un tf supérieur et sur un tf inférieur en même temps.....

Allez, qu'est-ce qu'on essaie de faire ici, de toute façon ?

J'espère que maintenant j'ai été clair

salutations

mladen

iinzall :
Je suis sérieux mladen...

Je suis un débutant et non un programmeur, peut-être que la méthode de Scrat n'est pas parfaite, mais je peux peut-être l'utiliser. Je vais l'essayer. Si elle est utile, je l'utiliserai. Si ce n'est pas le cas, je chercherai à nouveau une autre méthode ou un autre indicateur.

J'ai déjà demandé à Codersguru la même chose.

Ma question à lui était si j'utilise 1 EMA dans 30M TF, alors dans 1M TF il doit être 30 EMA.

Et il a répondu que ce n'était pas le cas. Mais je n'étais pas satisfait, peut-être qu'il y avait un autre moyen, alors je l'ai trouvé ici. Mais si ce n'est pas utile, c'est très bien pour moi... . Au moins, je connais le résultat.

BTW, merci pour le dernier RSIOMA mladen, je l'aime beaucoup, et merci à fxbs et Kalenzo aussi, pour ce grand indicateur.

Salutations,

IIN
 

Bon, je suis officiellement un idiot et je viens d'offenser tout le monde dans ce fil. Ai-je bien fait cette fois ?

mes excuses.

mladen:
Le problème est le suivant :

Cette idée avec les MA's est probablement la plus vieille idée de l'analyse technique.

Je suis d'accord que des endroits comme TSD sont des endroits pour partager des idées et des connaissances.

Mais s'il vous plaît, personne ne devrait essayer de le faire de cette façon :

Allez, que diable essayons-nous de faire ici, de toute façon ?

J'espère que j'ai été clair

Salutations

mladen
 

Quelqu'un sait-il où se trouvent ces indis MTF ?

J'ai cherché partout des versions MTF de celles-ci. Quelqu'un le sait-il ou l'a-t-il vu ?

Merci.

Dossiers :