Produits logiciels de Piligrimm - page 4

 

à Piligrim

Merci !
Vous l'avez très bien expliqué.
Suffisamment pour mettre en œuvre vos méthodes de manière programmatique.

 

À titre d'exemple d'utilisation d'indicateurs pour créer des systèmes de trading, je vais donner, dans une version simplifiée, une stratégie que j'ai implémentée dans le système de trading par réseau neuronal décrit dans la section " Exemple de construction d'un système de trading ". Après le week-end, je commencerai à déboguer ce système de trading, et une fois qu'il sera terminé, je le posterai dans ce fil de discussion comme exemple d'utilisation des indicateurs. Dans le système de trading, écrit par , j'ai utilisé plusieurs indicateurs. A titre d'exemple, je vais donner la stratégie basée uniquement sur deux d'entre eux, "Kristi_GrafModelWav", "Indicateur Trend". Mais je vais d'abord dire quelques mots sur les principes de ces indicateurs.

"Kristi_GrafModelWav" - construit sur la base de polynômes de la forme suivante:

GR1[i][0] = 0,6*(0,5*(-0,00000808108 +1,64312*(SD[i+5][4]-SD[i][4]) -0,387988*(SD[i][1]-SD[i][2]) +0,598535*(SD[i][2]-SD[i][3])

-0.468099*(SD[i+1][3]-SD[i][2])-0.461584*(SD[i+1][4]-SD[i][1])+SD[i][3])+0.5*((SD[i+2][1]-SD[i][3])-(SD[i+3][1]

-SD[i][4])+0.00000000861016*(SD[i][2]-SD[i][3])+(SD[i+19][3]-SD[i][4])+0.3*SD[i][3]+0.7*SD[i][4]))+0.4*((SD[i][1]

-SD[i+10][3])-(SD[i][1]-SD[i+10][4])+0.00000000861016*(SD[i][2]-SD[i+10][3])+(SD[i][3]-SD[i+10][4])+SD[i][4]);.

Lessignaux SD sont obtenus selon le principe de la "fenêtre glissante" qui balaie l'historique des cotations à une profondeur donnée et en modifie la largeur. L'apprentissage des polynômes a été effectué sur des signaux obtenus sur la base de l' historique des cotations EURUSD M1. Lessignaux SD ont été passés par un groupe de transformées en ondelettes accordées selon différents paramètres. L'entraînement a été effectué à l'aide d'algorithmes de régression linéaire et de réseaux neuronaux formalisés réduits à la forme de polynômes. L'objectif des polynômes d'apprentissage était d'augmenter le caractère informatif d'un signal d'entrée en incluant des arguments retardés provenant de l'histoire passée et en filtrant les facteurs mineurs et interférents. Un autre objectif des polynômes d'apprentissage est de créer un groupe de signaux synthétisés sur la base de citations, portant les caractéristiques enfantines du signal principal, et recouvrant le spectre de ses changements possibles. Cela permet de s'assurer que les réseaux neuronaux qui entreront ce groupe de signaux auront la possibilité de "capter" les différentes harmoniques incluses dans le signal d'entrée et de subir un entraînement qualitatif. Bien que la formation ait été effectuée sur EURUSD M1, l'indicateur fonctionne sur tout instrument, toute période, tout marché. L'indicateur forme un groupe de 40 signaux synthétisés.

"Indicator Trend utilise à la base de son travail l'algorithme d'échantillonnage à seuil, développé par moi, le pas étant reconstruit en proportion de la dynamique des changements dans les cotations. Grâce à cet échantillonnage , on obtient des échantillons correspondant uniquement aux points extrêmes du signal, le signal est compressé, un filtrage profond est effectué en raison de l'élimination des bruits et des fluctuations insignifiantes. La reconstruction du signal sur chaque barre est effectuée par interpolation entre deux points d'échantillonnage adjacents. Dans les images ci-dessus, la ligne rouge, vous pouvez voir le signal reconstruit sur chaque barre, et les points de rupture correspondent aux points d'échantillonnage. Les indicateurs "Indicator Power" et "Indicator Channel" sont construits selon le même principe . Une telle compression du signal permet d'obtenir une étude approfondie de l'historique des citations avec un nombre relativement faible de points d'échantillonnage, ce qui réduit considérablement le temps et augmente la précision de l'entraînement du réseau neuronal lorsque des échantillons discrets sont introduits à l'entrée.

L'essence de la stratégie consistant à construire un système de trading basé sur deux indicateurs est la suivante. L'indicateur "Kristi_GrafModelWav" est utilisé comme source de signaux d'entrée, et l'indicateur "Indicator Trend" est utilisé comme signal source pour la formation du réseau neuronal. Le but de l'entraînement est de faire une prévision du futur point d'échantillonnage, qui déterminera la direction du mouvement des prix et son niveau approximatif. Pour synchroniser ces indicateurs, définissons la même longueur de l'échantillon d'entrée LengthSample . Dans les paramètres des indicateurs, définissons la permission d'enregistrer des données sur le disque avec une direction d'indexation à partir du début du tableau. Dans les paramètres de l' indicateur "Indicateur Trend", définissons le mode de sauvegarde des échantillons discrets, alors les niveaux de prix en points discrets (points d'arrêt dans l'image) et le numéro ordinal de l'échantillon LengthSample seront écrits sur le disque , définissons le mode statique de fonctionnement de l'indicateur. Ensuite, à l'arrivée de chaque nouvelle barre, l'historique complet sera recalculé et un tableau sera formé couvrant toute la longueur de l'échantillon LengthSample. Dans le tableau, créé par l'indicateur "Indicator Trend", nous avons reçu les comptages qui seront utilisés comme données par rapport auxquelles le réseau neuronal sera entraîné. Nous devons maintenant former un tableau qui sera alimenté à l'entrée du réseau neuronal. L'indicateur "Kristi_GrafModelWav" écrit sur le disque un tableau composé de 40 colonnes qui correspondent à ses signaux de sortie, et avec la longueur LengthSample. Nous devons sélectionner dans ce tableau les lignes correspondant aux points d'échantillonnage de l' indicateur "Indicateur Tendance". Ceci peut facilement être fait en utilisant le tableau obtenu à partir de l'indicateur "Indicateur Tendance", sa deuxième colonne contient les numéros ordinaux des échantillons des points d'échantillonnage. Puisque la longueur de l'échantillon d'entrée pour ces deux indicateurs est la même, ces numéros correspondront au tableau de l'indicateur "Kristi_GrafModelWav", en sélectionnant les lignes appropriées de l'indicateur "Kristi_GrafModelWav" nous effectuerons l'échantillonnage des données de l'indicateur "Kristi_GrafModelWav" de façon synchrone avec l'indicateur "Indicator Trend". Ainsi, nous avons obtenu le tableau d'entrée pour l'entraînement du réseau neuronal. Nous allons maintenant former le réseau neuronal. Nous devons maintenant utiliser le réseau neuronal formé pour effectuer des calculs et faire des prévisions en temps réel. Pour ce faire , définissez LengthSample = 1 dans les paramètres de l'indicateur "Kristi_GrafModelWav". A l'arrivée de chaque nouvelle barre, un tableau sera écrit sur le disque, constitué d'une seule ligne contenant les 40 valeurs du signal. Nous devons calculer le réseau neuronal aux moments de la formation d'un nouveau point de discrétisation de l' indicateur "Indicateur Tendance" selon l' algorithme d'apprentissage. Pour déterminer ces moments, il suffit d'utiliser deux variables globales, qui sont formées par l 'indicateur "Indicateur Trend". Dès que les valeurs de ces deux variables globales changent l'une par rapport à l'autre, cela signifie qu'un nouveau point d'échantillonnage a été formé. À ce stade, nous devons lire les données de l'indicateur "Kristi_GrafModelWav" sur le disque , les transmettre à l'entrée du réseau neuronal formé et effectuer le calcul. Nous obtiendrons une prévision du prochain point d'échantillonnage au moment où le dernier s'est formé. C'est une stratégie de système de trading basée sur les indicateurs que j'ai suggérés dans sa forme la plus simple. Vous pouvez construire des stratégies plus complexes en utilisant tous les indicateurs, cela augmentera la précision et la fiabilité des prédictions.

 

Pour avoir une meilleure idée de la fonctionnalité des indicateurs, voici l'instruction pour utiliser l'indicateur "Indicator Trend" comme exemple. S'il y a des commentaires, des suggestions de correction ou d'ajout, je les écouterai avec plaisir. Si vous êtes intéressé, je peux également fournir des instructions pour l'utilisation d'autres indicateurs.

=======================================================================================================

Indicateur Indicateur de tendance.

Cet indicateur "Indicateur Trend " est destiné à la création d'un modèle de tendance pour l'instrument auquel l'indicateur est attaché. "Indicator Trend " utilise comme base de travail l'algorithme d'échantillonnage à seuil que j'ai développé, avec un pas reconstructible en proportion de la dynamique de changement des cotations. Grâce à cet échantillonnage , on obtient des échantillons correspondant uniquement aux points extrêmes du signal, le signal est compressé et un filtrage profond est effectué en éliminant le bruit et les fluctuations insignifiantes. Le signal à chaque barre est reconstruit par interpolation entre deux points d'échantillonnage adjacents.

L'indicateur fonctionne sur tout instrument, toute période, tout marché. L'indicateur peut être utilisé pour concevoir des systèmes de trading mécaniques, et pour le trading manuel.

L'indicateur traite les données à l'arrivée d'une nouvelle barre. L'indicateur fonctionne en deux modes, statique et dynamique. En mode statique, l'indicateur construit un modèle de tendance pour toute la longueur de l'échantillon historique spécifié et recalcule toute sa longueur à l'arrivée d'une nouvelle barre, créant des modèles d'une longueur spécifiée, qui peuvent être affichés sur le graphique et enregistrés sur le disque. En mode dynamique, l'indicateur calcule la valeur uniquement pour la barre nouvellement reçue, accumulant progressivement les valeurs calculées au fur et à mesure que de nouvelles données arrivent. La longueur de l'historique traité est déterminée par la variable"LengthSample" dans l'onglet "Properties - Input parameters", la longueur de l'historique peut être quelconque.

La sauvegarde sur disque des valeurs de signal, calculées par l'indicateur, avec les permissions correspondantes dans les réglages, est possible dans deux variantes :

1). Sauvegarde des valeurs du signal sur chaque barre ;

2). Sauvegarde des valeurs uniquement points d'échantillonnage (rupture de tendance).

Les valeurs du signal dans les deux derniers points d'échantillonnage sont également sauvegardées dans les variables globales, les noms des variables globales peuvent être changés, cela vous permet de définir un nombre quelconque d'indicateurs avec différents niveaux de seuil pour un instrument et à travers les variables globales d'organiser la communication avec le conseiller expert ou d'autres indicateurs. Lorsque l'indicateur fonctionne, il est possible d'optimiser ses paramètres en reconstruisant le coefficient de seuil. Le choix d'une valeur seuil spécifique est déterminé par l'instrument et la période sur lesquels l'indicateur est installé ainsi que par la stratégie de trading que vous souhaitez mettre en œuvre sur la base de cet indicateur.

Le calcul est visualisé sur le graphique de l'instrument dans la fenêtre où l'indicateur est installé.

Les paramètres de fonctionnement sont définis dans l'onglet "Properties - Input Parameters" lors de l'installation de l'indicateur sur un graphique dans la fenêtre MetaTrader 4.


L'indicateur "Indicateur Tendance" a les paramètres d'entrée suivants :

1). LengthSample - longueur de l'historique traité ;

2). Seuil - coefficient de seuil ;

3). DynamicMode - mode de l'indicateur dynamique/statique.

4). SaveFileData - drapeau permettant d'écrire sur le disque les données calculées par l'indicateur ;

5). FileNameData - nom du fichier pour la sauvegarde des données ;

6). SaveFilePointsFracture - drapeau permettant d'écrire sur le disque les points d'échantillonnage calculés par l'indicateur ;

7). FileNamePointsFracture - nom du fichier pour l'enregistrement des points d'échantillonnage ;

8). Subscripting_MT4 - direction de l'indexation des tableaux à écrire sur le disque.

9). NameGlobalVariable0 - nom de la variable globale enregistrant la valeur du dernier point d'échantillonnage ;

10). NameGlobalVariable1 - nom de la variable globale enregistrant la valeur de l'avant-dernier point d'échantillonnage.


1). La longueur de l'historique traité est déterminée par la variable"LengthSample". La taille maximale n'est pas limitée. En même temps, il est nécessaire que dans la fenêtre et dans l'historique des symboles, avec lesquels l'indicateur travaille, il n'y ait pas moins de barres que"LengthSample + 1".

2). Facteur de seuil, définit le seuil d'échantillonnage en "points".

3). DynamicMode est un drapeau qui détermine le choix du mode de fonctionnement dynamique ou statique de l'indicateur, si DynamicMode = 1 - mode dynamique, si DynamicMode = 0 - mode statique. Le mode dynamique vous permet d'accélérer le travail de l'indicateur, car seules les nouvelles barres seront traitées au lieu de recalculer l'historique complet. En même temps, les valeurs calculées seront accumulées. Seules les données accumulées à la suite d'un calcul seront enregistrées dans le fichier et affichées dans le graphique, de même que si l'écriture sur le disque est activée. En mode statique, lorsqu'une nouvelle barre arrive, l'historique entier sera recalculé par la profondeur de"LengthSample". La longueur totale de l'historique traité sera enregistrée dans le fichier et affichée sur le graphique, et lorsque l'écriture sur disque est activée.

4). L'indicateur SaveFileData interdit à d'écrire sur le disque les données calculées par l'indicateur lorsque la valeur est 0, si un traitement ultérieur des données n'est pas nécessaire. Si un traitement ultérieur et la sauvegarde des données sur le disque sont nécessaires, SaveFileData doit être réglé sur 1.

5). FileNameData - nom du fichier dans lequel les données seront enregistrées sur le disque. Vous pouvez utiliser n'importe quel nom, mais l'extension du fichier doit rester inchangée.csv, sinon une erreur se produira lors de l'écriture du fichier. La taille maximale du tableau sauvegardé est déterminée par "LengthSample", mais le nombre de lignes qu'il contient peut être inférieur à"LengthSample", par le nombre de barres séparant le dernier point d'échantillonnage de la barre zéro.

6). Le drapeau SaveFilePointsFracture interdit à d'écrire sur le disque les prix dans les points d'échantillonnage calculés par l'indicateur lorsque la valeur est 0, si un traitement ultérieur des données n'est pas nécessaire. Si le traitement ultérieur des données et la sauvegarde sur disque sont nécessaires, la valeur SaveFilePointsFracture doit être fixée à 1.

7). FileNamePointsFracture - le nom du fichier où seront enregistrées les valeurs des prix dans les points d'échantillonnage et le numéro de série de la barre depuis le début de l'historique traité"LengthSample", correspondant à chaque point d'échantillonnage. Le nombre d'enregistrements dans ce fichier sera déterminé par le nombre de points d'échantillonnage obtenus sur la longueur d'historique égale à"LengthSample" avec le seuil fixé. En mode dynamique - le nombre de points d'échantillonnage formés depuis le début de l'indicateur. Le numéro de série de la barre, correspondant à chaque point d'échantillonnage, sera également calculé à partir du moment où l'indicateur démarre.

8). La variable Subscripting_MT4 - définit la direction de l'indexation du tableau écrit sur le disque, si nous la mettons à 1, l'indexation correspondra à celle utilisée dans MetaTrader 4, de la position de tête au zéro, si nous la mettons à 0, l'indexation standard sera de zéro à la position de tête. Il fait référence à la fois à FileNameData et à FileNamePointsFracture.

9). NameGlobalVariable0 - Nom de la variable globale qui stocke la valeur du prix au dernier point d'échantillonnage.

10). NameGlobalVariable1 - le nom de la variable globale enregistrant la valeur du prix à l'avant-dernier point de l'échantillonnage.


Lorsque l'indicateur fonctionne, le coin supérieur gauche du graphique affichera les informations sur la longueur de l'historique traité "LengthSample", la valeur du Seuil et le nombre de cycles travaillés par l'indicateur "AmountRunning".


Décompressez tout le contenu de l'archive Indicator Trend.rar et installez l'indicateur Indicator Trend.ex4 dans le dossier \experts\indicators, redémarrez le terminal MetaTrader 4, après quoi l'indicateur "Indicator Trend" apparaît dans la fenêtre des indicateurs personnalisés \Navigator\indicators/User Indicators\, il peut être installé sur le graphique dans la fenêtre MetaTrader 4.

 

