Errori, bug, domande - pagina 1801

 
Dennis Kirichenko:
È semplicemente immorale fare un reclamo sui server demo, specialmente quelli che non sono supportati da un broker :-)
Se tutto funziona così sulla demo, allora sarebbe immorale pretendere un lavoro normale dai server reali.

E il server MQ dovrebbe essere una sorta di "benchmark", su cui gli sviluppatori di algo potrebbero e dovrebbero testare le loro tecnologie.
 
fxsaber:
Chiamate multiple di SymbolSelect causeranno il blocco del terminale.
bool SymbolExist( const string Symb, const bool MarketWatch = true )
{
  bool Res = false;
  
  for (int i = SymbolsTotal(MarketWatch) - 1; (i >= 0) && (!Res); i--)
    Res = (Symb == SymbolName(i, MarketWatch));
    
  return(Res);
}

bool SymbolOnOff( const string Symb )
{
  return(SymbolSelect(Symb, !SymbolExist(Symb)));
}

void OnStart()
{
  for (int i = SymbolsTotal(false) - 1; i >= 0; i--)
  {
    const string Symb = SymbolName(i, false);
    
    if (SymbolOnOff(Symb))
      SymbolOnOff(Symb);
  }
}
 
Non ho visto alcuna menzione nella Guida che se un simbolo non è nel Market Watch, non si possono ottenere dati su di esso. Ho dovuto farlo per tentativi ed errori.
 
fxsaber:
Non ho visto alcuna menzione nella Guida, che se un simbolo non è nel Market Watch, allora non ci sono dati su di esso. Ho dovuto farlo a mano.
Giusto. C'è una menzione di

Valore restituito

Valore di tipo doppio. Nel caso di un'esecuzione non riuscita, le informazioni sull'errore possono essere ottenute con GetLastError():

  • 5040 - Parametro stringa errato per specificare il nome di un simbolo,
  • 4301 - simbolo sconosciuto (strumento finanziario),
  • 4302 - simbolo non selezionato in "Market Watch" (non nella lista dei disponibili),
  • 4303 - identificatore di proprietà del simbolo sbagliato.
 
Slawa:
Giusto. C'è una menzione di

Grazie, menzionato indirettamente.

Ditemi, se aggiungo un simbolo a Market Watch tramite SymbolSelect, come faccio a sapere che Bid/Ask per simbolo è diventato disponibile -SymbolIsSynchronized?

SymbolIsSynchronized - sembra essere costoso per questo scopo, perché solleva anche il problema della sincronizzazione della storia M1.

SymbolIsSynchronized non diventa mai vero su alcuni caratteri.

 
fxsaber:

Grazie, menzionato indirettamente.

Ditemi, se aggiungo un simbolo a Market Watch tramite SymbolSelect, come faccio a sapere che Bid/Ask per simbolo è diventato disponibile - SymbolIsSynchronized?

SymbolIsSynchronized - sembra essere costoso per questo scopo, perché solleva anche il problema della sincronizzazione della storia M1.

SymbolIsSynchronized non diventa mai vero su alcuni simboli.

Lo fa, solo che ci vuole un tempo lunghissimo per caricare la storia....
 
Probabilmente molte persone lo sanno, ma solo ora ho intuito di includere _LastError nei valori tracciati quando si fa il debug. Raccomandato.
 
Prima di controllare il flag di sincronizzazione della storia, dovete prima chiamare CopyRates(Symbol(),PERIOD_M1,0,1000,rates)

Se questo viene fatto dall'indicatore, darà esattamente quello che c'è, ma con una richiesta di paginazione al centro storico. Allora può essere straziante.

Se è fatto da Expert Advisor o script, allora diversi cicli di richieste possono essere fatti all'interno della funzione con attesa di risposta, e come regola dopo tale chiamata la storia sarà sincronizzata
 
fxsaber:

Se aggiungo un simbolo a Market Watch tramite SymbolSelect, come faccio a sapere che Bid/Ask sul simbolo è disponibile?

Subito dopo SymbolSelect(true), chiedo i prezzi e sono zero. Allo stesso tempo _LastError == 0, SymbolInfoTick == true.

Come faccio a sapere che i prezzi del nuovo Symbol per Marketwatch sono stati consegnati a Marketwatch?

 
Slawa:
Prima di controllare il flag di sincronizzazione della storia, dovete prima chiamare CopyRates(Symbol(),PERIOD_M1,0,1000,rates)

Se questo viene fatto dall'indicatore, darà esattamente quello che c'è, ma con una richiesta di paginazione al centro storico. Allora può essere straziante.

Se è fatto da un EA o da uno script, allora diversi cicli di richiesta possono essere fatti all'interno della funzione in attesa della risposta e, come regola, la storia sarà sincronizzata dopo una tale chiamata
Stai suggerendo di farlo ad ogni spunta?