Erreurs, bugs, questions - page 1783

 
A100:

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.
 
Renat Fatkhullin:
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.
 
A100:
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.
Merci, nous allons y réfléchir.

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.
 
Alexey Kozitsyn:
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 ?
Oui. Les fils différents seront si le graphique change le symbole, pas l'horizon temporel.

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.
 
Slawa:
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.
Veuillez l'ajouter à l'aide, s'il vous plaît.
 
Slawa:

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 ?

cannot set millisecond timer (500)
cannot set millisecond timer (500)
  • www.mql5.com
Здравствуйте, клиент прислал лог файл, в котором я увидел такую запись cannot set millisecond timer (500) что она значит? и почему...
 

Erreur d'exécution

Violation d'accès à 0x030A00AD lu à 0x00000005 dans 'Test_s.ex5'.

//Test_s.mq5 //Скрипт
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" ); }
//TestA.mq5
#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.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • www.mql5.com
Форум алго-трейдеров MQL5
 
fxsaber:
Mettez-le dans Aide, s'il vous plaît.
Regardez ici - Programmes en cours d'exécution

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.

 
A100:

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.

 
Rashid Umarov:
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.

Merci, c'est ce que je voulais dire.

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.