S'il n'y a pas de questions sur les instructions ci-dessus pour le fonctionnement de l'indicateur "Indicateur Trend", je ne donnerai pas d'instructions pour d'autres indicateurs, mais seulement des extraits relatifs au principe de leur fonctionnement. Pour les indicateurs Kristi_GrafModelWav,"Indicateur Trend", je l'ai fait dans l'exemple de stratégie de trading, je vais donner pour "Indicateur Power". et "Indicateur Channel" .

=====================================================================================================

Indicateur Indicateur "Power".

L'idée, sur la base de laquelle l'indicateur" Power" a été développé , est de tracer dynamiquement la lutte entre la tendance haussière et baissière, qui a lieu sur le marché en ce moment. Si la tendance haussière est dominante, lorsque de nouvelles barres arrivent, l'indicateur monte sur la barre zéro proportionnellement à la force de la tendance, lorsque la tendance baissière est dominante - respectivement vers le bas. Si la tendance oscille légèrement d'un côté ou de l'autre, les valeurs de l'indicateur montrent une ligne droite, qui se déplace lentement sur sa longueur à partir du dernier point de rupture, proportionnellement à la force de la tendance dominante, et avec une augmentation significative de l'une des tendances, elle saute du côté correspondant, formant un nouveau point de rupture. " Indicateur Power " - utilise dans la base de son fonctionnement l'algorithme d'échantillonnage de seuil, développé par moi, avec le pas étant reconstruit en proportion de la dynamique des changements dans les cotations. Le résultat de cet échantillonnage est que nous obtenons des lectures qui ne correspondent qu'aux extrêmes du signal. Le niveau du signal, montré par l'indicateur, est déterminé par la force de la tendance dominante du moment, et change lentement en proportion de la force de la tendance, jusqu'à ce que le prochain point d'échantillonnage soit formé et fixe ce niveau.

Indicateur Indicateur "Channel".

Il y a deux tendances sur le marché, la tendance haussière est haussière, et la tendance baissière est baissière. Ces tendances ont un caractère différent, mais elles sont néanmoins dépendantes les unes des autres et s'influencent mutuellement. Cet indicateur repose sur l'idée de séparer ces deux tendances du flux général de données des citations, de les formaliser dans une série chronologique, reflétant leur développement et leur influence mutuelle, ainsi que le résultat de leur lutte. Indicateur "Indicateur Channel" crée un canal de tendance et reflète la dynamique de son comportement, en extrapolant la direction des tendances du marché. La ligne supérieure montre le caractère d'une tendance haussière sous l'influence d'une tendance baissière, la ligne inférieure montre le caractère d'une tendance baissière sous l'influence d'une tendance haussière, la ligne du milieu est le résultat de leur lutte, et en fait est l'une des harmoniques de tendance correspondant au niveau spécifié de l'échantillonnage du flux de cotations. Un niveau d'échantillonnage différent permet de séparer les harmoniques ayant des caractéristiques amplitude-fréquence différentes. "Indicator Channel " - utilise à la base de son travail mon algorithme d'échantillonnage à seuil développé avec une étape reconstruite en proportion de la dynamique des changements dans les cotations. Grâce à cet échantillonnage , nous obtenons les échantillons correspondant aux points extrêmes du signal pour chaque tendance séparément. Le niveau du signal, pour chacune des trois lignes de l'indicateur, est déterminé par la dynamique de la tendance correspondante et change lentement en fonction de la force de la tendance, et de la nature de la prévalence de l'une sur l'autre, jusqu'à ce que le point de discrétisation suivant se forme et fixe ce niveau.

Les composants informatifs de l'indicateur sont : le rétrécissement et l'élargissement du canal, les angles de divergence des rayons supérieurs et inférieurs, les points d'inflexion et les moments de renversement de la ligne centrale du canal. Lorsque de nouvelles barres sont reçues, l'indicateur reflète dynamiquement la tendance changeante du marché, en reconstruisant les rayons depuis le dernier point de rupture jusqu'à la première barre.

 

