Errori, bug, domande - pagina 1392

 
Ilya Malev:

...

In ogni caso, si è dimostrato in un modo storto che chiamare OnCalculate da OnTimer funziona)

Abbiamo bisogno di aggiungere la corretta trasmissione del valore nelle serie temporali

L'articolo mostra proprio questo esempio. )

Ecco un altro esempio di test con lo stesso metodo:MQL5 Recipes - Development of Multicurrency Indicator for Price Divergence Analysis >>>.

 
Karputov Vladimir:

La variabile count dovrebbe essere incrementata prima di lasciare OnCalculate() - allora questa variabile conterà correttamente tutte le corse in OnCalculate.

Non dovrebbe contarli tutti, ma solo fino al calcolo dell'Ishimoku. Per tutto questo tempo, il conteggio è stato maggiore o uguale a 0 e poi a -1. In realtà non ha importanza. Ciò che è importante è che

1) Al primo avvio dell'indicatore, è stato chiamato una volta (OnCalculate) e non è partito fino al tick successivo (nei fine settimana e nei giorni festivi fino a diversi giorni), se non premiamo il pulsante "Refresh".

2) A questa prima chiamata, l'indicatore Ishimoku non ha avuto il tempo di calcolare (per non parlare di indicatori più complessi)

3) Se usate OnTimer invece di OnCalculate (o chiamate OnCalculate da OnTimer), un utente può avviare un indicatore che sarà costruito automaticamente, altrimenti deve premere il pulsante Refresh (probabilmente diverse volte) o aspettare i prossimi tick. Il che è un inconveniente evidente, rispetto alla stessa MT4.

Anatoli Kazharski:
È abbastanza normale negli indicatori semplici. Ma in quelli più complessi a volte non funziona correttamente. )
Secondo me, è più facile usare OnTimer invece di OnCalculate.
 
Ilya Malev:

Lì non bisognava contare tutto, ma solo fino al calcolo dell'Ishimoku. Tutto quel tempo il conteggio era maggiore o uguale a 0 e poi a -1. In generale, non ha importanza. Ciò che è importante è che

...

L'idea è che l'utente veda il numero di input in OnCalculate. Allo stesso tempo in OnCalculate, quando il risultato diCopyBuffer è superiore a zero, vengono visualizzati i messaggi sul successo dell'inserimento dei valori nel buffer. Di conseguenza, il numero di voci di successo in OnCalculate è visivamente visibile.
 
Karputov Vladimir:
L'idea è che l'utente veda il numero di voci in OnCalculate. In questo caso nello stesso OnCalculate, quando il risultato diCopyBuffer è superiore a zero, vengono emessi i messaggi sulla ricezione di successo dei valori nel buffer. Di conseguenza, il numero di voci di successo in OnCalculate è visivamente visibile.

Capisco, è solo che siamo già andati un po' oltre questo esempio. È stato usato, sistemato e restituito alla questione principale. L'esempio ha confermato che dalla prima esecuzione il calcolo non ha luogo nel fine settimana. L'ha confermato per me, almeno. Avrei dovuto cliccare sempre su "Aggiorna". Personalmente lo trovo inaccettabile per gli utenti. Quindi cercherò di farlo attraverso OnTimer.

 

Non è possibile aspettare che la serie temporale sia pronta in OnCalculate, perché tutto si bloccherebbe. Quindi, se non è pronto, facciamo un EventTimer per un millisecondo e controlliamo la prontezza in OnTimer. Non appena la serie temporale è pronta, chiamiamo OnCalculate e uccidiamo il timer con KillTimer.

Ho un'altra domanda, come posso essere sicuro al 100% che tutte le serie temporali richieste siano pronte o no?

 

Sembra che OnTimer negli indicatori, che sono chiamati da altri indicatori, non funzioni affatto. Pertanto, non sarà possibile aggiornarli attraverso OnTimer. Sembra che io debba sopportare decine di click inutili sul grafico "Refresh" durante l'operazione, rispetto a MT4.

