Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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.
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 ?
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
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
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 :
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
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,
IINBon, je suis officiellement un idiot et je viens d'offenser tout le monde dans ce fil. Ai-je bien fait cette fois ?
mes excuses.
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
mladenQuelqu'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.