Erreurs, bugs, questions - page 1783
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
Plus de 30 minutes se sont écoulées, et il n'y a toujours pas d'appel OnDeinit->M5.
Et maintenant, modifions le code Expert (en changeant légèrement l'ordre) ...
Joignez le code, s'il vous plaît.
Attaché au dernier post du même nom. En fait, un appel statique a été remplacé par un appel dynamique et le résultat est fondamentalement différent.
Il semble que dans le premier cas, l'absence de OnDeinit et la variable statique, dont on a oublié d'appeler le destructeur en conséquence, ont joué un mauvais tour à l'optimisation.
Pouvez-vous préciser de quels fils de discussion il s'agit ? Tous les indicateurs d'un même symbole ne fonctionnent-ils pas dans le même fil ?
Si nous ne changeons que l'horizon temporel, la nouvelle copie de l'indicateur sera calculée dans le même fil que l'ancienne.
Mais nous ne pouvons pas non plus compter sur le fait que la commande Deinit sur M5 sera traitée plus tôt que la commande Init sur M15.
Si nous ne changeons que l'horizon temporel, la nouvelle copie de l'indicateur sera calculée dans le même fil que l'ancienne.
Mais ici nous ne pouvons pas compter sur le fait que la commande Deinit sur M5 sera traitée plus tôt que la commande Init sur M15.
Bonjour,
Veuillez prêter une attention toute particulière au message https://www.mql5.com/ru/forum/166358/page4#comment_4064293.
C'est très important,
il y a une nouvelle erreur 1158, ce n'est pas dans l'aide ?
Erreur d'exécution
Violation d'accès à 0x030A00AD lu à 0x00000005 dans 'Test_s.ex5'.
class A {};
#import "TestA.ex5"
A *error();
#import
class B { protected:
B( const string& name ) : name( name ) {}
virtual int g( const MqlParam& param[] ) const { return ::IndicatorCreate( NULL, PERIOD_CURRENT, IND_CUSTOM, ::ArraySize( param ), param ); }
const string name;
bool f( int h ) const
{
if ( ::ChartIndicatorAdd( 0, 0, h ) )
return true;
error();
return false;
}
};
class C : protected B { protected:
C( int h, string name ) : B( name ), h( h ) { f( this.h ); }
const int h;
};
class D : C { public:
D( string path ) : C( g( path ), path ) {}
int g( const string& path )
{
MqlParam param[ 1 ];
param[ 0 ].type = TYPE_STRING;
param[ 0 ].string_value = path;
return g( param );
}
};
void OnStart() { D d( "Test_i" ); }
#property library
class A {};
A * error() export { return NULL; }
Tous les fichiers (sauf l'indicateur) sont situés dans le dossier MQL5\Scripts\.
L'indicateur lui-même n'est pas nécessaire, mais il peut être téléchargé, par exemple, à partir dehttps://www.mql5.com/ru/forum/1111/page1803#comment_4063671.
Mettez-le dans Aide, s'il vous plaît.
Pour un résumé des programmes du MQL5, voir le tableau ci-dessous :
Programme
Exécution
Note
Script
Dans son propre thread, autant de scripts qu'il y a de threads d'exécution pour eux
Un script en boucle ne peut pas interrompre le travail d'autres programmes.
Expert
Dans son propre fil, autant d'experts - autant de fils d'exécution pour eux
Un expert bouclé ne peut pas perturber le travail des autres programmes.
Indicateur
Un seul fil d'exécution pour tous les indicateurs sur un seul symbole. Autant de symboles indicateurs - autant de fils d'exécution pour ceux-ci
Une boucle sans fin dans un indicateur arrêtera tous les autres indicateurs de ce symbole.
Ils sont écrits sous la forme B'11111111111111111111111111111111'.
Hélas, je ne connais pas ce format.
L'expérience a montré que le nombre dans le tampon graphique est représenté par les mêmes règles que le double - c'est-à-dire qu'il n'est pas possible de faire passer un nombre aussi long dans le tampon graphique - ce qui est frustrant.
Regardez ici - Exécution du programme
Pour un résumé des programmes du MQL5, voir le tableau ci-dessous :
Programme
Exécution
Note
Script
Dans son propre thread, autant de scripts qu'il y a de threads d'exécution pour eux
Un script en boucle ne peut pas interrompre le travail d'autres programmes.
Expert
Dans son propre fil, autant d'experts - autant de fils d'exécution pour eux
Un expert en boucle ne peut pas perturber le travail d'autres programmes.
Indicateur
Un seul fil d'exécution pour tous les indicateurs sur un seul symbole. Autant de symboles avec indicateurs - autant de fils d'exécution pour ceux-ci
Une boucle sans fin dans un indicateur arrêtera tous les autres indicateurs de ce symbole.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Bugs, bugs, questions
Slawa, 2017.02.06 07:22
Mais ici aussi, vous ne pouvez pas compter sur le fait que la commande Deinit sur M5 sera traitée avant la commande Init sur M15.