Indicateur technique

Prédicteur de Prix Futur avec Réseaux de Neurones
MetaTrader4
Prédicteur de Prix Futur avec Réseaux de Neurones

Auteur : gpwr Historique des Versions : 26/06/2009 - ajout d'un nouvel indicateur BPNN Predictor avec Smoothing.mq4, où les prix sont lissés à l'aide de l'EMA avant les prédictions. 20/08/2009 - correction du code calculant la fonction d'activation des neurones pour éviter les exceptions arithmétiques ; mise à jour de BPNN.cpp et BPNN.dll 21/08/2009 - ajout du nettoyage de la mémoire à la fin de l'exécution de la DLL ; mise à jour de BPNN.cpp et BPNN.dll Brève théorie des Réseaux de Neurones : Un réseau de neurones est un modèle ajustable des sorties en fonction des entrées. Il se compose de plusieurs couches : couche d'entrée, qui contient les données d'entrée couche cachée, composée de nœuds de traitement appelés neurones couche de sortie, qui se compose d'un ou plusieurs neurones, dont les sorties sont les sorties du réseau. Tous les nœuds des couches adjacentes sont interconnectés par des connexions appelées synapses. Chaque synapse a un coefficient d'échelle assigné, par lequel les données propagées à travers la synapse sont multipliées. Ces coefficients d'échelle sont appelés poids (w[i][j][k]). Dans un Réseau de Neurones à Propagation Avant (FFNN), les données sont propagées des entrées aux sorties. Voici un exemple de FFNN avec une couche d'entrée, une couche de sortie et deux couches cachées : La topologie d'un FFNN est souvent abrégée comme suit : <# d'entrées> - <# de neurones dans la première couche cachée> - <# de neurones dans la deuxième couche cachée> -...- <# de sorties>. Le réseau ci-dessus peut être désigné comme un réseau 4-3-3-1. Les données sont traitées par les neurones en deux étapes, respectivement représentées dans le cercle par un signe de somme et un signe d'étape : Tous les entrées sont multipliées par les poids associés et sommées Les sommes résultantes sont traitées par la fonction d'activation du neurone, dont la sortie est la sortie du neurone. C'est la fonction d'activation du neurone qui donne une non-linéarité au modèle de réseau de neurones. Sans elle, il n'y a aucune raison d'avoir des couches cachées, et le réseau de neurones devient un modèle autorégressif linéaire (AR). Les fichiers de bibliothèque joints pour les fonctions NN permettent de sélectionner entre trois fonctions d'activation : sigmoïde sigm(x)=1/(1+exp(-x)) (#0) tangente hyperbolique tanh(x)=(1-exp(-2x))/(1+exp(-2x)) (#1) fonction rationnelle x/(1+|x|) (#2) Le seuil d'activation de ces fonctions est x=0. Ce seuil peut être déplacé le long de l'axe x grâce à une entrée supplémentaire de chaque neurone, appelée entrée de biais, qui a également un poids assigné. Le nombre d'entrées, de sorties, de couches cachées, de neurones dans ces couches, et les valeurs des poids des synapses décrivent complètement un FFNN, c'est-à-dire le modèle non linéaire qu'il crée. Pour trouver les poids, le réseau doit être entraîné. Lors d'un entraînement supervisé, plusieurs ensembles d'entrées passées et les sorties attendues correspondantes sont fournis au réseau. Les poids sont optimisés pour atteindre l'erreur la plus petite entre les sorties du réseau et les sorties attendues. La méthode la plus simple d'optimisation des poids est la rétropropagation des erreurs, qui est une méthode de descente de gradient. La fonction d'entraînement jointe Train() utilise une variante de cette méthode, appelée Rétropropagation Améliorée Plus (iRProp+). http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.1332 Le principal inconvénient des méthodes d'optimisation basées sur le gradient est qu'elles trouvent souvent un minimum local. Pour des séries chaotiques telles qu'une série de prix, la surface d'erreur d'entraînement a une forme très complexe avec de nombreux minima locaux. Pour de telles séries, un algorithme génétique est une méthode d'entraînement préférée. Fichiers joints : BPNN.dll - fichier de bibliothèque BPNN.zip - archive de tous les fichiers nécessaires pour compiler BPNN.dll en C++ BPNN Predictor.mq4 - indicateur prédisant les prix d'ouverture futurs BPNN Predictor with Smoothing.mq4 - indicateur prédisant les prix d'ouverture lissés Le fichier BPNN.cpp contient deux fonctions : Train() et Test(). Train() est utilisé pour entraîner le réseau en fonction des valeurs d'entrée passées fournies et des valeurs de sortie attendues. Test() est utilisé pour calculer les sorties du réseau en utilisant les poids optimisés trouvés par Train(). Voici la liste des paramètres d'entrée (vert) et de sortie (bleu) de Train() : double inpTrain[] - Données d'entraînement d'entrée (tableau 1D contenant des données 2D, les plus anciennes en premier) double outTarget[] - Données cibles de sortie pour l'entraînement (données 2D sous forme de tableau 1D, les plus anciennes en premier) double outTrain[] - Tableau 1D de sortie pour contenir les sorties nettes de l'entraînement int ntr - # d'ensembles d'entraînement int UEW - Utiliser des poids externes pour l'initialisation (1=utiliser extInitWt, 0=utiliser rnd) double extInitWt[] - Tableau 1D d'entrée pour contenir un tableau 3D de poids initiaux externes double trainedWt[] - Tableau 1D de sortie pour contenir un tableau 3D de poids entraînés int numLayers - # de couches incluant l'entrée, les couches cachées et la sortie int lSz[] - # de neurones dans les couches. lSz[0] est # des entrées du réseau int AFT - Type de fonction d'activation des neurones (0:sigm, 1:tanh, 2:x/(1+x)) int OAF - 1 active la fonction d'activation pour la couche de sortie ; 0 désactive int nep - Max # d'époques d'entraînement double maxMSE - Max MSE ; l'entraînement s'arrête une fois maxMSE atteint. Voici la liste des paramètres d'entrée (vert) et de sortie (bleu) de Test() : double inpTest[] - Données de test d'entrée (données 2D sous forme de tableau 1D, les plus anciennes en premier) double outTest[] - Tableau 1D de sortie pour contenir les sorties nettes de l'entraînement (les plus anciennes en premier) int ntt - # d'ensembles de test double extInitWt[] - Tableau 1D d'entrée pour contenir un tableau 3D de poids initiaux externes int numLayers - # de couches incluant l'entrée, les couches cachées et la sortie int lSz[] - # de neurones dans les couches. lSz[0] est # des entrées du réseau int AFT - Type de fonction d'activation des neurones (0:sigm, 1:tanh, 2:x/(1+x)) int OAF - 1 active la fonction d'activation pour la couche de sortie ; 0 désactive Que vous utilisiez ou non la fonction d'activation dans la couche de sortie (valeur du paramètre OAF) dépend de la nature des sorties. Si les sorties sont binaires, ce qui est souvent le cas dans les problèmes de classification, alors la fonction d'activation doit être utilisée dans la couche de sortie (OAF=1). Veuillez prêter attention à ce que la fonction d'activation #0 (sigmoïde) a des niveaux saturés de 0 et 1, tandis que les fonctions d'activation #1 et #2 ont des niveaux de -1 et 1. Si la sortie du réseau est une prédiction de prix, alors aucune fonction d'activation n'est nécessaire dans la couche de sortie (OAF=0). Exemples d'utilisation de la bibliothèque NN : BPNN Predictor.mq4 - prédit les futurs prix d'ouverture. Les entrées du réseau sont les variations de prix relatives : x[i]=Open[test_bar]/Open[test_bar+delay[i]]-1.0 où delay[i] est calculé comme un nombre de Fibonacci (1,2,3,5,8,13,21..). La sortie du réseau est la variation relative prédite du prochain prix. La fonction d'activation est désactivée dans la couche de sortie (OAF=0). Paramètres de l'indicateur : extern int lastBar - Dernière barre dans les données passées extern int futBars - # de barres futures à prédire extern int numLayers - # de couches incluant l'entrée, cachées et sortie (2..6) extern int numInputs - # d'entrées extern int numNeurons1 - # de neurones dans la première couche cachée ou de sortie extern int numNeurons2 - # de neurones dans la deuxième couche cachée ou de sortie extern int numNeurons3 - # de neurones dans la troisième couche cachée ou de sortie extern int numNeurons4 - # de neurones dans la quatrième couche cachée ou de sortie extern int numNeurons5 - # de neurones dans la cinquième couche cachée ou de sortie extern int ntr - # d'ensembles d'entraînement extern int nep - Max # d'époques extern int maxMSEpwr - sets maxMSE=10^maxMSEpwr ; l'entraînement s'arrête < maxMSE extern int AFT - Type de fonction d'activation (0:sigm, 1:tanh, 2:x/(1+x)) L'indicateur trace trois courbes sur le graphique : couleur rouge - prévisions des prix futurs couleur noire - prix d'ouverture passés utilisés comme sorties attendues pour le réseau couleur bleue - sorties du réseau pour les entrées d'entraînement BPNN Predictor.mq4 - prédit les futurs prix d'ouverture lissés. Il utilise un lissage EMA avec une période smoothPer. Configuration : Copiez BPNN.DLL dans C:\Program Files\MetaTrader 4\experts\libraries Dans MetaTrader : Outils - Options - Conseillers Experts - Autoriser les imports DLL Vous pouvez également compiler votre propre fichier DLL en utilisant les codes sources de BPNN.zip. Recommandations : Un réseau avec trois couches (numLayers=3 : une entrée, une cachée et une sortie) est suffisant pour la grande majorité des cas. Selon le Théorème de Cybenko (1989), un réseau avec une couche cachée est capable d'approximer n'importe quelle fonction continue multivariée avec le degré de précision souhaité ; un réseau avec deux couches cachées est capable d'approximer n'importe quelle fonction multivariée discontinue. Le nombre optimal de neurones dans la couche cachée peut être trouvé par essai et erreur. Les règles empiriques suivantes peuvent être trouvées dans la littérature : # de neurones cachés = (# d'entrées + # de sorties) / 2, ou SQRT(# d'entrées * # de sorties). Gardez une trace de l'erreur d'entraînement, rapportée par l'indicateur dans la fenêtre d'experts de MetaTrader. Pour la généralisation, le nombre d'ensembles d'entraînement (ntr) doit être choisi entre 2 et 5 fois le nombre total de poids dans le réseau. Par exemple, par défaut, BPNN Predictor.mq4 utilise un réseau 12-5-1. Le nombre total de poids est (12+1)*5+6=71. Par conséquent, le nombre d'ensembles d'entraînement (ntr) doit être d'au moins 142. Le concept de généralisation et de mémorisation (sur-apprentissage) est expliqué sur le graphique ci-dessous. Les données d'entrée au réseau doivent être transformées en stationnaires. Les prix Forex ne sont pas stationnaires. Il est également recommandé de normaliser les entrées dans la plage -1..+1. Le graphique ci-dessous montre une fonction linéaire y=b*x (x-entrée, y-sortie) dont les sorties sont corrompues par du bruit. Ce bruit ajouté fait que les sorties mesurées de la fonction (points noirs) dévient d'une ligne droite. La fonction y=f(x) peut être modélisée par un réseau de neurones à propagation avant. Le réseau avec un grand nombre de poids peut être ajusté aux données mesurées avec une erreur nulle. Son comportement est montré comme la courbe rouge passant par tous les points noirs. Cependant, cette courbe rouge n'a rien à voir avec la fonction linéaire originale y=b*x (verte). Lorsque ce réseau surajusté est utilisé pour prédire de futures valeurs de la fonction y(x), cela entraînera de grandes erreurs en raison de l'aléa du bruit ajouté. En échange de la diffusion de ces codes, l'auteur a une petite faveur à demander. Si vous avez pu créer un système de trading rentable basé sur ces codes, merci de partager votre idée avec moi en envoyant un email directement à vlad1004@yahoo.com. Bonne chance !

