Servicedesk. Reclami, suggerimenti.

 

Buon pomeriggio. Oggi ancora una volta ho incontrato il fatto che il Service Desk non è sempre disposto non solo a sentire il problema, ma non vuole nemmeno ascoltarlo. Cominciamo.

Qualche giorno fa ho scritto un'altra richiesta a servicedesk. Il succo della richiesta è il seguente (per MT4):

Индикатор находится на ТФ, старше М1. Пытаюсь получить данные через функцию SeriesInfoInteger() с ТФ М1. Функция возвращает нули для свойств SERIES_BARS_COUNT, SERIES_FIRSTDATE, SERIES_SERVER_FIRSTDATE после того, как на М1 образовался новый бар. До того, как образовался новый бар - данные возвращаются корректные. После - нули. 

Il secondo problema, di tipo simile. L'indicatore è su TF MN1. Sto cercando di ricevere dati tramite la funzione SeriesInfoInteger() dal TF M5. Per un po' di tempo la funzione restituisce valori corretti, e poi smette di farlo e comincia a restituire degli zeri, anche se nessuna nuova barra è stata aperta su M5!

In entrambi i casi, dopo essere tornato al TF da cui sto cercando di ottenere i dati e passando di nuovo a un TF superiore, i dati sono corretti per un po', ma poi - zeri.

L'indicatore è nell'applicazione.

Ho bisogno delle suddette proprietà della funzione SeriesInfoInteger() per controllare/caricare la storia disponibile per il TF oltre a quella dell'indicatore.

A nessuno dei programmatori piacerà l'ambiguità del seguente tipo: all'inizio ci sono i dati, poi non ci sono e non si possono ottenere. Inoltre, l'utente (o gli utenti), per il quale il programma è scritto, non piacerà. Potete vedere dal messaggio che ho fornito il programma per testare questo errore. Inoltre è stato fornito anche un registro:

2015.10.29 14:25:52.663 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:53.113 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:53.419 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:53.930 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:54.487 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:54.795 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:55.412 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00
2015.10.29 14:25:55.943 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00
2015.10.29 14:25:56.678 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00
2015.10.29 14:25:57.169 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00
2015.10.29 14:25:57.938 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00

I dati vengono semplicemente abbandonati e possono essere recuperati ulteriormente solo cambiando il TF con quello per il quale è stata fatta la richiesta di dati.

E questa è la risposta che ricevo dalla SR.

Squadra di supporto2015.10.29 10:41
Per ottenere i dati effettivi del periodo-simbolo di qualcun altro è necessario accedere a questi dati più di una volta ogni 10 secondi. Oppure accedere a questi dati da un Expert Advisor, per esempio usando iTime (allora i dati possono essere consultati almeno una volta ogni 3 minuti)
Squadra di supporto2015.10.29 10:42

Stato:ApertoChiuso

Si può vedere dal messaggio che il Service Desk (o alcuni dei loro dipendenti) non si preoccupano affatto di ciò che gli utenti scrivono sugli errori. Mi viene richiesto di accedere ai dati più frequentemente di una volta ogni 10 secondi? Il registro mostra che i dati sono richiesti molto più spesso, ad ogni tick. Sono sicuro che questo registro non è stato nemmeno letto. Ma mi è stato suggerito di accedervi "più spesso" o di accedere ai dati dall'EA. Genio. Oh, e la domanda è stata immediatamente chiusa, come se avessi ricevuto aiuto.

Andare avanti. Ecco la mia risposta:

Alexey Kozitsyn2015.10.29 10:57
Guardate i tronchi! L'appello continua ogni volta! Le zecche sono molto più frequenti! Allo stesso modo nel timer con una frequenza di 10 volte al secondo!
Alexey Kozitsyn2015.10.29 10:57
Stato:ChiusoAperto

Alexey Kozitsyn2015.10.29 10:59
Riguardo ai periodi - sono solo i periodi per il test! Se è questo che intende. Di nuovo, i dati sono richiesti ad ogni spunta!
Alexey Kozitsyn2015.10.29 11:00
Possono venire inizialmente e poi smettere di farlo! Dai un'occhiata più da vicino ai registri.
Alexey Kozitsyn2015.10.29 12:06

Avete identificato l'errore?

E la risposta di Service Desk:

Squadra di supporto2015.10.29 12:09

Aprire il grafico richiesto, poi i suoi dati saranno sempre in memoria fino a quando non lo si chiude

Dalla build 900 abbiamo implementato un freeing di memoria aggressivo. Se c'è un problema di memoria, tutto ciò che può essere liberato viene liberato.

