Controllo automatico dei prodotti nel mercato (domande e suggerimenti) - pagina 6

 
Andrey Khatimlianskii:

Sì, infatti, ho dimenticato "@global_initializations".

Si scopre che disegnare le barre e i buffer degli indicatori richiede così tanto tempo?

E se si compila per rilasciare ed eseguire il visualizzatore nello stesso intervallo, scorrendo direttamente fino alla fine ("skip to..."), quanto tempo ci vuole?

Beh, quanto tempo?

 
Prostocar:
Ciao Ciao, ho perso il mio mercato nel terminale non posso installare Expert Advisors e indicatori dal mercato reinstallazione del terminale non ha aiutato così come i prodotti precedentemente acquistati sul mercato non sono aggiornati chi sa come risolvere il problema

Non hai ancora risposto alla mia domanda:

Potete controllarlo nel terminale, nella finestra Strumenti, nella scheda Registro.


Seconda domanda: a quale server ti stai collegando? Prova a connetterti a MetaQuotes-Demo.

 
MetaQuotes Software Corp.:

I registri dell'autovalidatore hanno mostrato che il test su M1 non può superare l'intervallo mensile in un'ora .

Mentre su H1 lo stesso indicatore supera il test in un paio di minuti.

Cercate il motivo nel vostro codice.

La ragione è più probabile che sia nell'autovalidatore. Sono riuscito a scoprire che il problema è in qualche modo legato all'elaborazione della cronologia dei tick.

Quando il primo evento OnCalculate viene processato, l'indicatore cerca di caricare la storia dei tick per l'ultimo giorno, eseguendo la funzione CopyTicksRange. Se ogni barra riceve almeno alcuni tick, la storia ricevuta viene disegnata e poi elabora i tick online. Se alcune barre della storia non hanno ricevuto alcun tick, il gestore OnCalculate restituisce 0 e avvia un timer di 5 secondi. Ai prossimi eventi OnCalculate l'indicatore continua a cercare di caricare la storia dei tick. Nel gestore OnTimer, il timer si ferma e se tutte le chiamate OnCalculate non sono riuscite a caricare la storia per 5 secondi, la richiesta di aggiornamento viene fatta usando lachiamata ChartSetSymbolPeriod(0, NULL, 0).

Notate che tutto viene eseguito in modo asincrono e non ci sono blocchi per logica. Nel caso peggiore, se supponiamo che il database dei tick non sia disponibile per qualche motivo, otterremo una serie di refresh con un periodo di 5 secondi. Ma l'indicatore in questo caso non viene calcolato affatto, perché non ci sono dati. L'influenza del refresh è stata studiata, è assente - vedi commento qui sotto.

Questo codice funziona bene per me online su diversi server, diversi personaggi/tempi e nel tester.

Lo stesso codice sembra bloccarsi da qualche parte nell'autovalidatore. Con il metodo dell'istinto (che non dovrebbe accadere in caso di feedback normale, log ecc.) ho scoperto quanto segue.

Se si elimina il commento per la cronologia dei tick, l'indicatore si autovalida normalmente.

