[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 406

 
Il Bid e l'Ask contengono i valori al momento in cui la funzione Star() viene avviata. La funzione MarketInfo() dà i valori attuali (più recenti). La funzione RefreshRates() aggiorna le variabili Bid e Ask.
hoz:

1. Sì, sono solo sovraccarico di lavoro, così ho scritto una cosa stupida...

2. Lungo è un termine relativo. Sta suggerendo di misurare la velocità del calcolo medio?

3. Se assumiamo, come avete scritto, che il terminale corrisponde all'ultimo valore della variabile dei dati di mercato, nel nostro caso, il prezzo, significa che il terminale aggiorna da solo le variabili dell'ambiente di mercato, se c'è una connessione con il server,

4. Ne consegue che la funzione RefreshRates() non è necessaria. Ma non è così, perché la funzione è presente, il che significa che i prezzi non sono sempre aggiornati, giusto?

Non sto discutendo, sto chiedendo, argomentando il mio punto di vista. Si prega di notare che!


2. Dove l'hai visto e come sei arrivato a questa sorprendente conclusione?

3. Sì. Potete immaginare, basta guardare la finestra di panoramica del mercato, come i numeri rimbalzano senza sosta lì.

4. Le variabili Bid e Ask sono assegnate (dal terminale) con i valori che avevano quando la funzione Start è stata eseguita, non importa quanto tempo la funzione viene eseguita, i valori in Bid e Ask saranno gli stessi. Ecco perché abbiamo bisogno di RefreshRates() o dovremmo usare MarketInfo()

 
hoz:

Quindi se la richiesta è locale e non al server, allora questa funzione dovrebbe funzionare istantaneamente! Ed è stato detto sopra che la funzione RefreshRates() potrebbe non avere il tempo di aggiornare i dati dell'ambiente di mercato...

Dove è stato detto e da chi? Non c'è nessun problema.
 
hoz:


Quindi se non c'è un nuovo tick, il prezzo non cambierà... e ovviamente i prezzi precedenti saranno ancora validi. Quindi non c'è bisogno di complicare le cose!

E Vadim ha scritto in cima che era necessario controllare questo punto. Ma non c'era logica nelle sue parole, e nemmeno argomentazione. È strano... Così, inserisco RefreshRates() ovunque e in quel momento gli ultimi dati conosciuti dal terminale diventano utilizzabili al posto dei precedenti e tutto va come dovrebbe. A condizione cheRefreshRates() restituisca TRU. Se è Falso, significa che i dati non sono cambiati e funziona con i prezzi precedenti... Sto ragionando correttamente?

Si scopre che non c'è bisogno di preoccuparsi, basta chiamareRefreshRates() e tutto funzionerà con i dati reali...


Proprio così
 
Roger:
hai provato con break;
Il libro di testo ci dice che l'operatore
break; 

interrompe le dichiarazioni while, for o switch. Nel mio caso, non ci sono tali operatori. C'è una serie di dichiarazioni if che devono essere interrotte ad un certo punto.

In ogni caso, provate questo:

if (условие)
        {                                          
        Opn_B=true;
        Cls_S=true;   
        break;                    
        } 
Riporta un errore: 'break' - 'pausa' o 'continua' usato solo all'interno di qualche ciclo.
 
Integer:
Bid e Ask contengono i valori al momento in cui viene lanciata la funzione Star(). La funzione MarketInfo() fornisce i valori attuali (più recenti). La funzione RefreshRates() aggiorna le variabili Bid e Ask.


2. Dove l'hai visto e come sei arrivato a questa sorprendente conclusione?

3. Sì. Immaginate, basta guardare la finestra panoramica del mercato e vedere come i numeri rimbalzano senza sosta.

4. Le variabili Bid e Ask sono assegnate (dal terminale) con i valori che esistevano nel momento in cui la funzione Start viene avviata, non importa quanto tempo la funzione viene eseguita, i valori in Bid e Ask saranno gli stessi. Pertanto, abbiamo bisogno di RefreshRates() o di usare MarketInfo().


1. Sì, cioè dopo start() abbiamo 1 tick per avere il tempo di calcolare tutto, altrimenti, se non abbiamo tempo, dobbiamo aggiornare. Ha senso.

2. L'avete scritto alla lettera:

Intero:

Se fa calcoli lunghi, potete usare RefreshRates().

3. Questo è quello che voglio dire.

 
Integer:

Dove, quando e da chi l'ha detto? Non c'è nessun problema.


Qui sulla pagina:

https://www.mql5.com/ru/forum/142582/page404 Vadim ha scritto questo,

Zhunko

RefreshRates(); // Perché questo freno senza elaborare il valore di ritorno?

È questo che mi ha confuso, ad essere onesti...

 
hoz:


Qui sulla pagina:

https://www.mql5.com/ru/forum/142582/page404 Vadim ha scritto questo,

È questo che mi ha confuso, ad essere onesti...

Lo controllerò lunedì. Potrei sbagliarmi.

==================================

Comunque, senza RefreshRates() i miei EA non funzionano. Li faccio in loop. Pertanto, RefreshRates() è obbligatorio.

L'imposizione iniziale della storia è fatta sulla base di questo principio. Poi lo ricarico periodicamente. Altrimenti appaiono dei "vuoti" nella storia con cui lavora l'Expert Advisor. Non so perché succede. Ho provato a usare RefreshRates() per la paginazione. Non funziona sempre. Ho descritto il problema sopra. A volte arriva solo l'ultima barra.

Se un grafico di uno strumento è aperto, c'è sempre una storia su di esso. Non ci sono mai stati errori in questo caso. Il "buco" è apparso quando il grafico dello strumento richiesto non era aperto.

 
Forexman77:
Il libro di testo riporta che l'operatore

interrompe le dichiarazioni while, for o switch. Nel mio caso, non ci sono tali operatori. C'è una serie di dichiarazioni if che devono essere interrotte ad un certo punto.

In ogni caso, provate in questo modo:

Viene riportato un errore: 'break' - 'pausa' o 'continua' usato solo all'interno di qualche ciclo.

Se state cercando GoTo, non c'è questo operatore, ma come dimostra la pratica, non ne avete bisogno. Per potervi consigliare una soluzione, è necessario vedere il vostro obiettivo. Mostrami il tuo algoritmo in termini generali.

 
Roger:

Se state cercando un operatore GoTo, non esiste, ma come dimostra la pratica, non ne avete bisogno. Per essere in grado di consigliare una soluzione, devi vedere il tuo obiettivo. Mostrami il tuo algoritmo in termini generali.

Grazie, ho già trovato un modo per risolvere il problema.
 
Forexman77:
Grazie, ho già trovato un modo per risolvere il problema.

Qui... e molte persone lo fanno... Fanno una domanda che può essere interessante per altri principianti. Poi trovano una soluzione e, invece di mostrarla, dicono: "Oh, grazie mille a tutti, l'ho trovata e fatta, non dovete avere paura di me per tutta la settimana... " ... e pensano che sia la fine... E la soluzione a questo problema non è mai stata mostrata. E gira e rigira... Il prossimo torna con la stessa domanda.

Dimmi solo cosa c'è di così terribilmente segreto nel tuo algoritmo e come risolverlo, che non appena ti è stato chiesto di mostrare l'algoritmo in termini generali, cercando di aiutarti, hai immediatamente cancellato che tutto è "granello di sale"?

Allora non fare domande inutili se non pensi agli altri interroganti... o trova tu stesso una soluzione (ehi buon per te!!!) e mostrala agli altri...