Ho bisogno di queste proprietà per selezionare il più piccolo TF appropriato che ha abbastanza dati. Io, invece, mi offro di aprire ogni grafico. E non importa quanti strumenti analizzi allo stesso tempo, apri tutti i grafici possibili e sarai felice.

Sul rilascio aggressivo e i problemi di memoria. Il terminale non ha problemi di memoria. Non ci sono errori nei log del terminale. Da questo si può giudicare che sono stato appena informato di una situazione in cui la memoria potrebbe essere liberata. Ma ovviamente non è il mio caso. Un altro fatto è che il Service Desk non vuole esaminare il problema e vuole solo sbarazzarsene.

Il prossimo.

Alexey Kozitsyn2015.10.29 12:27

Non pensate che sia meglio perfezionare il rilascio aggressivo della memoria piuttosto che fecondare la grafica? E di quali problemi di memoria parla? E sì, per favore rilasciate, ma rendete possibile recuperarli ulteriormente senza stampelle!

Avete provato ad eseguire l'indicatore dall'applicazione? Capite che i dati provengono dal TF di qualcun altro, arrivano, arrivano e bam - basta smettere di farlo! È un comportamento normale?

Ecco un frammento della documentazione:

Per gli Expert Advisor e gli indicatori personalizzati, è meglio usare il modello di elaborazione basato sugli eventi. Se gli eventi onTick() o OnCalculate() non ottengono tutti i dati necessari, si dovrebbe uscire dal gestore dell'evento, aspettandosi che i dati siano disponibili la prossima volta che il gestore viene chiamato.

L'indicatore che ho citato usa esattamente questo modello. Se non viene ricevuto alcun dato, ci si aspetta che i dati arrivino al prossimo tick. Ma i dati non arrivano più! Niente affatto! Questa è una contraddizione di documentazione!

In mql5 tutto funziona come dovrebbe essere, perché non può essere organizzato in mql4 allo stesso modo?

E la risposta:

Squadra di supporto2015.10.29 12:45

No, non lo fa.

Per quanto riguarda la documentazione - ecco una conclusione diretta: se avete costantemente bisogno di dati di qualche simbolo-periodo, allora assicurate la presenza costante di questi dati in OnInit. Per esempio con la semplice query iTime(needed_symbol,needed_period). E mantenere questo iTime su ogni tick.

Lei stesso sta caricando il suo terminale di memoria. Quindi riducete il numero di barre del grafico al limite necessario. Per fare il backup dei dati critici, aprite il grafico con il giusto simbolo-periodo.

Se non siete soddisfatti dello stato attuale delle cose, discutiamone sul forum. È inutile discuterne qui.

La MT5 ha un modello completamente diverso per l'utilizzo dei dati storici

Squadra di supporto2015.10.29 12:46
Stato:Chiuso

In ordine:

No, non sembra esserlo.

Semplicemente cafone. Nessuna spiegazione, nessun commento.

Per quanto riguarda la documentazione - la conclusione qui è semplice: se avete bisogno di alcuni dati simbolo-periodo tutto il tempo, allora assicuratevi che questi dati siano sempre presenti in OnInit. Per esempio con la semplice query iTime(needed_symbol,needed_period). E tenere iTime su ogni tick.

La prima stampella del buon senso. Un'inferenza semplice e diretta? Dov'è questa conclusione? Pensi davvero che tutti quelli che scrivono su mql abbiano tratto questa conclusione da soli? Non speculare per le persone. Le conclusioni sono tratte da ciò che è scritto. Per il confronto. Nella documentazione di mql5, nella sezione "Organizzazione dell'accesso ai dati" c'è un esempio di come deve essere organizzato l'accesso ai dati. Tutto funziona perfettamente. Qui dovete indovinare che se la funzione SeriesInfoInteger() restituisce 0, dovete chiamare la funzione iTime() per il simbolo/periodo necessario. Perché non c'è scritto? Perché non possiamo semplicemente migliorare la funzione SeriesInfoInteger() senza queste stampelle? O almeno chiarirlo nella documentazione? Cari sviluppatori, se volete avere meno domande, scrivete nella documentazione una volta in dettaglio come e cosa. La gente sa leggere!

Lei stesso sta caricando il suo terminale di memoria.

Mi chiedo cosa volevi dirmi! Il terminale può consumare memoria, ma sovraccaricare il terminale di memoria è qualcosa di nuovo per me.

Quindi riducete il numero di barre del grafico al limite necessario. Per fare il backup dei dati critici, aprite il grafico con il giusto simbolo-periodo.

Quante barre pensate che stessi testando l'indicatore nell'applicazione? Sembra che non ti importi, perché non l'hai nemmeno chiesto. È un numero di 5000. È il minimo possibile. E ancora il suggerimento di aprire il grafico. Ho capito, grazie. Aggiungere questo alla documentazione (se necessario).

E finale.

Se non siete soddisfatti dello stato attuale delle cose, portiamo questa discussione nel forum. È inutile discuterne qui.

MT5 ha un modello completamente diverso di utilizzo dei dati storici

Sì, non sono contento dello stato attuale delle cose. Gli utenti trovano errori (considero ancora il comportamento della funzione SeriesInfoInteger() un errore) nel tuo programma. Lo fanno gratis. E non è che non si voglia correggerli, non si vuole nemmeno ascoltarli e guardare i dati forniti dagli utenti. E non è la prima volta, quando i fatti vengono accettati con una vendetta, e non ci si preoccupa degli errori. Spero che gli sviluppatori ascoltino e che ci siano cambiamenti positivi in futuro. Il vostro atteggiamento attuale spopolerà l'atteggiamento verso di voi e il vostro prodotto.

Grazie a tutti per aver letto.

Se qualcuno vuole testare questa funzione, l'indicatore è nell'appendice.

 

È stato detto "portiamo questa discussione nel forum".

Di cosa vuoi discutere sul forum, della mia cafonaggine o del problema della pulizia della memoria?

 
Slawa:

Vi è stato detto "portiamo questa discussione nel forum".

Di cosa vuoi discutere sul forum, della mia maleducazione o del problema della pulizia della memoria?

Così ho messo la discussione sul forum. Rendiamolo compatibile.

A proposito di maleducazione. Non è sempre bello parlare con Searcydesk. Argomenti di cui sopra.

Sulla funzione. Ho dato la prova che la funzione non funziona correttamente. Mi hai offerto delle "stampelle". Se non puoi lavorare correttamente se non senza stampelle, aggiungi una descrizione di queste stampelle alla documentazione in modo che non sorgano domande in futuro.

 
Vorrei chiedere ai programmatori la loro opinione. Sei soddisfatto del comportamento della funzione SeriesInfoInteger()? Siete soddisfatti della documentazione della lingua?
 
Alexey Kozitsyn:
Chiedo ai programmatori di condividere le loro opinioni. Siete soddisfatti del comportamento della funzione SeriesInfoInteger()? Sei soddisfatto della documentazione della lingua?

Ho sollevato il problema dei dati negli indicatori molto tempo fa!

https://www.mql5.com/ru/forum/42180

Mi è stato assicurato che il problema è stato risolto.

Ne hanno anche scritto nell'abstract del rilascio 1200

17:Terminale: Corretto un errore che portava a scaricare i dati storici come inutilizzati, nonostante i regolari accessi ai dati dai programmi MQL5.

Quindi il problema non è stato risolto?

ФОРТС Прошу помощи
ФОРТС Прошу помощи
  • www.mql5.com
Прошу откомпилировать этот код и "бросить" индикатор на символ MIX-6. - - Категория: автоматические торговые системы
 
Михаил:

Ho sollevato il problema dei dati negli indicatori molto tempo fa!

https://www.mql5.com/ru/forum/42180

Mi è stato assicurato che il problema è stato risolto.

Ne hanno anche scritto nell'abstract del rilascio 1200

17:Terminale: Corretto un errore che portava a scaricare i dati storici come inutilizzati, nonostante i regolari accessi ai dati dai programmi MQL5.

Quindi il problema non è stato risolto?

Intendevo MT4 in questo caso. Ma anche per MT5 la questione è rilevante.

 
Alexey Kozitsyn:

In questo caso mi riferivo a MT4. Ma per MT5 la domanda è anche rilevante.

Non ho ancora aggiornato al 1200, non posso controllare se è risolto o no.

Ma c'era un tale bug in MT5

 
Михаил:

Non ho ancora aggiornato al 1200, non posso controllare se è già stato risolto.

Ma c'era un tale bug in MT5

Ora sta caricando 1204. Vedremo.
 
Alexey Kozitsyn:
Ora sta scaricando 1204. Vediamo.
Controllato sul 1200 (demo bx), sembra essere stato corretto :)
 
Se non si usa la funzione MT5SeriesInfoInteger e si usano invece le vecchie funzioni MT4, iBars, iTime, MarketInfo ecc. allora il problema rimane?
 
In quattro, lo sistemeremo - esagerando con lo scarico aggressivo dei grafici inutilizzati.