Poiché ci sono molti fattori che richiedono la storia, non posso dire esattamente cosa e in quale combinazione "blocca" l'autovalidatore:

  • CopyTicksRange in assenza di tick storici (ma anche se sono assenti, l'indicatore non calcola e restituisce immediatamente il controllo all'ambiente, i tick online continuano a "ticchettare" liberamente, ho emulato tale situazione - nessun blocco);
  • timer;
  • ChartSetSymbolPeriod (come stress test ho eseguito l'indicatore con questo refresh in modalità estrema (su ogni tick) e non risulta alcun rallentamento o carico notevole della CPU, questa richiesta è anche asincrona);
  • Ho aggiunto un contatore di refresh fallito per fermarli dopo un certo numero di tentativi (5), ma questo non ha effetto sul successo.

Se il refresh è richiesto dal gestore OnTimer - l'autovalidazione fallisce. Se il refresh viene trasferito a OnCalculate - l'autovalidazione ha successo. Quindi, c'è una prova indiretta che è chiamare ChartSetSymbolPeriod da OnTimer che dà un effetto negativo. Ho volutamente eseguito una tale combinazione nel tester - nessun problema. Ovviamente, l'autovalidatore è diverso dal tester disponibile al pubblico.

Poiché le condizioni identificate per passare la convalida non sono molto chiare (strane almeno) e richiedono di rendere il codice artificialmente più complesso per istinto, sono inaccettabili per un prodotto di rilascio.

 
Buon pomeriggio, chiedo aiuto, quando l'autovalidazione mostra un errore di assenza di indicatore, l'indicatore è impostato tramite risorsa, su altri terminali il file compilato funziona senza problemi sia nel test che sul conto reale. Quale può essere il problema?
File:
2yr38jvml4.png  32 kb
 
RODION SLOTIN:
Salve, chiedo aiuto, durante l'autovalidazione si verifica un errore di assenza di indicatore, l'indicatore è impostato tramite risorsa, su altri terminali il file compilato funziona senza problemi sia in test che in tempo reale. Quale può essere il problema?

Cercate di non usare doppie estensioni e trattini. Questa è solo un'ipotesi veloce.

 
RODION SLOTIN:


Può dirmi dove esattamente?

#resource "\Indicators\\\\guru.ex4"

double SigUp= iCustom(Symbol(),0,"\esperti/gufo delle nevi.v1-1.eng.ex4::Indicators\\guru.ex4",Sensitivity,PopUp_Alert,5,0);


Dovresti scriverlo così (esempio):

#resource "\\Indicators\\trend_channel.ex4"

iCustom(Symbol(),0,"::Indicators\\trend_channel.ex4",kstd,bars,shift,0,bars);

e tu hai scritto delle sciocchezze qui.

 
La cartella Libraries è anche elencata nel log per qualche motivo. Perché è così? Eugene ha descritto correttamente il riferimento a una risorsa. Dovrebbe funzionare localmente (se tutte le cartelle di default, MQL4/Experts, MQL4/Indicators). Quando si fissa il lancio locale, molto probabilmente funzionerà in autovalidatore.
 

Salve.

Sto cercando di caricare il mio prodotto sul mercato. La convalida automatica dà il seguente errore:

test su EURUSD,H1 (netting) 2019.05.01 00:00:30 array out of range in 'Anchored VWAP with no Volume.mq5' (387,30) Tuttavia questo non può essere. Sto disponendo il VWAP dove il mouse sposta il punto di partenza. Lo script si compila senza errori e tutto funziona bene. Forse la convalida automatica non può interagire con gli script in cui ho bisogno di selezionare il punto di partenza?

Cos'altro può essere la ragione? L'indicatore ha una scelta tra la lettura con o senza volumi. Di default è "senza", ma forse il validatore passa attraverso tutti i parametri possibili e inciampa sul calcolo con i volumi sulle coppie di valute. Cosa fare?

 
Anton Polkovnikov:

Salve.

Sto cercando di caricare il mio prodotto sul mercato. La convalida automatica dà il seguente errore:

test su EURUSD,H1 (netting) 2019.05.01 00:00:30 array out of range in 'Anchored VWAP with no Volume.mq5' (387,30) Tuttavia questo non può essere. Sto disponendo il VWAP dove il mouse sposta il punto di partenza. Lo script si compila senza errori e tutto funziona bene. Forse la convalida automatica non può interagire con gli script in cui ho bisogno di selezionare il punto di partenza?

Cos'altro può essere la ragione? L'indicatore ha una scelta tra il conteggio con o senza volumi. Di default è "senza", ma forse il validatore passa attraverso tutti i parametri possibili e inciampa sul calcolo con i volumi sulle coppie di valute. Cosa fare?

Tentativo di importare file compilati (anche EX4/EX5) e DLL

I programmi distribuiti attraverso il mercato dovrebbero essere garantiti per essere sicuri per gli utenti. Pertanto, qualsiasi tentativo di usare DLL o funzioni da file EX4/EX5 compilati è considerato un errore. Tali prodotti non saranno pubblicati sul mercato.

Se il vostro programma ha bisogno di usare indicatori aggiuntivi che non sono forniti, usateResources.


Applicazione agli indicatori personalizzati tramite iCustom()

Se il tuo programma ha bisogno di accedere ai dati degli indicatori personalizzati, dovresti mettere tutti gli indicatori necessari inRisorse. I prodotti del mercato devono essere pronti a lavorare in qualsiasi ambiente non preparato, quindi devono contenere tutto il necessario nel vostro file EX4/EX5. Articoli raccomandati sull'argomento:


https://www.mql5.com/ru/articles/2555#dll_and_libraries_prohibited

 
Anton Polkovnikov:

test su EURUSD,H1 (netting) 2019.05.01 00:00:30 array out of range in 'Anchored VWAP with no Volume.mq5' (387,30) Tuttavia questo non può essere.

L'array fuori portata nella linea 387 è il carattere 30. È scritto. Dobbiamo controllare l'array.

Motivazione: