Erreurs, bugs, questions - page 2586

 
elibrarius:
Lisez. Cependant, je n'ai pas reçu de réponse, pourquoi le testeur de CopyTime a calculé 30 barres au lieu de 100 000 barres. En même temps, dans le terminal, il lit tout correctement.

L'historique des instruments utilisés est téléchargé par le testeur depuis le terminal client (et non depuis le serveur de trading !) automatiquement lors du premier accès à cet instrument.

L'agent de contrôle ne télécharge que l'historique manquant avec une petite marge, afin de fournir les données nécessaires sur l'historique pour calculer les indicateurs au moment du contrôle. La quantité minimale d'historique à télécharger depuis le serveur de négociation pour les périodes D1 et moins est d'un an. Ainsi, si vous commencez à tester sur l'intervalle 2010.11.01-2010.12.01 (test sur l'intervalle d'un mois) avec la période M15 (chaque barre est de 15 minutes), le terminal demandera l'historique pour toute l'année 2010. Pour l'horizon hebdomadaire, nous demanderons l'historique de 100 barres, soit environ deux ans (il y a 52 semaines dans une année). Pour les tests sur le calendrier mensuel, l'agent demandera l'historique sur 8 ans (12 mois * 8 ans = 96 mois).


Résumé

Dans les paramètres de test, définissez la période mensuelle.

 
Slava:

L'historique des symboles utilisés est téléchargé automatiquement par le testeur depuis le terminal client (et non depuis le serveur de négociation !) la première fois qu'il accède à ce symbole.

L'agent de contrôle ne télécharge que l'historique manquant avec une petite marge, afin de fournir les données nécessaires sur l'historique pour calculer les indicateurs au moment du contrôle. La quantité minimale d'historique à télécharger depuis le serveur de négociation pour les périodes D1 et moins est d'un an. Ainsi, si vous commencez à tester sur l'intervalle 2010.11.01-2010.12.01 (test sur l'intervalle d'un mois) avec la période M15 (chaque barre est de 15 minutes), le terminal demandera l'historique de l'outil pour toute l'année 2010. Pour l'horizon hebdomadaire, nous demanderons l'historique de 100 barres, soit environ deux ans (il y a 52 semaines dans une année). Pour les tests sur le calendrier mensuel, l'agent demandera l'historique sur 8 ans (12 mois * 8 ans = 96 mois).


Résumé

Dans les paramètres de test, définissez la période mensuelle.

C'est clair - cela permet d'économiser des ressources.

Que faire si je veux tester sur M15, mais que j'ai besoin de plusieurs années de données (pour former un réseau neuronal) ? Devons-nous stocker les barres dans nos propres fichiers ?

 
Roman:

memcpy utilisé comme indiqué dans l'article d'exemplede Renate.
L'utilisation d'autres fonctions de copie pose les mêmes problèmes.
Le comportement avec ces fonctions est décrit dans ce post et dans ce
Toutes les fonctions de copie possibles ont été essayées.

Que savez-vous du partage de données provenant de plusieurs threads ?

 
Ilyas:

Que savez-vous du partage de données multithread ?

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

recursive_mutex mtx;
const wchar_t* data;
bool success ;
                
while (condition)
{
        
   if (DataAvailable())
   {
      lock_guard<recursive_mutex> locker(mtx);
      success = ReadData();
   }
        
   if (success)
   {
      lock_guard<recursive_mutex> locker(mtx);
      data = getData();
                
      memcpy(out, data, wcslen(data) * (sizeof(char)*3));
   }
        
   Sleep(1);
}
Il a quand même commencé à fuir, mais on peut comprendre pourquoi, à cause de la mauvaise taille de l'enveloppe.
Dossiers :
222.PNG  13 kb
 
elibrarius:

Je vois - économiser les ressources.

Mais que faire si vous devez tester sur M15, mais que vous avez besoin de plusieurs années de données (pour former un réseau neuronal) ? Avez-vous besoin de stocker les barres dans vos fichiers ?

Nous devons juste attendre :

input int InpBars = 100000;

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

}
 
elibrarius:

Je vois - économiser les ressources.

Mais que faire si je dois tester sur M15, mais que j'ai besoin de données sur plusieurs années (pour entraîner un réseau neuronal) ? Devons-nous stocker les barres dans nos propres fichiers ?

Quel est le problème ? Vous pouvez accéder aux données de n'importe quelle période.
 
Slava:
Quel est le problème ? Vous pouvez accéder aux données de n'importe quelle période.

Si je lance le test sur M15, parce que la transaction dans le testeur sera sur M15, je ne pourrai pas compter 100000 barres de l'historique. Mais nous devons tester le trading sur M15.

Si je l'exécute sur Мonthew pour avoir un historique de 8 ans, je ne pourrai pas échanger plus d'une fois par mois.

 
elibrarius:

Si je lance le test sur M15, parce que la transaction dans le testeur sera sur M15, je ne pourrai pas compter 100 000 barres de l'historique. Et je dois tester le trading sur M15.

Si je l'exécute sur Мonthew pour avoir un historique de 8 ans, alors je ne pourrai pas échanger plus d'une fois par mois.

Pourquoi pas ?

 
Alexey Viktorov:

Pourquoi ?

Les prix d'ouverture sont testés. La tique viendra une fois par mois.
Si l'on fonctionne sur tous les ticks réels, on peut le faire avec une forte refonte et une complication du code. Cela entraînera également un gaspillage de ressources. Je pense qu'il serait plus facile de lire les barres à partir des fichiers.
 
elibrarius:
Je pense qu'il est plus facile de lire les barres des fichiers.

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, faites comme admin le suggère - le fichier n'est bien sûr pas un problème, mais la tentation est grande de fouiller dans les mauvais endroits avec le neuronet - c'est ainsi que je finissais généralement par le faire )))).

Raison: