Une bibliothèque rapide et gratuite pour MT4, pour le plus grand plaisir des neuralnetworkers. - page 8

 
newerty >> :

Pouvez-vous me le dire ? Comment faire pour que mon EA négocie plusieurs symboles à la fois ?

Par exemple l'or, le gbpusd, le nzdusd, l'audusd etc...

Sur chaque paire, évidemment des S/L différents.

Clone MT4... conseiller clone.... ???? Et courir en même temps ?

Il suffit de placer l'EA sur différents graphiques.

Le StopLoss de chaque paire est différent.


La seule chose que vous ne pouvez pas faire est d'accrocher un autre EA sur une paire occupée par un EA, ou de trader manuellement, car les chiffres magiques ne sont pas utilisés. C'est-à-dire pas plus d'un EA par paire.

 

Yuri, pourriez-vous me donner un exemple des paramètres (cadre temporel, période, etc.) qui vous donnent un grand nombre de transactions?

 
Solver.it >> :

Yuri, pourriez-vous me donner un exemple des paramètres (cadre temporel, période, etc.) qui vous donnent un grand nombre de transactions ?

À la page 6 de ce fil de discussion se trouve un extrait de backtest. Tout est dit là.

 

Si la ligne

if (IsOptimization() || IsTesting()) {


est remplacé par

if (IsOptimization()){


alors les résultats de l'exécution unique deviennent plus stables.

J'ai rencontré un autre problème : le réseau s'adapte très rapidement aux données, les graphiques comme une règle dans le testeur, mais les forwards et backtests montrent un caractère de courbe très différent.

 
Kharin >> :

Si la chaîne

if (IsOptimization() || IsTesting()) {


à remplacer par

if (IsOptimization()){


alors les résultats de l'exécution unique deviendront plus stables.

J'ai rencontré un autre problème : le réseau s'adapte très rapidement aux données, les graphiques comme une règle dans le testeur, mais les forwards et backtests montrent un caractère de courbe très différent.

Ceci est explicite, car la suppression de cette fonction désactive l'adaptation en mode test. Mais j'ai volontairement laissé cette fonctionnalité dans l'EA. Plus les résultats sont instables lors des différentes exécutions du test adapté, plus il est probable que le réseau n'a rien appris de particulier, car il ne s'agit que d'une époque de plus et tout est déjà très différent. C'est-à-dire que si les résultats instables montrent que la grille n'est pas sûre sur l'échantillon test, alors nous ne pouvons même pas mentionner les attaquants - neuronka n'a même pas vu leurs devis.

 
C'est une question de goût, bien sûr, mais je placerais ce choix dans les variables externes. Cependant, je l'ai fait)))
 
Reshetov >> :

Je le répète : cette ligne ne porte aucune charge d'information. Le signe du ret ne change pas, alors que les transactions seront ouvertes en fonction des valeurs positives ou négatives du ret.

Le signe est évident. Il est également évident que sans un deuce, cette fonction renvoie une valeur significative de la réponse moyenne du comité des mailles, mais avec un deuce, c'est de la foutaise. Si l'on tient compte du fait que la même fonction est appelée dans l'exécution normale des grilles après l'entraînement et qu'il est préférable de rejeter les petites valeurs de ret (tant positives que négatives) sans générer de transactions par ce biais, cette ligne contient vraiment des informations importantes.

Vous n'avez toujours pas répondu à la question de savoir pourquoi vous n'enseignez les filets que sur des exemples négatifs ?

 
Kharin >> :

J'ai rencontré un autre problème : le réseau s'adapte très rapidement aux données, les graphiques comme une règle dans le testeur, mais les forwards et backtests montrent un caractère très différent de la courbe.

Oui, dans sa forme actuelle, l'EE n'effectue pas d'évaluation de la qualité de la formation. Si nous modifions la logique de collecte des données, nous pourrions insérer quelques appels : f2M_test (avec les données de validation, pas les données de formation) et f2M_get_MSE, arrêtant la formation lorsque l'erreur commence à augmenter.

 

Yuri, je veux poser une question hors sujet : est-il possible de mettre en place une grille séparée pour SL (disons par volatilité - faire des prédictions, et ajuster SL à cela) ?

Peut-être que cela aiderait les grilles de paternité à apprendre de manière plus cohérente ?

 

Yuri, je pense avoir trouvé une autre inexactitude dans le code... J'ai cherché dans mon code des résultats d'apprentissage bizarres et j'ai trouvé ceci :

double ann_pnn() {
...
    ret = 2 * ret / AnnsNumber;

C'est un must :

ret = ret / AnnsNumber;

Le fait que l'auteur de la bibliothèque dans son EA, pour des raisons que je ne comprends pas, a divisé la grille en deux pour les positions courtes et longues, respectivement paire et impaire avec des cycles respectifs :

for (i = 0; i < AnnsNumber; i += 2) - для четных С ПРИРАЩЕНИЕМ "2" !!!
for (i = 1; i < AnnsNumber; i += 2) - для нечетных

D'où le double dans le dénominateur. Il n'est pas nécessaire dans notre cas. Bien qu'il soit clair que cela n'aura pas beaucoup d'effet sur les résultats de l'entraînement...

Le sens de cette boucle (fonctions ann_pnn et run_anns) m'échappe complètement...

for (i = 0; i < AnnsNumber; i++) {    ret += AnnOutputs[i];    }

Si nous avons une grille avec un neurone de sortie, où trouverons-nous 16 sorties ? ... Ou s'agit-il d'un comité de 16 mailles ? C'est vers ça que je me tourne... Alors la question est : à quoi bon ? J'ai laissé ce morceau inchangé pour l'instant, jusqu'à ce que je comprenne enfin sa signification... Quelqu'un a-t-il une idée à ce sujet ? Veuillez partager...