Fehler, Irrtümer, Fragen - Seite 1783

 
A100:

Frage: Wann wird OnDeinit->M5 aufgerufen?

Meine Antwort: Niemals!

Ihre Antwort oben: asynchron und mit Verzögerung

Es sind mehr als 30 Minuten vergangen und OnDeinit->M5 wurde immer noch nicht aufgerufen

Und nun ändern wir den Code des Expert Advisors (ändern Sie die Reihenfolge leicht) ...

Ergebnis:

2017.02.06 01:31:45.002 OnInit->M5
2017.02.06 01:31:48.340 OnDeinit->M5: 1 Wird sofort und ohne Verzögerung aufgerufen!
2017.02.06 01:31:48.409 OnInit->M15

Dateien:
Test.mq5  2 kb
 
A100:

Mehr als 30 Minuten sind vergangen, und es gibt immer noch keinen OnDeinit->M5-Aufruf

Und jetzt ändern wir den Expert-Code (ändern Sie die Reihenfolge leicht) ...

Bitte fügen Sie den Code bei.
 
Renat Fatkhullin:
Bitte fügen Sie den Code bei.
Angehängt an den letzten Beitrag mit demselben Namen. Tatsächlich wurde ein statischer Aufruf durch einen dynamischen ersetzt und das Ergebnis ist grundlegend anders
 
A100:
Im Anhang zum letzten Beitrag mit demselben Namen. Tatsächlich wurde ein statischer Aufruf durch einen dynamischen ersetzt und das Ergebnis ist grundlegend anders
Danke, wir werden uns das ansehen.

Es scheint, dass im ersten Fall das Fehlen von OnDeinit und die statische Variable, die wir vergessen haben, den Destruktor im Ergebnis aufzurufen, der Optimierung einen schlechten Streich gespielt haben.
 
Alexey Kozitsyn:
Können Sie klarstellen, über welche Themen wir sprechen? Funktionieren nicht alle Indikatoren für dasselbe Symbol im selben Thread?
Ja. Die verschiedenen Threads werden angezeigt, wenn das Diagramm das Symbol ändert, nicht den Zeitrahmen.

Wenn wir nur den Zeitrahmen ändern, wird die neue Kopie des Indikators im gleichen Thread wie der alte berechnet.

Wir können uns aber auch nicht darauf verlassen, dass der Deinit-Befehl auf M5 früher verarbeitet wird als der Init-Befehl auf M15
 
Slawa:
Wenn wir nur den Zeitrahmen ändern, wird die neue Kopie des Indikators im gleichen Thread wie der alte berechnet.

Aber hier können wir uns nicht darauf verlassen, dass der Deinit-Befehl auf M5 früher verarbeitet wird als der Init-Befehl auf M15.
Bitte fügen Sie es in die Hilfe ein, bitte.
 
Slawa:

Hallo,

Bitte achten Sie sehr genau auf die Nachricht https://www.mql5.com/ru/forum/166358/page4#comment_4064293

Dies ist sehr wichtig,

Es gibt einen neuen Fehler 1158, steht er nicht in der Hilfe?

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

Fehler bei der Ausführung

Zugriffsverletzung bei 0x030A00AD gelesen nach 0x00000005 in '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; }

Alle Dateien (außer dem Indikator) befinden sich im MQL5-Ordner\Scripts\.

Der Indikator selbst ist nicht erforderlich, kann aber z. B. vonhttps://www.mql5.com/ru/forum/1111/page1803#comment_4063671 heruntergeladen werden.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • www.mql5.com
Форум алго-трейдеров MQL5
 
fxsaber:
Stellen Sie es bitte unter Hilfe ein.
Siehe hier - Laufende Programme

Eine Übersicht über die Programme in MQL5 finden Sie in der nachstehenden Tabelle:

Programm

Ausführung

Hinweis

Drehbuch

In einem eigenen Thread so viele Skripte, wie es Ausführungs-Threads für sie gibt

Ein Skript in einer Schleife kann die Arbeit anderer Programme nicht unterbrechen

Experte

In einem eigenen Thread, so viele Experten - so viele Ausführungsthreads für sie

Ein Experte in einer Schleife kann die Arbeit anderer Programme nicht stören

Indikator

Ein Ausführungsstrang für alle Indikatoren auf einem Symbol. So viele Symbole mit Indikatoren - so viele Ausführungsstränge für sie

Endlosschleife in einem Indikator stoppt alle anderen Indikatoren für dieses Symbol

 
A100:

Sie werden in der Form B'11111111111111111111111111111111' geschrieben.

Leider bin ich mit diesem Format nicht vertraut.

Das Experiment hat gezeigt, dass die Zahl im grafischen Puffer nach denselben Regeln dargestellt wird wie die doppelte Zahl - d. h. es ist nicht möglich, eine so lange Zahl durch den grafischen Puffer zu leiten - frustrierend.

Grund der Beschwerde: