Errori, bug, domande - pagina 1783

 
A100:

Domanda: quando sarà chiamato OnDeinit->M5 ?

La mia risposta: mai!

La tua risposta sopra: in modo asincrono e con un ritardo

Sono passati più di 30 minuti e OnDeinit->M5 non è ancora chiamato

E ora cambiamo il codice dell'Expert Advisor (cambia leggermente l'ordine) ...

Risultato:

2017.02.06 01:31:45.002 OnInit->M5
2017.02.06 01:31:48.340 OnDeinit->M5:1 Chiamato immediatamente e senza ritardo!
2017.02.06 01:31:48.409 OnInit->M15

File:
Test.mq5  2 kb
 
A100:

Sono passati più di 30 minuti e non c'è ancora nessuna chiamata OnDeinit->M5

E ora cambiamo il codice Expert (cambiare leggermente l'ordine) ...

Allega il codice, per favore.
 
Renat Fatkhullin:
Allega il codice, per favore.
Allegato all'ultimo post con lo stesso nome. In realtà la chiamata statica è stata sostituita da una dinamica e il risultato è fondamentalmente diverso
 
A100:
Allegato all'ultimo post con lo stesso nome. In realtà una chiamata statica è stata sostituita da una dinamica e il risultato è fondamentalmente diverso
Grazie, diamo un'occhiata.

Sembra che nel primo caso l'assenza di OnDeinit e la variabile statica, che di conseguenza abbiamo dimenticato di chiamare il distruttore, abbia giocato un brutto scherzo all'ottimizzazione.
 
Alexey Kozitsyn:
Puoi chiarire di quali thread stiamo parlando? Non funzionano tutti gli indicatori dello stesso simbolo nello stesso thread?
Sì. I diversi fili saranno se il grafico cambia il simbolo, non il timeframe.

Se cambiamo solo il timeframe, la nuova copia dell'indicatore sarà calcolata nello stesso thread di quella vecchia.

Ma anche noi non possiamo contare sul fatto che il comando Deinit su M5 sarà processato prima del comando Init su M15
 
Slawa:
Se cambiamo solo il timeframe, la nuova copia dell'indicatore sarà calcolata nello stesso thread di quella vecchia.

Ma qui non possiamo contare sul fatto che il comando Deinit su M5 sarà processato prima del comando Init su M15.
Per favore, aggiungetelo all'Aiuto, per favore.
 
Slawa:

Salve,

si prega di prestare molta attenzione al messaggio https://www.mql5.com/ru/forum/166358/page4#comment_4064293

Questo è molto importante,

c'è un nuovo errore 1158, non è nell'aiuto?

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

Errore di esecuzione

Violazione di accesso a 0x030A00AD letto a 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; }

Tutti i file (tranne l'indicatore) si trovano nella cartella MQL5\Scripts\.

L'indicatore stesso non è richiesto, ma può essere scaricato, per esempio, dahttps://www.mql5.com/ru/forum/1111/page1803#comment_4063671

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • www.mql5.com
Форум алго-трейдеров MQL5
 
fxsaber:
Mettilo in Aiuto, per favore.
Guarda qui - Programmi in esecuzione

Per un riassunto dei programmi in MQL5, vedere la tabella qui sotto:

Programma

Esecuzione

Nota

Script

Nel proprio thread, tanti script quanti sono i thread di esecuzione per essi

Uno script in loop non può interrompere il lavoro di altri programmi

Esperto

Nel proprio thread, altrettanti esperti - altrettanti thread di esecuzione per loro

Un esperto in loop non può interrompere il lavoro di altri programmi

Indicatore

Un thread di esecuzione per tutti gli indicatori su un simbolo. Tanti simboli indicatori - tanti thread di esecuzione per loro

Un loop infinito in un indicatore fermerà tutti gli altri indicatori su questo simbolo

 
A100:

Sono scritti nella forma B'11111111111111111111111111111111111111'.

Ahimè, non ho familiarità con questo formato.

L'esperimento ha mostrato che il numero nel buffer grafico è rappresentato dalle stesse regole del doppio - cioè non è possibile passare un numero così lungo attraverso il buffer grafico - frustrante.

Motivazione: