"New Neural" est un projet de moteur de réseau neuronal Open Source pour la plateforme MetaTrader 5. - page 12

 
NeuroOpenSource:
Il faudrait que ce soit quelque chose à coder. Nous attendons toujours l'administrateur du projet pour discuter du plan de mise en œuvre.

En fait, l'option est de s'inscrire sur la même sorsforge et de commencer...

Mais il est probablement préférable d'attendre que les métakwots fassent apparaître le bon environnement.

 
D'ailleurs, ce n'est pas une mauvaise idée de penser à la mise en parallèle. Seulement, je n'ai aucune idée de la manière dont cela peut être mis en œuvre.
 
LeXpert:
D'ailleurs, ce n'est pas une mauvaise idée de penser à la mise en parallèle. Seulement, je n'ai aucune idée de la manière dont cela peut être mis en œuvre.
Vous parlez de mettre en parallèle la formation NS ? À mon avis, il n'y a aucun moyen de le faire, à moins que le comité de mise en réseau ne le fasse d'une manière ou d'une autre.
 
LeXpert:
Au fait, c'est bien de penser au parallélisme. Seulement, je n'ai aucune idée de la façon de le mettre en œuvre.

Andrew, j'ai vérifié votre message sur la récursion, vous avez raison, la récursion est 1,5 fois plus lente et limitée en profondeur, donc les boucles gagnent sans ambiguïté.


Ne vous inquiétez pas pour la mise en parallèle, tant qu'il n'y aura pas d'API pour les processeurs graphiques, cela ne servira à rien. Les réseaux neuronaux sont des tâches trop simples pour être mises en parallèle entre les cœurs (l'appel à un thread prend des centaines de cycles d'horloge).

À moins que MQ ne nous fournisse une API pour les réseaux neuronaux au moins, mais cela nécessite une formalisation du réseau universel. Donc d'abord un projet, et ensuite frapper à la porte pour me donner une API pour GPU.

 

J'ai fait une image explicative du code à la page 5:

Lesjaunes sont des cellules de mémoire liées (pour être plus précis, il s'agit d'une seule et même cellule de mémoire, qui se réfère simplement à des objets de mémoire différents),

les autres, des associations d'objets de mémoire, rouge next, vert prev, bleu side.

Le sens de la flèche indique la direction dans laquelle le pointeur est transmis.

La cellule zéro de la mémoire de l'opérateur de retard est utilisée comme cellule de la mémoire de sortie.


La mémoire est liée dans l'ordre inverse, car une entrée n'a qu'une sortie (de laquelle elle reçoit des données) mais pas l'inverse.

Eh bien, il est probablement intuitivement clair que les cercles sont des entrées, les carrés des poids, les triangles des opérateurs de retard (opérateur zéro cellule Z sortie du neurone).

ZZZY Le schéma est définitif et je ne le modifierai plus :o)

 

1. Imha, la chose la plus importante est de se spécialiser dans le trading et ici il est important de systématiser le prétraitement des données d'entrée. Les signaux discrets (par exemple, le franchissement d'un certain extremum ou une variation de prix dans une période de temps dépassant un certain seuil) et les signaux continus (par exemple, la distance entre deux roues ou la variation de prix dans une période de temps) doivent être saisis. Bien sûr, NS peut obtenir un apprentissage discret à partir d'un apprentissage continu, mais il s'agit alors d'une boîte noire qui n'est pas toujours nécessaire. En général, pour les entrées, nous avons besoin d'une classe séparée, où le calcul du prix-action sera défini par une méthode virtuelle et où les utilisateurs pourront choisir parmi celles déjà écrites, ou les écrire eux-mêmes.

2. l'EA standard est essentiellement la même chose que les signaux élémentaires d'action de prix et l'algèbre booléenne avec eux (et/ou/non). Par conséquent, l'EA standard peut également être décrite sous la forme de NS d'une certaine topologie et de poids de réglage. Peut-être une bonne option - le convertisseur automatique des EA standard en NS (c'est difficile à faire :)), ou au moins permettre de concevoir le NS en utilisant des modèles de logique booléenne. Afin de donner un point de départ pour la création d'un NS logique, du point de vue du commerce, mais pas seulement un ensemble de couches avec une certaine topologie.

Et aussi d'ajouter des éléments d'algèbre booléenne à la NS construite. Par exemple, nous avons construit un CS et nous voulons vérifier l'influence d'un filtre simple sur celui-ci, par exemple nous achetons lorsque le prix est supérieur à МА200 et vendons - vice versa. Bien sûr, nous pouvons saisir une nouvelle entrée et réentraîner le réseau, etc. Ou nous pouvons simplement ajouter ce filtre en tant que logique booléenne et vérifier son influence sur le résultat.

