Se fate questo, e ci sono sette linee di questo tipo nel codice per sette coppie, allora la panoramica del mercato avrà solo le quotazioni per una valuta.
Funzione costosa, la aggirerei attraverso l'uguaglianza al valore precedente.
Se fate questo, e ci sono 7 linee di questo tipo nel codice per sette coppie, allora la panoramica del mercato mostrerà solo le quotazioni per una valuta.
int bars=Bars(_Symbol,_Period);
if(bars>0)
{
Print("Количество баров в истории терминала по символу-периоду на данный момент = ",bars);
}
else//нет доступных баров
{
//--- видимо, данные по символу не синхронизированы с данными на сервереbool synchronized=false;
//--- счетчик циклаint attempts=0;
// сделаем 5 попыток дождаться синхронизацииwhile(attempts<5)
{
if(SeriesInfoInteger(Symbol(),0,SERIES_SYNCHRONIZED))
{
//--- есть синхронизация, выходим
synchronized=true;
break;
}
//--- увеличим счетчик
attempts++;
//--- подождем 10 миллисекунд до следующей итерацииSleep(10);
}
//--- вышли из цикла по факту синхронизацииif(synchronized)
{
Print("Количество баров в истории терминала по символу-периоду на данный момент = ",bars);
Print("Самая первая в истории терминала дата по символу-периоду на данный момент = ",
(datetime)SeriesInfoInteger(Symbol(),0,SERIES_FIRSTDATE));
Print("Самая первая дата в истории по символу на сервере = ",
(datetime)SeriesInfoInteger(Symbol(),0,SERIES_SERVER_FIRSTDATE));
}
//--- синхронизация данных так и не была достигнутаelse
{
Print("Не удалось получить количество баров на ",_Symbol);
}
}
Inoltre, il riferimento ai prezzi in OnTick dovrebbe essere (in modo che i caratteri di terzi siano caricati).
Inoltre, ci dovrebbe essere un riferimento ai prezzi in OnTick (in modo che vengano caricati i caratteri di terzi).
Questo non risolve il problema dell'originale
SymbolInfoDouble(euSY06,SYMBOL_BID,euSY06b) è sempre riempito con il valore se usato correttamente. Per qualche motivo il valore corretto per il simbolo richiesto non arriva. E sembra essere riempito utilizzando il valore precedente ricevuto, che è il valore di una delle altre sette valute.
Se non c'è soluzione, e questa soluzione la sto cercando da più di un mese, sento che è solo un bug tester. Gli sviluppatori sono pregati di prestare attenzione a questo. Se si tratta di un bug, correggilo
Ma quando provo uno dei miei indicatori multisimbolo, in OnInit viene caricata la lista dei simboli dalla stringa dei parametri di input e in OnCalculate si accede ai loro prezzi. Inoltre, quando imposto di caricare i simboli da Market Watch, nel tester appare solo un simbolo base.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Sii coerente. Se si controlla
poi controllare e
:)
Se fate questo, e ci sono sette linee di questo tipo nel codice per sette coppie, allora la panoramica del mercato avrà solo le quotazioni per una valuta.
Sii coerente. Se si controlla
poi controllare e
:)
È meglio di un semplice
euSY01b>0Se si controlla la sincronizzazione, funziona solo per una valuta. Ho bisogno di analizzare 7 valute alla volta.
Ho bisogno di farlo in OnInit()
Se si controlla la sincronizzazione, funziona solo per una valuta. E ho bisogno di analizzare 7 valute in un momento.
Come stampella, potreste provare a ricordare l'ora in cui la coppia è stata sincronizzata l'ultima volta e usarla come riferimento.
Inoltre, potete usare SymbolInfoTick() per ask e bid
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
Yury Lemeshev, 2022.01.02 08:54
Questo è più corretto di un semplice
euSY01b>0è come vero == vero, risultato: vero. e falso == vero, risultato: falso :)
questo è esattamente il risultato che si ottiene se
o
Se fate questo, e ci sono 7 linee di questo tipo nel codice per sette coppie, allora la panoramica del mercato mostrerà solo le quotazioni per una valuta.
prova a chiamare Bars in OnTick
https://www.mql5.com/ru/docs/series/bars
dall'articolo:
Inoltre, il riferimento ai prezzi in OnTick dovrebbe essere (in modo che i caratteri di terzi siano caricati).prova a chiamare Bars in OnTick
https://www.mql5.com/ru/docs/series/bars
dall'articolo:
Inoltre, ci dovrebbe essere un riferimento ai prezzi in OnTick (in modo che vengano caricati i caratteri di terzi).Questo non risolve il problema dell'originale
SymbolInfoDouble(euSY06,SYMBOL_BID,euSY06b) è sempre riempito con il valore se usato correttamente. Per qualche motivo il valore corretto per il simbolo richiesto non arriva. E sembra essere riempito utilizzando il valore precedente ricevuto, che è il valore di una delle altre sette valute.
Se non c'è soluzione, e questa soluzione la sto cercando da più di un mese, sento che è solo un bug tester. Gli sviluppatori sono pregati di prestare attenzione a questo. Se si tratta di un bug, correggiloHo bisogno di fare in OnInit()
Ma quando provo uno dei miei indicatori multisimbolo, in OnInit viene caricata la lista dei simboli dalla stringa dei parametri di input e in OnCalculate si accede ai loro prezzi. Inoltre, quando imposto di caricare i simboli da Market Watch, nel tester appare solo un simbolo base.