2009.06.26
Comprendre l'Indicateur MTF RSI : Optimisez votre Trading
MetaTrader4
Comprendre l'Indicateur MTF RSI : Optimisez votre Trading

L'Indicateur MTF RSI (Relative Strength Index Multi-Timeframe) est un outil essentiel pour les traders sur MetaTrader, basé sur le célèbre RSI. Cet oscillateur de momentum en analyse technique mesure la vitesse et l'ampleur des mouvements de prix en comparant les variations de clôture à la hausse et à la baisse. Développé par J. Welles Wilder, le RSI a été publié pour la première fois dans le magazine Commodities en juin 1978. Dans MetaTrader, le RSI est déjà inclus en tant qu'indicateur technique standard, mais il est limité à l'intervalle de temps actuel. Parfois, il est souhaitable d'avoir un RSI qui affiche des périodes de temps supérieures. L'Indicateur MTF RSI que nous vous présentons ici comporte un paramètre supplémentaire - TimeFrame. Grâce à ce paramètre, vous pouvez définir un intervalle de temps supérieur à partir duquel le RSI calculera ses valeurs. Gardez à l'esprit que, lorsque vous utilisez des intervalles de temps supérieurs, la forme de la ligne de l'indicateur peut apparaître plus rugueuse. Paramètres de l'Indicateur MTF RSI : TimeFrame : Valeur par défaut est 0 - cela signifie l'intervalle de temps actuel. Pour d'autres intervalles : 1=M1, 5=M5, 15=M15, 30=M30, 60=H1, 240=H4, 1440=D1, 10080=W1, 43200=MN1. RSIPeriod : Valeur par défaut est 14, qui représente le nombre de périodes utilisées pour le calcul. Applied_price : Valeur par défaut est 0 - cela signifie que le prix de clôture est utilisé pour les calculs. Pour d'autres types de prix : 0-CLOSE, 1-OPEN, 2-HIGH, 3-LOW, 4-MEDIAN, 5-TYPICAL, 6-WEIGHTED. Shift : Valeur par défaut est 0. Ce paramètre décale l'ensemble de l'indicateur de Shift barres vers la droite sur le graphique. Exemple : Capture d'écran de l'Indicateur MTF RSI

2009.05.27
MTF MACD : Optimisez votre Analyse Technique sur MetaTrader
MetaTrader4
MTF MACD : Optimisez votre Analyse Technique sur MetaTrader

Le MTF MACD est un indicateur MetaTrader basé sur le célèbre MACD. Le Moving Average Convergence/Divergence, créé par Gerald Appel dans les années 60, est un outil d'analyse technique qui montre la différence entre une moyenne mobile exponentielle (EMA) rapide et une EMA lente des prix de clôture. De plus, il possède une ligne de signal qui est une moyenne mobile simple (SMA) de la valeur principale de l'indicateur. Le MACD est un indicateur de suivi de tendance, conçu pour identifier les changements de tendance. En revanche, il n'est généralement pas recommandé dans des conditions de marché range. Dans MetaTrader, vous trouverez déjà le MACD en tant qu'indicateur technique standard. Cependant, celui-ci ne peut être utilisé que pour le timeframe actuel. Lorsque l'on recherche une tendance, il est très utile d'avoir le MACD affichant des timeframes supérieurs. Le MTF MACD présenté ici dispose d'un paramètre supplémentaire : le TimeFrame. Vous pouvez l'utiliser pour configurer un timeframe supérieur à partir duquel le MACD calculera ses valeurs. Étant donné que les valeurs proviennent des barres, l'utilisation de timeframes plus élevés vous permettra d'observer une forme plus grossière des lignes de l'indicateur. Paramètres du MTF MACD : TimeFrame La valeur par défaut est 0, ce qui signifie le timeframe actuel. Pour d'autres timeframes : 1=M1, 5=M5, 15=M15, 30=M30, 60=H1, 240=H4, 1440=D1, 10080=W1, 43200=MN1. FastEMA La valeur par défaut est 12. Cela correspond à la moyenne mobile exponentielle rapide. SlowEMA La valeur par défaut est 26. Cela correspond à la moyenne mobile exponentielle lente. Signal La valeur par défaut est 9. Cela correspond à la ligne de signal, qui est une moyenne mobile simple. Applied_price La valeur par défaut est 0, ce qui signifie que le prix de clôture est utilisé pour les calculs de MA. Pour d'autres types de prix : 0-CLOSE, 1-OPEN, 2-HIGH, 3-LOW, 4-MEDIAN, 5-TYPICAL, 6-WEIGHTED. Shift La valeur par défaut est 0. Ce paramètre déplace l'ensemble de l'indicateur par le nombre de bars défini par Shift vers la droite sur le graphique. Exemple : Capture d'écran du MTF MACD

2009.05.27
Comprendre les Pourcentages de Gains et Pertes en Trading
MetaTrader4
Comprendre les Pourcentages de Gains et Pertes en Trading

Salut à tous, traders ! Auteur : Arif E. Nugroho arif_endro@vectra.web.id Il n'est pas toujours évident de suivre l'évolution de nos investissements, n'est-ce pas ? L'une des questions qui se posent souvent est : quel est le pourcentage actuel de gains ou de pertes sur une période donnée ? J'ai récemment trouvé une solution qui permet d'afficher ces pourcentages quotidiens, hebdomadaires et mensuels directement dans notre terminal. Cela peut vraiment nous aider à déterminer si un actif est suracheté ou survendu à un moment précis, car chaque paire a ses propres plages de prix quotidiennes, hebdomadaires et mensuelles. Voici un aperçu de cet indicateur : il montre les gains en pourcentage pour la journée, la semaine et le mois. Vous pouvez personnaliser les couleurs de l'indicateur dans les paramètres. Dans cet exemple, le rouge représente une perte et le bleu un gain. De plus, vous avez la possibilité d'ajuster la taille de la police via le paramètre FontSize. J'ai également ajouté une fonctionnalité qui affiche les niveaux de pourcentage quotidien en hausse ou en baisse de 0,5 %, 1,0 %, 1,5 % et 2,0 %. Cette option peut être activée dans les paramètres de l'indicateur avec ShowPriceLabel, qui est désactivée par défaut. Si vous activez cette option, l'indicateur affichera comme suit : Alors, qu'attendez-vous ? Intégrez cet outil à votre arsenal de trading et commencez à suivre vos performances comme un pro !