E come sfortuna sarà fatto ogni volta usando il mouse dal menu, perché non c'è una tale opzione nella Toolbar, né c'è un tasto di scelta rapida per essa. E ci sono indicatori "pesanti", che sono costruiti molto più a lungo di 1 secondo.

 
Ilya Malev:

... E ci sono indicatori "pesanti" che richiedono molto più di 1 secondo per essere costruiti.

Ho incontrato il problema degli indicatori "pesanti". Guardate i link in ordine - sarete interessati.

Il punto chiave - un indicatore pesante per un simbolo rallenta il lavoro di tutti gli EAs su questo simbolo.Anche su un'altra chat!!! Gli indicatori pesanti sono il male :)

2)Un tema con una descrizione e opzioni per risolvere il problema

3.la soluzione del problema all'interno del mercato

 
Andrey Miguzov:

Hanno incontrato il problema degli indicatori "pesanti". Date un'occhiata ai link in ordine - sarete interessati.

Non ho bisogno di scambiare dati tra EAs e indicatori, e gli indicatori stessi, anche se "pesante" in parte, ma eseguire calcoli relativamente lunghi solo al momento del calcolo di tutta la storia all'inizio.

Il problema è che non posso aspettare il calcolo di tutti gli altri indicatori utilizzati in questo indicatore al primo avvio di OnCalculate, e OnCalculate stesso viene richiamato solo al prossimo tick, che non è presente nel fine settimana per esempio. Non puoi usare OnTimer al posto di (o insieme a) OnCalculate, perché non sarà chiamato in indicatori che non sono stati chiamati da un utente, ma per esempio sono stati chiamati da un altro indicatore usando iCustom (è così finora secondo i miei test). Vorrei trovare una soluzione affinché l'indicatore attenda automaticamente il calcolo di tutti gli indicatori utilizzati in esso e fornisca informazioni senza l'interferenza dell'utente (senza premere regolarmente il pulsante "Aggiorna" dal menu a discesa del grafico, se la frequenza dei nuovi tick non è sufficiente per questo).

 
Ilya Malev:

Non ho bisogno di scambiare dati tra gli Expert Advisors e gli indicatori, e gli indicatori stessi, anche se "pesanti" in parte, ma eseguono calcoli relativamente lunghi solo al momento del calcolo di tutta la storia all'inizio.

Il problema è che non posso aspettare il calcolo di tutti gli altri indicatori utilizzati in questo indicatore al primo avvio di OnCalculate, e OnCalculate stesso viene richiamato solo al prossimo tick, che non è presente nel fine settimana per esempio. Non puoi usare OnTimer al posto di (o insieme a) OnCalculate, perché non sarà chiamato in indicatori che non sono stati chiamati da un utente, ma per esempio sono stati chiamati da un altro indicatore usando iCustom (è così finora secondo i miei test). Mi piacerebbe trovare una soluzione, che l'indicatore sia in grado di attendere automaticamente il calcolo di tutti i suoi indicatori e fornire informazioni senza l'intervento dell'utente (senza premere regolarmente il pulsante "Aggiorna" dal menu a discesa del grafico, se la frequenza dei nuovi tick non è sufficiente per questo).

Se il compito è impostato in questo modo - non c'è davvero bisogno.

Ma possiamo creare un Expert Advisor che creerà indicatori, riceverà dati da essi, elaborerà i dati e passerà il risultato al visualizzatore di indicatori. Allora non ci saranno tutti questi problemi che hai descritto. E anche molti altri problemi...

La soluzione non è molto bella, ma aiuta a sbarazzarsi dei problemi descritti.

 

SALVE, POTRESTE CONSIGLIARMI, QUANDO APRO UN CONTO REALE SU MT5, QUANTO TEMPO CI VUOLE PERCHÉ UN IMPIEGATO DELLA COMPAGNIA MI CHIAMI E COMPLETI LA PROCEDURA DI APERTURA DEL CONTO?