Bonjour,
Existe-t-il une version MT4 de celle-ci ?
Merci beaucoup.
Essayez cette solution rapide et pratique.
/* * Placez le fichier SmoothAlgorithms.mqh * dans le dossier terminal_data_folder\MQL5\Include */ //+------------------------------------------------------------------+ //|JFatl.mq4 | //|Copyright © 2010, Nikolay Kositsin | //|Khabarovsk, farria@mail.redcom.ru | //+------------------------------------------------------------------+ #property copyright "2010, Nikolay Kositsin" #property link "farria@mail.redcom.ru" #property version "1.00" //---- dessin de l'indicateur dans la fenêtre principale #property indicator_chart_window //---- un tampon est utilisé pour le calcul et l'affichage de l'indicateur #property indicator_buffers 1 //---- une seule parcelle est utilisée #property indicator_plots 1 //---- dessin de l'indicateur sous forme de ligne #property indicator_type1 DRAW_LINE //---- couleur bleue est utilisée comme couleur de la ligne d'indicateur #property indicator_color1 Blue //---- la ligne indicatrice est une courbe continue #property indicator_style1 STYLE_SOLID //---- La largeur de la ligne de l'indicateur est égale à 2 #property indicator_width1 2 //---- affichage de l'étiquette de la ligne d'indicateur #property indicator_label1 "JFATL" #property strict //+-----------------------------------+ //| Paramètres d'entrée de l'indicateur //+-----------------------------------+ enum Applied_price_ //Type de constante { PRICE_CLOSE_ = 1, //PRICE_CLOSE PRICE_OPEN_, //PRICE_OPEN PRICE_HIGH_, //PRICE_HIGH PRICE_LOW_, //PRICE_LOW PRICE_MEDIAN_, //PRICE_MEDIAN PRICE_TYPICAL_, //PRIX_TYPIQUE PRICE_WEIGHTED_, //PRIX_PONDÉRÉ PRICE_SIMPLE, //PRICE_SIMPLE PRICE_QUARTER_, //PRIX_TRIMESTRE PRICE_TRENDFOLLOW0_, //PRIX_TENDANCE_SUIVANTE0_ PRICE_TRENDFOLLOW1_ //PRIX_TENDANCE_SUIVANTE_1 }; input int JMALength_=5; // Profondeur du lissage JMA input int JMAPhase_=100; // Paramètre de lissage JMA, //qui change dans l'intervalle -100 ... +100 //a un impact sur la qualité du processus de transition ; input Applied_price_ IPC=PRICE_CLOSE_; // Constante de prix /* utilisé pour le calcul de l'indicateur (1-CLOSE, 2-OPEN, 3-HIGH, 4-LOW, 5-MEDIAN, 6-TYPICAL, 7-WEIGHTED, 8-SIMPLE, 9-QUARTER, 10-TRENDFOLLOW, 11-0.5 * TRENDFOLLOW.) */ input int FATLShift = 0; // Décalage horizontal du FATL en barres input int PriceShift=0; // Décalage vertical du FATL en points //---+ //---- déclaration et initialisation d'une variable pour stocker le nombre de barres calculées int FATLPeriod=39; //---- déclaration d'un tableau dynamique qui //---- sera utilisé comme tampon indicateur double ExtLineBuffer[]; int start,fstart,FATLSize; double dPriceShift; //+-----------------------------------------------------------+ //| Initialisation des coefficients du filtre numérique | //+-----------------------------------------------------------+ double FATLTable[]= { +0.4360409450, +0.3658689069, +0.2460452079, +0.1104506886, -0.0054034585, -0.0760367731, -0.0933058722, -0.0670110374, -0.0190795053, +0.0259609206, +0.0502044896, +0.0477818607, +0.0249252327, -0.0047706151, -0.0272432537, -0.0338917071, -0.0244141482, -0.0055774838, +0.0128149838, +0.0226522218, +0.0208778257, +0.0100299086, -0.0036771622, -0.0136744850, -0.0160483392, -0.0108597376, -0.0016060704, +0.0069480557, +0.0110573605, +0.0095711419, +0.0040444064, -0.0023824623, -0.0067093714, -0.0072003400, -0.0047717710, +0.0005541115, +0.0007860160, +0.0130129076, +0.0040364019 }; //+------------------------------------------------------------------+ //| Description de la fonction iPriceSeries()| //| Description de la fonction iPriceSeriesAlert() | //| Description de la classe CJJMA| //+------------------------------------------------------------------+ #include <SmoothAlgorithms.mqh> //+------------------------------------------------------------------+ //| Fonction d'initialisation de l'indicateur personnalisé //+------------------------------------------------------------------+ void OnInit() { //---- définir le tableau dynamique ExtLineBuffer comme tampon d'indicateur SetIndexBuffer(0,ExtLineBuffer,INDICATOR_DATA); //---- décalage horizontal de l'indicateur par FATLShift PlotIndexSetInteger(0,PLOT_SHIFT,FATLShift); //---- initialisation des variables FATLSize=ArraySize(FATLTable); start=FATLSize+30; //---- effectuant le décalage du début du dessin de l'indicateur PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,start); //---- initialisation d'une variable pour le nom court de l'indicateur string shortname; StringConcatenate(shortname,"JFATL(",JMALength_," ,",JMAPhase_,")"); //---- créer une étiquette à afficher dans la DataWindow PlotIndexSetString(0,PLOT_LABEL,shortname); //---- création du nom à afficher dans une sous-fenêtre séparée et dans une info-bulle IndicatorSetString(INDICATOR_SHORTNAME,shortname); //---- détermination de la précision de l'affichage des valeurs de l'indicateur IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1); //---- restriction pour dessiner des valeurs vides pour l'indicateur PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0); //---- initialisation du décalage vertical dPriceShift=_Point*PriceShift; //---- déclaration de la variable de la classe CJJMA du fichier SmoothAlgorithms.mqh CJJMA JMA; //---- mise en place d'alertes pour des valeurs inacceptables de variables externes JMA.JJMALengthCheck("Length_", JMALength_); JMA.JJMAPhaseCheck("Phase_", JMAPhase_); //---- } //+------------------------------------------------------------------+ //| Fonction d'itération de l'indicateur personnalisée| //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, // quantité d'historique en barres à l'heure actuelle const int prev_calculated,// nombre de barres calculé lors de l'appel précédent const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //---- vérification du nombre de barres suffisant pour le calcul if(rates_total<start) return(0); ArraySetAsSeries(ExtLineBuffer, false); //---- déclarations de variables locales int first,bar; double jfatl,FATL; //---- calcul du "premier" indice de départ pour la boucle de recalcul des barres if(prev_calculated>rates_total || prev_calculated<=0) // vérification du premier démarrage du calcul d'un indicateur { first=FATLPeriod-1; // indice de départ pour le calcul de toutes les barres fstart=first; } else first=prev_calculated-1; // indice de départ pour le calcul des nouvelles barres //---- déclaration de la variable de la classe CJJMA du fichier SmoothAlgorithms.mqh static CJJMA JMA; //---- boucle principale de calcul de l'indicateur for(bar=first; bar<rates_total; bar++) { //---- formule pour le filtre FATL FATL=0.0; for(int iii=0; iii<FATLSize; iii++) FATL+=FATLTable[iii]*PriceSeries(IPC,rates_total-(bar-iii)-1,open,low,high,close); //---- un appel de la fonction JJMASeries. //---- Les paramètres de phase et de longueur ne sont pas modifiés à chaque mesure (Din = 0) jfatl=JMA.JJMASeries(fstart,prev_calculated,rates_total,0,JMAPhase_,JMALength_,FATL,bar,false); //---- initialisation de la cellule du tampon indicateur par la valeur obtenue de FATL ExtLineBuffer[bar]=jfatl+dPriceShift; } //---- return(rates_total); } //+------------------------------------------------------------------+
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
JFATL:
L'indicateur est un hybride de filtre numérique FATL et de moyenne adaptative analogique JMA.
Author: Nikolay Kositsin