Erreurs, bugs, questions - page 1035

 

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

Bugs, bugs, questions

MetaDriver, 2013.08.03 17:55

"

Si vous voulez être sûr, vous avez une entrée sur le côté droit de l'écran.

Pour mes besoins, ce n'est pas toujours approprié, mais dans le cas général, beaucoup de "problèmes de week-end" seraient éliminés.

Pour les experts en trading, en systèmes de trading automatisés et en tests de stratégies de trading.

Bugs, bugs, questions

MetaDriver, 2013.08.03 18:02

...

Ilserait également utile de "commander" de manière programmatique la mise à zéro forcée de tous les prev_calculs pour le symbole sélectionné. Avec la génération ultérieure de tiques, ce serait un bon combo.

Messieurs, y a-t-il quelque chose dans vos plans sur ce sujet ?


 
TheXpert:

Relisez attentivement ce que je vous ai écrit. Un calcul, pas une déduction.


Vous avez raison de séparer les moments : calcul des arguments de la fonction, substitution de ces arguments et calcul de la fonction elle-même. Ce script - montre que les deux arguments sont calculés de gauche à droite et l'expression elle-même de gauche à droite :

int f( int x )  { Print( __FUNCTION__ + "(" + x + ")" ); return ( x ); }

void OnStart()
{
        int a = 0x0;
        int b = f(a+=1) << f(a+=2) << f(a+=3);
	Print( "b=" + b );
}
Результат:
f(1)
f(3)
f(6)
b=512
 
Pouvez-vous me dire la différence entre extern et static, quelle est la durée de vie globale ?
//Test.mqh
extern int e1;
static int s1;

#import "testLib.ex5"
        void f();
#import
//test.mq5
#include "Test.mqh"

void OnStart()
{
        e1 = 10;
        s1 = 10;
        f();
}

//testLib.mq5

#property library
#include "Test.mqh"

void f() export
{
        Print( "e1=" + e1 );
        Print( "s1=" + s1 );
}
Результат:
e1 = 0 //не понятно
s1 = 0 //нормально
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Silent:
Pas ça?

Non, j'utilise une classe standard non initialisée.

Toutes mes classes sont auto-écrites. Et je ne comprends pas - pourquoi dans la méthode de la classe fonctionne bien, et dans OnInit() - ne fonctionne pas.

Updates : très intéressant... ;-) Si le conseiller expert est exécuté dans MetaEditor sous le débogueur - tout fonctionne bien. De plus, EX5 (1,5 fois plus grand que d'habitude) compilé sous le débogueur fonctionne également bien. Mais dès que EA est recompilé en mode normal - il commence à avoir des problèmes. Apparemment, je vais devoir ouvrir une nouvelle application dans Service Desk.

 
A100:
Les personnes compétentes peuvent-elles me dire quelle est la différence entre extern et static, quelle est la durée de vie globale ?

Dans votre cas, vous avez décidé que deux ensembles de variables, décrits indépendamment dans deux fichiers différents, fusionnent en une seule représentation. En fait, ce n'est pas le cas.

En ajoutant un fichier mqh, vous définissez explicitement des ensembles distincts de variables dans chaque fichier include. En gros, ne mettez pas les définitions de variables dans les fichiers d'en-tête - elles seront scopées.

 
Je voulais utiliser une (seule) variable dans plusieurs modules, mais je ne sais pas comment. J'ai enlevé .mqh.
10 //testLib.mq5
20 #property library
30 extern int e1;
40 void f() export
50 {
60         Print( "e1=" + e1 );
70 }
10 //test.mq5
20 extern int e1;        
30 #import "testLib.ex5"
40          void f();
50 #import
60 void OnStart()
70 {
80         e1 = 10;
90         f();
100 }

Résultat de sortie : e1=0 n'a pas changé. Où est passé e1=10 ? Si e1 est différent dans les différents modules, cela signifie que les fonctionnalités statiques et externes sont identiques ? Et si non, où est mon erreur ?
 
A100:
Je voulais utiliser une (seule) variable dans plusieurs modules, mais je ne sais pas comment. Le résultat de sortie : e1=0 n'a pas changé.
Il existe une classe de mémoire externe spécifiquement pour votre cas. Essayez
 
stringo:
Il existe une classe de mémoire externe spécifiquement pour votre cas. Essayez
Veuillez me donner un exemple - ou me signaler une erreur dans le mien - Dans un module, j'assigne e1 = 10, j'appelle e1 dans le deuxième module, mais il est égal à zéro dans ce module.
 
A100:
Je voulais utiliser une (seule) variable dans plusieurs modules, mais je ne sais pas comment. J'ai enlevé la sortie .mqhP : e1=0 n'a pas changé. Où est passé e=10 ? Si e1 est différent dans les différents modules, cela signifie que les fonctionnalités statiques et externes sont identiques ? Et si non, où est mon erreur ?
Eh bien, il devrait en quelque sorte être initialisé une seule fois. Elle est externe.
 
zfs:
Il est censé être initialisé une fois. Elle est externe.
Si vous ne pouvez pas changer la valeur - alors c'est une constante. Et si c'est le cas - alors pourquoi le changement de valeur n'est pas reflété dans un autre module ?
Raison: