È stato detto "portiamo questa discussione nel forum".
Di cosa vuoi discutere sul forum, della mia cafonaggine o del problema della pulizia della memoria?
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.
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
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.
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 scaricando 1204. Vediamo.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
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:
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.
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:
Avete identificato l'errore?
E la risposta di Service Desk:
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.
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:
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
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.