2009.05.19
Indicateur Doji : Comprendre et Personnaliser pour vos Trades
MetaTrader4
Indicateur Doji : Comprendre et Personnaliser pour vos Trades

Version 1 1. Lecture des doji :   a. Possibilité de définir une longueur minimale pour la mèche supérieure   b. Possibilité de définir une longueur minimale pour la mèche inférieure 2. Lecture des doji gravestone :   a. Possibilité de définir une longueur minimale pour la mèche supérieure   b. Possibilité de définir une longueur maximale pour la mèche inférieure 3. Lecture des doji dragonfly :   a. Possibilité de définir une longueur maximale pour la mèche supérieure   b. Possibilité de définir une longueur minimale pour la mèche inférieure 4. Alerte possible lors de l'apparition d'une nouvelle bougie, si désiré. Version 2 Pour personnaliser votre indicateur, voici les options disponibles : - AnAlert : activez true si vous souhaitez être alerté lors de l'apparition d'un nouveau doji. - ShowCandleBox : activez true si vous voulez que la bougie doji soit affichée dans un rectangle. - BoxColor : choisissez votre couleur préférée pour le rectangle. - ShowStar : activez true pour afficher une étoile au-dessus de la bougie. - StarColor : choisissez la couleur de votre étoile. - StarWidth : ajustez la largeur de l'étoile. - ShowText : activez true pour afficher le nom du doji. - FontColor : choisissez la couleur du texte. - FontSize : définissez la taille de la police. - VerticalText : si true, le texte s'affichera verticalement. - MyBrokerHas5Digits : activez true si vous utilisez un broker à 5 décimales. Pour la détection des doji : - FindRegularDoji : activez true pour que l'indicateur recherche des doji réguliers.      MinLengthOfUpTail : taille minimale pour la longueur de la mèche supérieure.      MinLengthOfLoTail : taille minimale pour la longueur de la mèche inférieure.      MaxLengthOfBody : taille maximale pour la longueur du corps. Pour le doji dragonfly : - FindDragonflyDoji : activez true pour que l'indicateur recherche des doji dragonfly.      MaxLengthOfUpTail1 : taille maximale pour la longueur de la mèche supérieure.      MinLengthOfLoTail1 : taille minimale pour la longueur de la mèche inférieure.      MaxLengthOfBody1 : taille maximale pour la longueur du corps. Pour le doji gravestone : - FindGravestoneDoji : activez true pour que l'indicateur recherche des doji gravestone.      MinLengthOfUpTail2 : taille minimale pour la longueur de la mèche supérieure.      MaxLengthOfLoTail2 : taille maximale pour la longueur de la mèche inférieure.      MaxLengthOfBody2 : taille maximale pour la longueur du corps. Bien cordialement, heartnet http://mqlprogramming.blogspot.com

2009.05.19
Premier Précédent 347 348 349 350 351 352 353 354 355 356 357 Suivant Dernier