Errori, bug, domande - pagina 1442

 
Yousufkhodja Sultonov:
Per favore, ditemi come superare la situazione in cui il tester limita il numero di posizioni aperte a un centinaio, nonostante il fatto che nelle impostazioni io specifichi 1000?
Non puoi, questa non è una limitazione del terminale ma del broker, aprire un conto demo con un broker che dà più di 100 ordini
 

LeggeteCopyRates() con attenzione:

Nota

1. Se l'intervallo di dati richiesto è completamente al di fuori dei dati disponibili sul server, la funzione restituisce -1. Se i dati richiesti sono al di fuori di TERMINAL_MAXBARS (quantità massima di barre sul grafico), la funzione restituirà anche -1.

2. Quando si richiedono dati all'indicatore, se le serie temporali richieste non sono ancora state costruite o devono essere scaricate dal server, la funzione restituisce immediatamente -1, ma viene avviato il processo di download/costruzione.

3. Quando si richiedono i dati dall'Expert Advisor o da uno script, verrà avviato il download dal server, se il terminale non ha questi dati localmente, o inizierà la costruzione delle serie temporali richieste, se i dati possono essere costruiti dallo storico locale, ma non sono ancora pronti. La funzione restituirà la quantità di dati che sarà pronta quando il timeout scade, ma la storia continuerà ad essere scaricata, e la prossima volta che verrà fatta una richiesta simile, la funzione restituirà più dati.

1. questo è corretto e logico, prima di richiedere i dati, dovresti controllare il numero di barre consentito nella finestra.

2) Hai anche ragione; devi provare a ricevere dati fino a quando il terminale restituisce la quantità richiesta, ricordandoti di controllare la connessione con il server. Non c'è dubbio sulla qualità dei dati ricevuti qui - i dati o ci sono o non ci sono.

3. qui non è affatto chiaro. Non si può mai essere sicuri che i dati ricevuti siano completi. E perché l'utente avrebbe bisogno di dati che non sono sicuri della loro completezza? La pratica dimostra che nessun trucco (tentativi preliminari di ottenere dati per inizializzare il download dal server) non dà fiducia che la richiesta otterrà dati completi.

Penso che sia più pratico rendere il comportamento delle funzioni di recupero dei dati in Expert Advisors simile agli indicatori.

 
Joo Zepper:

LeggeteCopyRates() con attenzione:


3. Qui non è affatto chiaro. Non si può mai essere sicuri che i dati ricevuti siano completi. E perché l'utente avrebbe bisogno di dati che non sono completi? La pratica dimostra che nessun trucco (tentativi preliminari di ottenere dati per avviare il download dal server) rende sicuri che la richiesta otterrà dati completi.

Perché non puoi essere sicuro? Usa SeriesInfoInteger(symbol,period,SERIES_SYNCHRONIZED) per essere sicuro.

Continua a leggere la documentazione. Nel modo più ponderato possibile.

 
Slawa:

Perché non puoi essere sicuro? Per essere sicuri, usate SeriesInfoInteger(symbol,period,SERIES_SYNCHRONIZED)

Continua a leggere la documentazione. Non essere meno premuroso.

Grazie per il suggerimento, ma ho usato questa bandiera per molto tempo. Ci sono altri modi più affidabili?

Sto anche aspettando il tuo prossimo suggerimento - aprire la finestra del grafico dello strumento richiesto. E questo viene fatto, ma i dati completi non sono garantiti.

 
Joo Zepper:
Grazie per il suggerimento, ma controllare questa bandiera è stato in uso attivo da me per molto tempo. Ci sono altri modi più affidabili?

Qual è il problema allora? Se questo flag è impostato a true, i dati correnti sono completamente sincronizzati. Possono essere incompleti perché il server ha più dati di voi - la storia va più in profondità

Poi interroga la storia in profondità e controlla SeriesInfoInteger(symbol,PERIOD_M1,SERIES_SERVER_FIRSTDATE) contro la prima data dei tuoi minuti locali

 
Slawa:

Qual è il problema allora? Se questo flag è impostato a true, i dati attuali sono completamente sincronizzati. Possono essere incompleti perché il server ha più dati di voi - la storia va più in profondità

Poi interroga la storia in profondità e controlla SeriesInfoInteger(symbol,PERIOD_M1,SERIES_SERVER_FIRSTDATE) contro la prima data dei tuoi minuti locali

Ma questo è un suicidio per l'Expert Advisor. Avrete dei lag terribili. E non c'è bisogno, di regola, di un'anamnesi completa.

Penso a questo. Nel rapporto di mercato sempre gli ultimi dati e se il terminale non può fornire la quantità necessaria di dati su richiesta entro i limiti della storia del server e il numero consentito di barre nella finestra, in questi casi, restituire -1, come negli indicatori. O si ottengono dati o -1, non c'è una terza opzione.

 

Lo faccio prima di richiedere i dati:

for(int attempt = 0; attempt < 10; attempt++) 
  {
    bool flag = true; 
    for(int symb = 0; symb < SymbolCNT; symb++) 
    {
      if(!synched[symb]) 
      {
        // trial copying of price data
        int copied = CopyRates(symbsName[symb], smPeriod, startPosDataGet, barsReq, prices[symb].Data); 
        
        if(copied >= barsReq) 
        {
          if(idChart[symb] != -1) 
          {
            ChartClose(idChart[symb]); 
            idChart[symb] = -1;
          }
          synched[symb] = true;
        }
        else 
        {
          flag = false; 
          if(showAlert) 
            Alert(symbsName[symb] + ": requested/received " + (string)barsReq + "/" + (string)copied); 
          
          if(idChart[symb] == -1) 
          {
            idChart[symb] = ChartOpen(symbsName[symb], smPeriod); 
            ChartSetInteger(ChartFirst(), CHART_BRING_TO_TOP, 0, true);
          }
        }
      }
    }
    if(!flag) 
      if(TerminalInfoInteger(TERMINAL_CONNECTED)) 
        Sleep(1000);
  }
  
  for(int symb = 0; symb < SymbolCNT; symb++) 
    if(idChart[symb] != -1) 
      ChartClose(idChart[symb]); 

Ma già durante le interrogazioni dirette i dati si presentano con dei buchi. A volte senza buchi. È di questo che sto parlando: nessuna fiducia nei dati ricevuti.

 
Karputov Vladimir:

Il video inserito tramite l 'editor di messaggi non viene salvato.

Google Chrome Versione 46.0.2490.86 m.

Internet Explorer 11.11.10586.0.

L'errore sarà risolto, grazie per il messaggio.
 

Gli indicatori regolari NON funzionano dopo l'aggiornamento del sistema a Windows10. Semplicemente non è possibile attaccarsi alla grafica. Nell'editor, viene visualizzato un errore durante la compilazione

errore

 
Alexandr:
Gli indicatori regolari NON funzionano dopo l'aggiornamento del sistema a Windows10. Semplicemente non può essere attaccato alla grafica. Nell'editor, l'errore https://i.gyazo.com/5dbea3b25ab9a45cf3a9449335c1f57f.png appare durante la compilazione.
Probabilmente qualcosa con i diritti di accesso, controlla se le cartelle del terminale sono scrivibili, prova ad abbassare UAC ....