Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Voir Déclarations en avant pour les classes
La fonction OnTimer() dans le testeur de stratégie, ralentit beaucoup l'exécution, lorsqu'elle est demandée toutes les secondes. void OnInit() { EventKillTimer() ; EventSetTimer(1) ; } void OnTimer() { } Le conseiller expert, avec deux indicateurs externes et fonctionnant sur tous les ticks, fonctionne en 2012.04.11 14:32:07 Core 1 EURUSD,H1 : 8083516 ticks (4557 barres) générés en 70418 ms (total des barres dans l'historique 6270, temps total 70528 ms) Si OnTimer() est commenté, l'exécution est significativement accélérée 2012.04.11 14:36:22 Core 1 EURUSD,H1 : 8083516 ticks (4557 barres) générés en 22730 ms (total des barres dans l'historique 6270, temps total 22870 ms) Ces délais sont-ils causés par le testeur, ou pouvons-nous l'accélérer d'une manière ou d'une autre ?
P.S. Un aperçu du message aurait été mis en œuvre(
La fonction OnTimer() dans le testeur de stratégie, ralentit beaucoup l'exécution, lorsqu'elle est demandée toutes les secondes. void OnInit() { EventKillTimer() ; EventSetTimer(1) ; } void OnTimer() { } Le conseiller expert, avec deux indicateurs externes et fonctionnant sur tous les ticks, fonctionne en 2012.04.11 14:32:07 Core 1 EURUSD,H1 : 8083516 ticks (4557 barres) générés en 70418 ms (total des barres dans l'historique 6270, temps total 70528 ms) Si OnTimer() est commenté, l'exécution est significativement accélérée 2012.04.11 14:36:22 Core 1 EURUSD,H1 : 8083516 ticks (4557 barres) générés en 22730 ms (total des barres dans l'historique 6270, temps total 22870 ms) Ces délais sont-ils causés par le testeur, ou pouvons-nous l'accélérer d'une manière ou d'une autre ?
P.S. Un aperçu du message aurait été mis en œuvre(
Que signifie cette entrée dans le testeur ?
Pas drôle.
Je comprends un peu que les liens dans le cas général dans mql5 ne sont pas retournés par les fonctions (d'ailleurs, pourquoi pas ?), mais alors il faut faire quelque chose pour rendre possible les indexeurs à valeur l. Par exemple, faire une exception syntaxique à la règle générale pour les indexeurs gauchers. Ou un mot-clé quelconque.
La claudication ne rend évidemment pas mql5.... agréable.
Limp clairement ne fait pas paraître mql5.... bien.
La boiterie ne donne pas une bonne image de mql5.....
Vous devez construire des liens à part entière pour cela :)
ZS : il y a des fuites :)
Bug ?
Le code ci-dessous génère une sorte de boucle perpétuelle dans le compilateur. Cliquer sur Annuler
ne fonctionne pas immédiatement, mais quand il le fait, il reprend le contrôle de l'éditeur.
Le bouton d'annulation lui-même ne disparaît pas, mais il n'est pas accessible non plus.
Le bouton Compiler est perdu à jamais (vous devez recharger l'éditeur pour le récupérer).
Pas drôle.
Comme j'aime comprendre que les liens dans le cas général dans les fonctions mql5 ne retournent pas (d'ailleurs, pourquoi ne le pourraient-ils pas ?), mais je devrais faire quelque chose pour rendre les indexeurs de valeur l possibles à la place, par exemple faire une exception syntaxique à la règle générale pour les indexeurs gauchers. Ou un mot-clé quelconque.
La claudication ne rend pas mql5.... agréable.
"Transmettre à l'extérieur des éléments internes qui ne font pas partie de la classe de base (et dans cet exemple, pas l'attribut lui-même, mais seulement un élément de tableau ), surtout avec la possibilité de modifier sa valeur, n'est pas sûr.
En outre, cela contredit l'"esprit" de la programmation orientée objet : tout travail sur les données de l'objet doit être effectué à l'intérieur de l'objet, par ses propres méthodes...
Et si vous utilisiez simplement Setter pour l'attribut de données ?
Le code gagnerait en lisibilité. Finalement, cette "simplicité" avec l'indexeur de valeur l fera que personne ne comprendra comment ce code fonctionne...
Vous passerez plus de temps à chercher des erreurs qu'à écrire Setter.
Voici un exemple :
Si vous pouvez remplacer un code comme while ((double)date[++i -1] < 10) par quelque chose de plus long mais de plus digeste, il vaut mieux faire comme ça...
struct Test
{
double data[] ;
int taille ;
void Init(int Size) {size=Size ; ArrayResize(data,fmin(size,Max));}
void setDataElement (int index, double valeur)
{
données[index] = valeur ;
}
privé :
static int Max ;
} ;
//+------------------------------------------------------------------+
int Test::Max=1024 ;
//+------------------------------------------------------------------+
//| Fonction de démarrage du programme de script |
//+------------------------------------------------------------------+
void OnStart()
{
Test t ;
t.Init(16) ;
for(int i=0;i<t.size;i++)
{
//t[i]=i*i ; // ERREUR : '=' - valeur l requise
t.setDataElement(i, i*i) ;
}
}