![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
En paraphrasant, nous pouvons dire que voici une preuve du fait qu'il est possible d'obtenir une classification linéairement séparable pour le marché.
Moi-même, après avoir lu quelques livres intelligents sur l'impossibilité de faire un "ou exclusif" par réseau linéaire, j'ai considéré qu'il était impossible d'utiliser des réseaux linéaires pour le marché (pour cette raison logique que le marché est beaucoup plus compliqué qu'un simple "ou exclusif" :).
Et peut-être que ce n'est pas le cas ? Peut-être que Yuri a raison ? Et nous n'avons pas besoin de nous taper un tas de livres sur le non-linéaire, mais juste de tout battre avec des avions ?
Une classification linéaire séparable peut être obtenue pour TOUT problème.
MAIS vous devez rechercher des modèles vous-même et former des entrées sur la base de ceux-ci, alors qu'un perseptron non linéaire peut trouver des modèles par lui-même.
Comme je l'ai écrit ci-dessus -- si vous obtenez des résultats positifs avec un perseptron linéaire, vous n'en avez pas besoin, les règles ont déjà été trouvées.
Modèle de réseau. S'exécute dans un thread séparé (CWinThread).
La version n'est pas encore terminée comme souhaité. Pas de contrôle d'interruption du fil.
La logique des opérations sur les fichiers est mal implémentée.
Beaucoup de commentaires incorrects sur le code.
15.07.08
Introduction de pointeurs pour lire les informations d'un flux de travail (pour réduire le nombre de copies).
Fonction de traçage de l'erreur quadratique moyenne (pour voir comment le réseau "voyage" vers des minima locaux).
Ajout d'un bouton pour arrêter les calculs et sauvegarder les poids actuels dans un fichier.
Ajout de commentaires normaux
16.08.08
Lecture du flux de travail via un timer (pour éviter de surcharger les données).
Introduction de pointeurs pour lire les informations du flux de travail (pour réduire le nombre de copies).
Fonction de traçage de l'erreur quadratique moyenne (pour voir comment le réseau "voyage" par des minima locaux).
Ajout d'un bouton pour arrêter les calculs et sauvegarder les poids actuels dans un fichier.
Ajout de commentaires normaux
16.08.08
Prolifération enviable de Sergeyev Alexey !
Une prolifération enviable de la part d'Alexei Sergeev !
+1 :)
- CreatePattern - crée un fichier de vecteurs d'entrée et de sortie, écrit également des informations sur le nombre de motifs et les dimensions de sortie/de sortie dans l'en-tête.
- Ensuite, VC++ lit et crée un tableau similaire en lui-même. Après le traitement de la grille, il crée un fichier avec le même nom mais avec le type .wgh où il enregistre les poids de la grille, les seuils et dans l'en-tête du modèle de grille (le nombre de couches, leurs dimensions)
- L'indicateur NeuroInd.mq4 (NeuroIndP) - il lit le fichier des poids et construit un modèle analogue en lui-même et utilise maintenant le même algorithme que CreatePattern pour parcourir les barres et donner à cette grille des entrées. L'indicateur construit le vecteur de sortie. NeuroIndP - se lit de la même façon mais indique les points d'entrée.
Le script CreatePattern et le NeuroInd sont "liés" par les mêmes algorithmes de vecteurs d'entrée mais avec la différence que le NeuroInd peut avoir une dimension différente du vecteur d'entrée (selon la façon dont nous décidons de traiter le réseau). Nous devrions essayer d'universaliser cet algorithme d'une manière ou d'une autre et le mettre dans un fichier séparé (par exemple dans <InputPatternAlg.mqh>). De cette façon, elle seule peut être modifiée dans ce complexe.
-----------
2. Je me suis débarrassé des CLayers intermédiaires dans la structure des classes VC++ (je pense que c'était une erreur :) + on économise légèrement de la mémoire + l'algorithme de calcul de la grille coïncide avec l'algorithme de calcul dans l'indicateur).
Plus je travaille avec le réseau, plus je me rends compte que ce ne sont pas tant les entrées que la paire entrée-sortie qui sont importantes. Les articles de la première page de StatBars seront très "utiles pour l'apprentissage" à cet égard. On a également remarqué que si la sortie est continue plutôt que binaire, l'approximation est plus rapide et probablement meilleure. (quelques paires d'entrées-sorties incohérentes et répétitives).
Les entrées sont bonnes en principe. Un carré de tirets (par exemple 5 périodes de 5 valeurs par période) donne des entrées uniques non répétitives.
Quant aux sorties...
J'ai testé la sortie avec le rapport (Up-Dn)/(Up+Dn). Il s'adapte rapidement.
Le seul inconvénient est que le ratio ne donne pas une idée approximative de la valeur absolue de Up et Dn, ce qui serait souhaitable :) Cela ne fait aucune différence que ce soit 10/20 ou 50/100.
Si nous sortons un simple Up-Dn (pour connaître l'ampleur de l'écart de prix et dans quelle direction) et que nous le comprimons ensuite avec une arctangente, il s'avère que la saturation des valeurs se produit.
(Je précise tout de suite que j'utilise l'arc-tangente et non la compression linéaire, car je ne veux pas chercher et lier les maxima).
Il est possible de diviser (Up-Dn) par le coefficient pour diminuer la valeur de saturation, alors la saturation se produira sur de grandes valeurs, qui seront déjà rares et il n'y aura pas de grande répétabilité et d'incohérence.
Une autre option consiste à essayer des réseaux séparés uniquement pour le changement de Up et de Dn.
Je me demande si quelqu'un a d'autres sorties?
Plus je travaille avec le réseau, plus je me rends compte que ce ne sont pas tant les entrées que la paire entrée-sortie qui sont importantes. Les articles de la première page de StatBars seront très "utiles pour l'apprentissage" à cet égard. On a également remarqué que si la sortie est continue plutôt que binaire, l'approximation est plus rapide et probablement meilleure. (quelques paires d'entrées-sorties incohérentes et répétitives).
Les entrées sont en principe bonnes. Un carré de tirets (par exemple 5 périodes de 5 valeurs par période) donne des entrées uniques non répétitives.
Quant aux sorties...
J'ai testé le rapport (Up-Dn)/(Up+Dn) sur la sortie. Il converge rapidement.
Le seul inconvénient - ce rapport ne donne pas une idée approximative de la valeur absolue de Up et Dn, ce qui serait souhaitable :) Cela ne fait aucune différence que ce soit 10/20 ou 50/100.
Si nous sortons un simple Up-Dn (pour connaître l'ampleur de l'écart de prix et dans quelle direction) et que nous le comprimons ensuite avec une arctangente, il s'avère que la saturation des valeurs se produit.
(Je précise tout de suite que j'utilise l'arc-tangente et non la compression linéaire, car je ne veux pas chercher et lier les maxima).
Il est possible de diviser (Up-Dn) par le coefficient pour diminuer la valeur de saturation, alors la saturation se produira sur de grandes valeurs, qui seront déjà rares et il n'y aura pas de grande répétabilité et incohérence.
Comme autre option, il est probablement nécessaire d'essayer des réseaux séparés uniquement pour changer Up et Dn.
Je me demande si quelqu'un a d'autres sorties?
Est-ce que vous alimentez une sorte de vecteur d'entrée à chaque barre et exigez une sortie à chaque barre ?