Je pense que le prix que vous avez fixé est beaucoup trop élevé, car il est presque comparable aux produits logiciels bien connus, cela peut être vos développements sont grands, mais nous ne le savons que par vos mots.Mais si les indicateurs proposés à l'achat sont écrits dans le même esprit, la construction d'un Expert Advisor basé sur eux, qui à mon avis nécessite un grand nombre d'expériences, requiert probablement au moins un ordinateur "Elbrus" :)).J'ai essayé d'utiliser le plus simple Expert Advisor basé sur celui-ci mais j'ai abandonné parce que mon PC pas trop faible pouvait à peine haleter, alors que je voulais le tester sur l'ensemble de l'historique - vous savez comment il a été optimisé.

 
lovova:

Je pense que le prix que vous avez fixé est beaucoup trop élevé, car il est presque comparable aux produits logiciels bien connus, cela peut être vos développements sont grands, mais nous ne le savons que par vos mots.Mais si les indicateurs proposés à l'achat sont écrits dans le même esprit, la construction d'un Expert Advisor basé sur eux, qui à mon avis nécessite un grand nombre d'expériences, requiert probablement au moins un ordinateur "Elbrus" :)).J'ai essayé d'utiliser simple Expert Advisor basé sur elle, mais j'ai abandonné parce que mon ordinateur pas trop faible pourrait à peine pant, et de tester l'histoire entière vous le savez, et l'optimisation.

Merci pour le caillou. J'ai développé un modèle de tarification pour mon robot de trading, et j'en suis reconnaissant. J'apprécie l'effort que j'y consacre et je pense que les prix que je fixe sont appropriés au contenu. Comme il devrait être clair d'après ce que j'ai écrit sur les indicateurs, ils ne sont pas de type primitif, et bien que le code soit optimisé et pas très gros, l'algorithme de leur travail est plutôt compliqué, j'ai passé plusieurs années à les mettre à jour. Si nous les comparons avec des Expert Advisors de bon niveau, par exemple, les prix sont comparables, et il est beaucoup plus facile d'écrire un Expert Advisor où la majorité des blocs standards sont occupés, que de créer un algorithme efficace d'analyse du marché. Je n'ai pas encore de "nom", mais à en juger par cet article et par plusieurs sujets auxquels j'ai participé, je ne suis pas un inconnu dans ce secteur et j'ai une certaine expérience. Je ne dis pas que ces indicateurs doivent être achetés ensemble, je dis qu'ils ont été développés comme des outils complémentaires pour l'analyse multiforme de différents algorithmes de marché et qu'ils sont plus efficaces lorsqu'ils sont utilisés ensemble. Mais ils peuvent travailler séparément ou par paires, comme le montre l'exemple. En ce qui concerne les garanties, c'est une question distincte, je peux garantir que leur travail comme je l'ai écrit, mais si vous faites un profit en les utilisant dépend de la stratégie que vous allez construire sur eux, et si vous pensez que vous devez discuter de la stratégie avec moi, afin que je puisse recommander quelque chose, ayant une meilleure idée des possibilités des indicateurs. S'il y a des problèmes et des difficultés à maîtriser leur travail, je fournirai bien sûr un soutien technique.

Ce que je propose maintenant ne peut être comparé à l'indicateur Krisity, j'ai commencé à l'écrire pour maîtriser MQL, c'est le premier code que j'ai écrit dans un langage qui est nouveau pour moi. Je ne connaissais pas encore les possibilités du langage et des fonctions, et je ne m'étais pas fixé pour tâche de l'écrire de manière optimale, je ne faisais qu'apprendre. Bien sûr, tout semble et fonctionne différemment maintenant.

 

Je reçois des courriels me demandant de m'envoyer des versions de démonstration des indicateurs pour voir comment ils fonctionnent. Malheureusement, je n'ai pas de version de démonstration. Pour le compenser partiellement, pour donner une idée de la façon dont 3 indicateurs - "Indicateur Trend", "Indicateur Power" et "Indicateur Channel" fonctionnent en dynamique, j'ai décidé de démontrer leur travail sous forme de diapositives extraites du terminal de démonstration pendant plusieurs jours. Pour ne pas surcharger le sujet d'images, je ne montrerai que les diapositives reflétant les changements de la situation du marché et les modifications des valeurs des indicateurs. Le décalage horaire entre le terminal et le forum est de 2 heures. Première photo :

 

Deuxième diapositive, j'ai légèrement augmenté le seuil de l'indicateur "Indicator Trend", c'est mieux, je ne vais pas ajuster autre chose.