Erreurs, bugs, questions - page 2280

 
Ilyas:

Vous avez rencontré un problème de mémoire dans Windows

Juste après ArrayResize, ajoutez

Cela déclenche l'allocation réelle de la mémoire physique afin que cela ne se produise pas pendant le test.


Voici les résultats de mon ordinateur

Oui, cela fonctionne en effet.
Merci.
Très intéressant. Mais ce n'est pas clair.
Je dois savoir que pour travailler rapidement avec la mémoire après ArrayResize, vous devez faire une initialisation complète du tableau avec ArrayInitialize ou ArrayFill (cela fonctionne dans les deux sens). ArrayInitialize est plus simple.

J'ai essayé d'initialiser chacun des 4096 éléments du tableau. Mais cela n'affecte pas l'amélioration des performances d'ArrayFill.

for (int i=0;i<size;i+=4096) arr[i]=0;
 
Nikolai Semko:

Il faut savoir que pour travailler rapidement avec la mémoire après ArrayResize, il faut faire l'initialisation complète du tableau avec ArrayInitialize ou ArrayFill (qui fonctionne dans les deux sens).

Vous avez tiré une conclusion erronée. En tout cas, tout fonctionne rapidement. C'est juste que dans la variante "lente" vous mesuriez en plus du remplissage aussi l'allocation de mémoire réelle, parce que ArrayResize est une intention d'allouer de la mémoire, pas l'allocation elle-même.

 
fxsaber:

Vous avez tiré la mauvaise conclusion. Tout fonctionne rapidement comme c'est le cas. C'est juste que dans la version "lente", vous mesuriez l'allocation réelle de mémoire en plus du remplissage, parce que ArrayResize est une intention d'allouer de la mémoire, pas l'allocation elle-même.

Oui, vous avez raison.

Merci !
Et j'avais aussi tort, quand je disais que le lien ArrayInitialize + ArrayCopy fonctionnait plus vite, parce que je remplissais le tableau avec les mêmes valeurs que j'avais remplies avant avec ArrayFill. Le compilateur est juste intelligent et ne fait pas deux fois le même travail.
Si nous remplissons le tableau avec d'autres valeurs, le résultat sera différent :

2018.09.06 12:10:36.602 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayFill первая попытка= 299
2018.09.06 12:10:36.602 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayInitialize + ArrayCopy = 425
2018.09.06 12:10:36.602 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayFill вторая попытка = 78

Alors j'ai merdé. Désolé.
Continuons à utiliser ArrayFill en ordre de marche.

Dossiers :
 

Pourquoi mon pays de résidence a-t-il changé dans mon profil ?
Ces trois dernières années, c'était le Canada. Je ne l'ai pas changé. Et maintenant je ne peux pas le changer.

C'est-à-dire que le pays de résidence initial lors de l'enregistrement est éternel. Même si vous ne vivez pas en Russie et que vous êtes devenu résident ou citoyen d'un autre pays ?

 
Faites-moi savoir si vous allez régler ce problème ou non.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2018.09.06 09:31

Pourquoi cela se produit-il parfois ? Le testeur ferme les positions non pas sur le dernier tick, mais sur l'avant-dernier tick. La situation se présente sur certains symboles personnalisés.

Si une relecture est nécessaire, prêt à fournir.


Pourquoi est-ce important ? Sur les symboles personnalisés avec exécution en bourse, les marchés sont exécutés au dernier prix. Pour les symboles personnalisés, l'historique des tick est bid/ask, sans last. Par conséquent, sur de tels symboles, le testeur ferme les positions actuelles sur le dernier tick par zéro dernier. La solution est de forcer last = (bid + ask) / 2 dans le dernier tick. Cependant, il existe des situations où le testeur, pour une raison quelconque, ferme tout non pas au dernier, mais à l'avant-dernier tick, où le dernier est zéro. En conséquence, nous avons le graphique suivant


Vous regardez les résultats de l'optimisation et voyez un montant énorme de profits/pertes. Vous ne réaliserez pas qu'il s'agit d'un bogue tant que vous n'aurez pas exécuté un seul test et regardé la fin de l'historique des transactions.

 
Nikolai Semko:

Pourquoi mon pays de résidence a-t-il changé dans mon profil ?
Ces trois dernières années, c'était le Canada. Je ne l'ai pas changé. Et maintenant je ne peux pas le changer.

C'est-à-dire que le pays de résidence initial lors de l'enregistrement est éternel. Même si vous ne vivez pas en Russie et que vous êtes devenu résident ou citoyen d'un autre pays ?

Vous êtes enregistré en tant que vendeur de la Russie. Si vous souhaitez apporter des modifications aux détails de l'enregistrement du vendeur, bienvenue à

 
 
fxsaber:
Faites-moi savoir si vous allez ou non vous occuper de ce problème.
Nous allons nous en occuper.
 
Marsel:

Vous êtes enregistré en tant que vendeur de la Russie. Si vous souhaitez apporter des modifications aux détails de l'enregistrement du vendeur, bienvenue à

Dites-moi où ces paramètres sont cachés ? Je ne les trouve pas. Il n'y a pas non plus de telle option dans le SD.
 
Nikolai Semko:
Pouvez-vous me dire alors où ces paramètres sont cachés ? Je ne les trouve pas. Il n'y a pas non plus de telle option dans le SD.

Apparemment dans le profil du vendeur

Raison: