Erreurs, bugs, questions - page 2587

 
Roman:

Le code utilise lock_guard
. Mais si on le commente, il n'y a pas de changement
.

Cependant, il a commencé à fuir, et on sait pourquoi, à cause de la mauvaise taille de l'appareil.
Je reviendrai de vacances et, si cela ne pose pas trop de problèmes, j'étudierai la question. Mais logiquement le bug n'est pas dans mql, mais dans votre code. Au fait, juste pour le plaisir, que se passe-t-il si la bibliothèque fonctionne avec quel encodage ? Êtes-vous sûr que c'est utf-16, mais que faire si c'est utf-8, après tout, le plus commun.
 
Igor Makanu:

Je vous ai écrit une solution en une ligne - ajoutez la date du test à cette condition et testez dans le testeur sans problème, les performances vont au moins diminuer.

Ou mieux encore, suivez la suggestion de l'administrateur - le fichier ne sera pas un problème, mais vous serez peut-être tenté d'utiliser neuronet pour jeter un coup d'œil dans des endroits où vous ne devriez pas - c'est comme ça que je finissais généralement par l'avoir :)))

Je l'ai vérifié - ça n'a pas aidé.

Et ça ne devrait pas. Après tout, selon l'article que l'admin a cité :
La quantité minimale d'historique à télécharger du serveur de trading pour les périodes D1 et moins est d'un an.

Et les 100000 barres M15 que j'ai demandées, c'est environ 3 ans. Pour la première année, les barres sont copiées, ce qui représente 37 000 barres, et au-delà, elles ne sont tout simplement pas dans le testeur, attendre ne sert à rien.

 
elibrarius:

Je l'ai vérifié - ça n'a pas aidé.

Oui et ça ne devrait pas. Après tout, selon l'article cité par l'administrateur :
La quantité minimale d'historique lors du téléchargement à partir du serveur de négociation pour les périodes D1 et moins est d'un an.

Et les 100000 barres M15 que j'ai demandées, c'est environ 3 ans. Pour la première année, les barres sont copiées, ce qui représente 37 000 barres, et au-delà, elles ne sont tout simplement pas dans le testeur, attendre ne sert à rien.

ça marche pour moi, j'ai mis le test 2000 - 2019 sur M15, code expert :

input int InpBars = 100000;

void OnTick()
{  static bool print_once = true;
   int bars = Bars(_Symbol, _Period);
   if(bars < InpBars) return;

   if(print_once)
   {  Print("OK - ", TimeCurrent());
      print_once = false; }

}

C'est dans le journal :

2019.10.04 22:15:19.567 Core 1 EURUSD,M15 : le test de Experts\IgorM\tst.ex5 de 2000.01.01 00:00 à 2019.10.03 00:00 a commencé avec des entrées :

2019.10.04 22:15:19.567 Core 1 InpBars=100000

2019.10.04 22:15:19.567 Core 1 2003.01.16 19:30:00 OK - 2003.01.16 19:30:00

2019.10.04 22:15:19.567 Core 1 solde final 10000.00 USD

ajouter une date à la condition pour commencer à tester et former le NS, ou faire comme l'admin a suggéré
 
Igor Makanu:

J'ai tout fait fonctionner, j'ai mis le test 2000 - 2019 sur M15, code expert :

Je l'ai eu dans le journal :

2019.10.04 22:15:19.567 Core 1 EURUSD,M15 : le test de Experts\IgorM\tst.ex5 de 2000.01.01 00:00 à 2019.10.03 00:00 a commencé avec des entrées :

2019.10.04 22:15:19.567 Core 1 InpBars=100000

2019.10.04 22:15:19.567 Core 1 2003.01.16 19:30:00 OK - 2003.01.16 19:30:00

2019.10.04 22:15:19.567 Core 1 solde final 10000.00 USD

ajouter la date à partir de laquelle vous voulez commencer à tester dans la condition et enseigner le NS, ou faire comme suggéré par l'admin.

Maintenant je comprends votre idée)

C'est-à-dire que vous ne devriez pas exécuter le test pour les 2 derniers mois, mais pour 3 ans, sauter toutes ces 3 années dans OnTick et commencer le calcul seulement sur les 2 derniers mois.

