Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1461

 
In MT4 nel tester come tracciare la pressione di un pulsante di stop per un indicatore. OnDeanit non viene chiamato anche se il test è finito. O come chiudere i file aperti quando si preme il pulsante di stop nel tester.
 
Valeriy Yastremskiy:
In MT4 nel tester come tracciare la pressione di un pulsante di stop per un indicatore. OnDeinit non viene chiamato anche se il test è finito. O come chiudere i file aperti quando si preme il pulsante stop in tester.

i file aperti dovrebbero comunque essere chiusi automaticamente

se no, provate a creare file con SB, ci sono CFile, CFileTxt come OOP - gli oggetti saranno distrutti durante la deinizializzazione e i distruttori chiuderanno i file

https://www.mql5.com/ru/docs/standardlibrary/fileoperations


HH: Perché pensate che OnDeinit() non sia chiamato? - provare ad aprire e scrivere un file in esso

 
Igor Makanu:

i file aperti dovrebbero comunque essere chiusi automaticamente

se no, provate a creare file con SB, ci sono CFile, CFileTxt come OOP - gli oggetti saranno distrutti durante la deinizializzazione e i distruttori chiuderanno i file

https://www.mql5.com/ru/docs/standardlibrary/fileoperations


HH: Perché pensate che OnDeinit() non sia chiamato? - Provate ad aprire e scrivere un file in esso.

Per esperienza. Io stesso sono rimasto sorpreso. Anche se è logicamente corretto, è un indicatore e non dovrebbe essere scaricato come un Expert Advisor. Devo cancellare l'indicatore dal grafico del tester manualmente o chiudere la finestra. E solo allora vedo gli avvisi dopo aver chiuso i file)))

I test sono semplici, non voglio usare le bibbie. Sì e penso che ci sia qualcosa di diverso dagli eventi del mouse sul pulsante di stop nel tester dell'indicatore. I tagli di ricerca superficiale non hanno dato purtroppo.

Zy, i file, se non chiusi, non hanno accesso a loro, e se OnDeinit() improvvisamente non funziona, saranno chiusi solo chiudendo il terminale.

In modo sperimentale, ho dimenticato di registrare la chiusura dei file)))

 
Valeriy Yastremskiy:

Con esperienza. Io stesso sono rimasto sorpreso. Anche se logicamente tutto è corretto, si tratta di un indicatore, e non dovrebbe essere scaricato come un Expert Advisor. Devo cancellare manualmente l'indicatore dal grafico del tester o chiudere la finestra. E solo allora vedo gli avvisi dopo aver chiuso i file)))

I test sono semplici, non voglio usare le bibbie. Sì e penso che ci sia qualcosa di diverso dagli eventi del mouse sul pulsante di stop nel tester dell'indicatore. I tagli di ricerca superficiale non hanno dato purtroppo.

Zy, i file, se non chiusi, non hanno accesso a loro, e se OnDeinit() improvvisamente non funziona, saranno chiusi solo chiudendo il terminale.

In via sperimentale, ho dimenticato di registrare la chiusura del file)))

Non hai descritto l'intero processo di test dell'indicatore prima

Per quanto ho capito si esegue l'indicatore nel tester MT4 in modalità visiva, anche se è possibile aggiungere l'indicatore..... nel visualizzatore in MT4

Non ho mai testato un indicatore in MT4, lo controllo solo in EA nel codice TS


come alternativa, impostate la data nell'indicatore, quando finite il test come variabile e dopo aver raggiunto questa data, salvate il file e uscite da OnCalculate() - il codice è un paio di righe, ma funzionerà sicuramente

 
Igor Makanu:

Non hai descritto l'intero processo di test dell'indicatore prima

Per quanto ho capito si esegue l'indicatore in MT4 tester in modalità visiva, ma si può anche riempire in MT4 nel visualizzatore con indicator.....

Non ho mai testato un indicatore in MT4, lo controllo solo in EA nel codice TS


come alternativa, impostate la data nell'indicatore, quando finite il test come variabile e dopo aver raggiunto questa data, salvate il file e uscite da OnCalculate() - il codice è un paio di righe, ma funzionerà sicuramente

Sì, la finestra del tester non si preoccupa se l'indicatore viene testato o se l'indicatore è sovrapposto alla finestra del tester.

Grazie per questa stampella non così ovvia)

boolIsTesting();

Dovrò provare, credo che dovrebbe tornare con una bugia di arresto)
 
Valeriy Yastremskiy:

Sì, la finestra del tester non si preoccupa se l'indicatore viene testato o se l'indicatore è sovrapposto alla finestra del tester.

Grazie per questa stampella non così ovvia)

boolIsTesting();

Dovrei provarlo, sembra che dovrebbe restituire false per stop)

No, non l'ha fatto.

Ho una domanda aperta, come tracciare l'evento 2021.04.29 08:55:41.177 2020.10.01 08:23:13 Tester: pulsante di arresto premuto

ha fatto così)

int OnInit()
{
if(IsTesting()) FlagTest=true;
....
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

if(!IsTesting() && FlagTest) { Print("Окончание тестирования"); OnDeinit(1);}
....
}

 
Igor Makanu:

ricerca di articoli da Metacquot :"Cloud"

letto molto tempo fa, gli agenti remoti dovrebbero scaricare la cronologia dal vostro PC o se collegati allo stesso broker - prendere i tick reali dal broker


ma potrei sbagliarmi, non l'ho usato.


uno degli articoli di Metacquot su questo argomento, forse ci sono informazioni lìhttps://www.mql5.com/ru/articles/2612

Igor, grazie. Documentazione, forum, articoli - non ho ancora trovato una risposta.

Nel registro c'è:

"REGRES_EURGBP: tick già sincronizzati [57 byte]".

Spero che questo sia quello di cui ho bisogno.

 
Valeriy Yastremskiy:

No, non l'ha fatto.

Comunque, la questione è aperta, come tracciare nel test dell'indicatore l'evento 2021.04.29 08:55:41.177 2020.10.01 08:23:13 Tester: pulsante di arresto premuto

ha fatto così)


devi scrivere qualcosa del genere:

datetime t_stop=D'20.04.2021'; 
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
if(time[0]>=t_stop)
{
        if(f_handle<0) return;
        FileClose(f_handle);
        f_handle = -1;
}
non riesco a ricordare MT4 permette di testare l'ultimo giorno (oggi) - bisogno di prendere t_stop
 
HimOrik:

Igor, grazie. Documentazione, forum, articoli - non ho ancora trovato la risposta.

Nel registro c'è:

"REGRES_EURGBP: tick già sincronizzati [57 byte]".

Spero che questo sia quello di cui ho bisogno.

i moderatori sono silenziosi, ci sono pochi utenti attivi

crea un topic con la tua domanda nella discussione generale, penso che risolverai il tuo problema più velocemente

 
Igor Makanu:

devi scrivere qualcosa del genere:

Non ricordo che MT4 mi permette di testare l'ultimo giorno (oggi) - ho bisogno di scegliere t_stop

Capisco questa idea, è utile, ma non funziona per me in questo caso. Ho bisogno di cronometrare il Tester: pulsante di arresto premuto nell'indicatore