C'est-à-dire qu'il s'agit de combiner la logique booléenne et la NS, intuitivement compréhensibles pour une personne, à différents stades de la conception des TS.

3. il est logique de saisir l'occasion pour réparer certaines connexions afin qu'elles ne participent pas à la formation suivante. C'est-à-dire qu'il existe une colonne vertébrale du système qui ne doit pas être reconstruite fréquemment, et une partie plus fréquemment adaptable. Le réentraînement de tous les poids est une augmentation de l'ajustement.

4. il n'est pas mauvais, si le backbone du point 3 peut être sélectionné automatiquement. Par exemple, nous avons une section de test. Il est divisé en N parties. NS est entraîné successivement sur chaque partie, mais une partie de celui-ci reste fixe (il n'est pas réentraîné sur chaque partie).

En d'autres termes, il s'agit de construire un NS robuste qui nécessite un minimum d'ajustement au marché actuel.

5. la cible de l'étude f ne doit pas être les succès individuels en matière de prédiction (trades), mais une caractéristique de la courbe d'équité. Un facteur de profit, par exemple, ou un facteur défini par l'utilisateur.

6. une interface visuelle pour la projection de NS est nécessaire pour toutes ces possibilités et d'autres.

 

Pour commencer, vous pourriez envisager un modèle orienté objet à code source ouvert comme http://www.basegroup.ru/library/analysis/neural/fastneuralnet/.

Qu'est-ce qui est logique de faire par analogie, quels sont les inconvénients compte tenu des spécificités du trading et de MQL5. Ou un modèle open-source plus avancé, afin de ne pas réinventer la roue :)

BaseGroup.ru :: NeuralBase - нейросеть за 5 минут
  • basegroup.ru
Библиотека компонентов , предназначена для программной реализации нейронных сетей. В качестве примера, созданы компоненты реализующие две нейросетевые парадигмы: рекуррентную нейронную сеть, в нашем случае – это сеть Хопфилда и многослойную нейронную сеть обучаемую по алгоритму обратного распространения ошибки (back propagation). Основным...
 
Avals:

1. Imha, la chose la plus importante est de se spécialiser dans le trading et ici il est important de systématiser le prétraitement des données d'entrée. Les signaux discrets (par exemple, le franchissement d'un certain extremum ou une variation de prix dans une période de temps dépassant un certain seuil) et les signaux continus (par exemple, la distance entre deux roues ou la variation de prix dans une période de temps) doivent être saisis. Bien sûr, NS peut obtenir un apprentissage discret à partir d'un apprentissage continu, mais il s'agit alors d'une boîte noire qui n'est pas toujours nécessaire. En général, pour les entrées, nous avons besoin d'une classe séparée, où la méthode virtuelle sera définie pour calculer le prix-action et les utilisateurs peuvent choisir parmi celles déjà écrites, ou écrire la leur.

Oui, j'ai écrit à ce sujet. Cependant, je l'ai écrit d'une manière différente. Pouvez-vous donner un petit exemple simple de ce à quoi ressemblerait une entrée d'action de prix ?

Et aussi ajouter des éléments d'algèbre booléenne à la NS construite. Par exemple, nous avons construit un NS et nous voulons vérifier l'influence d'un filtre simple, par exemple acheter une transaction uniquement lorsque le prix est supérieur à МА200 et vendre l'inverse. Bien sûr, nous pouvons saisir une nouvelle entrée et réentraîner le réseau, etc. Ou nous pouvons simplement ajouter ce filtre sous forme de logique booléenne et vérifier son influence sur le résultat.

Quel est l'intérêt de le mettre sur le net ? C'est facile et simple de vérifier sans le net...

Il s'agit de combiner la logique booléenne intuitive et compréhensible par l'homme et la NS à différents stades de la conception des CT.

Quel est l'intérêt de la SN alors ? À mon avis, les NS doivent être considérés comme une boîte noire qui convertit les entrées en sorties.

3. il est logique de saisir l'occasion pour réparer certaines connexions afin qu'elles ne participent pas à l'apprentissage ultérieur. C'est-à-dire qu'il existe une colonne vertébrale du système qui ne doit pas être reconstruite fréquemment, et une partie plus fréquemment adaptable. Réentraîner tous les poids, c'est augmenter l'ajustement.

Et sur quel principe ? La topologie peut être modifiée (hehe :) ). Il est possible de réduire la quantité. Mais pour entraîner uniquement des synapses choisies manuellement...

4. ce serait bien si la jointure inchangée de l'étape 3 pouvait être sélectionnée automatiquement. Par exemple, nous avons une section de test. Il est divisé en N parties. NS est entraîné successivement sur chaque partie, cependant une partie de NS reste fixe (non ré-entraînée sur chaque partie).

Il suffit de vérifier l'opération sur la colle. On ne peut pas se débarrasser de l'ajustement avec de telles machinations de toute façon.

En d'autres termes, il s'agit de construire des NS robustes qui nécessitent un minimum d'adaptation au marché actuel.

5. la cible de l'étude f ne sera pas les succès individuels en matière de prédiction (trades), mais une caractéristique de la courbe d'équité. Facteur de profit, par exemple, ou facteur fixé par l'utilisateur.

Ça ne marche pas comme ça. Toutes les entrées ne peuvent pas être transférées dans la stratégie. Après tout, le NS est séparé du TS, ils sont indépendants. Mais cela peut être fait au niveau de la formation des entrées/sorties de l'échantillon de formation.

_________________________________

Ou alors, il faut fixer les objectifs différemment en général.

 
TheXpert:

Oui, j'ai écrit à ce sujet. Mais dans une veine légèrement différente. Pouvez-vous me donner un petit exemple simple, à quoi ressemblerait une entrée d'action de prix ?

bool F1(int period){

si (High[0]>iHighest(NULL,0,MODE_HIGH,period,1)) return(true) ; sinon return(false) ;

}

double F2(int ma1P,int ma2P){

retour(iMA(...ma1P ...)-iMA(...ma2P....))

}

TheXpert:

Quel est l'intérêt de l'introduire dans le réseau ? Il est facile et simple de le vérifier sans réseau...

Quel est l'intérêt de la SN alors ? Je pense que les NS doivent en tout cas être considérés comme une boîte noire qui convertit les entrées en sorties.

Combiner NS et logique conventionnelle. La solution de NS ne peut résoudre qu'une partie d'un problème de trading, par exemple le filtrage et le résultat de son travail sera soit un trading d'achat ou de vente, soit pas de trading du tout. Mais les points d'entrée et de sortie, ainsi que d'autres filtres, peuvent être contenus dans la logique booléenne standard. Comment enseigner la NS nécessaire, si elle ne doit pas fonctionner sans la partie booléenne (donner des bénéfices ou prédire les changements de prix) ? C'est-à-dire que chaque étape de la formation NS doit inclure le lancement de l'algorithme sur la logique booléenne.

TheXpert:

Et sur quel principe ? Eh bien, vous pouvez changer de topologie (hehe :) ). Il est possible de réduire une quantité. Mais vous ne pouvez entraîner que des synapses choisies manuellement.

pourquoi pas ? :) Par exemple, un comité composé de plusieurs SN, chacun résolvant essentiellement des problèmes différents. Ils n'ont pas besoin d'être formés sur exactement les mêmes échantillons et avec la même périodicité, n'est-ce pas ? Des tâches différentes nécessitent des périodes de formation différentes.

Il existe, par exemple, un NS qui est assez bon pour identifier une tendance/flop. Nous pouvons l'utiliser dans divers projets et l'ajouter à d'autres SN, par exemple. Mais pas pour le recycler à chaque fois que vous devez les former.

TheXpert:

Il suffit de vérifier son travail de collage. Vous ne vous débarrasserez pas de l'ajustement avec de telles machinations de toute façon.

Je pense que c'est la seule façon pour que cela fonctionne pour la N.S. :)

TheXpert:

Après tout, le SN est séparé du TS, ils sont généralement indépendants. Mais cela peut être fait au niveau de la formation des entrées/sorties de l'échantillon de formation.

Et pourquoi ne peuvent-ils pas être combinés ? Le SN ne résoudra alors qu'une partie des problèmes, mais il sera formé comme un élément du système dans son ensemble. Et en général, combiner le processus d'optimisation de la stratégie et la formation des SN qui en fait partie, car il s'agit essentiellement de la même chose. C'est-à-dire que, par exemple, à chaque passage du testeur, le SN est entraîné sur l'échantillon de test. Bien sûr, cela a un sens si le NS n'est pas un prix runner)))) autonome, mais seulement une partie de la logique globale du système

 

Non. Ça ne marche pas comme ça.

Parler comme ça, c'est de la démagogie. Nous pouvons parler de choses différentes sans nous comprendre et les appeler à peu près la même chose.