Oui - c'est la solution la plus simple. Merci !

 
elibrarius:

Et les 100 000 bars M15 que j'ai demandés, c'est environ 3 ans. La première année, les barres sont copiées, ce qui représente 37 000 barres, et ensuite elles ne sont tout simplement pas dans le testeur, attendre ne sert à rien.

Il serait plus rapide de travailler avec votre fichier historique en mode optimiseur"Calculs mathématiques".

 
elibrarius:

Maintenant je comprends votre idée)

C'est-à-dire que le test ne doit pas être exécuté pour les 2 derniers mois, mais pour 3 ans, sautez toutes ces 3 années dans OnTick et commencez les calculs uniquement sur les 2 derniers mois.

Oui - c'est la solution la plus simple. Merci !

Ajouter du temps à la condition

input int InpBars = 100000;
input datetime InpDataTest = D'2015.01.01 00:00'; 
void OnTick()
{  static bool print_once = true;
   int bars = Bars(_Symbol, _Period);
   datetime t = TimeCurrent();
   if(bars < InpBars || t < InpDataTest  ) return;

   if(print_once)
   {  Print("OK, TimeCurrent() =  ", t);
      print_once = false; }

}

2019.10.04 22:36:42.729 Core 1 EURUSD,M15 : le test des experts\IgorM\tst.ex5 de 2000.01.01 00:00 à 2019.10.03 00:00 a commencé avec les entrées :

2019.10.04 22:36:42.729 Core 1 InpBars=100000

2019.10.04 22:36:42.729 Core 1 InpDataTest=1420070400

2019.10.04 22:36:42.729 Core 1 2015.01.02 09:00:00 OK, TimeCurrent()= 2015.01.02 09:00:00

2019.10.04 22:36:43.041 Core 1 solde final 10000.00 USD



 
Igor Makanu:

ajouter du temps à la condition

2019.10.04 22:36:42.729 Core 1 EURUSD,M15 : le test des experts\IgorM\tst.ex5 de 2000.01.01 00:00 à 2019.10.03 00:00 a commencé avec les entrées :

2019.10.04 22:36:42.729 Core 1 InpBars=100000

2019.10.04 22:36:42.729 Core 1 InpDataTest=1420070400

2019.10.04 22:36:42.729 Core 1 2015.01.02 09:00:00 OK, TimeCurrent() = 2015.01.02 09:00:00

2019.10.04 22:36:43.041 Core 1 solde final 10000.00 USD



Oui, merci. Tout fonctionne.

 
Aleksey Vyazmikin:

Il serait plus rapide de travailler avec votre fichier historique dans le mode"Calculs mathématiques" de l'optimiseur.

C'est le cas si vous êtes purement dans la NS elle-même et que vous regardez le résultat.

Je teste la transaction maintenant, afin que les coûts et les spreads soient pris en compte. Le résultat est que le robot de trading est prêt à être utilisé dans le testeur et peut être connecté au trading réel.

 
elibrarius:

Eh bien, c'est si vous êtes purement dans le NS lui-même et regarder le résultat.

Je teste la transaction maintenant, afin que les coûts et les spreads soient pris en compte. C'est pourquoi je suis intéressé par un robot prêt à l'emploi que je peux regarder dans le testeur et connecter au trading réel.

Je ne comprends toujours pas : vos prédicteurs ont-ils besoin d'une plus grande profondeur de calcul ? J'en ai vraiment besoin - MA sur les jours :) Je fais juste des tests un an à l'avance et le commerce avant cette date peut être interdit...

 
Aleksey Vyazmikin:

Je ne comprends toujours pas - avez-vous des prédicteurs qui nécessitent un calcul plus approfondi ? J'en ai besoin d'une - MA sur le graphique quotidien :) Je fais juste des tests un an à l'avance et le commerce avant cette date peut être interdit...

Oui - la profondeur de l'histoire est nécessaire pour plus d'un an. La solution a déjà été trouvée. Maintenant, je vais aussi faire un lancement anticipé de 3 ans et les ignorer.