Errori, bug, domande - pagina 907

 
x100intraday:

È vero il contrario. Sotto il controllo visivo personale tutta la storia viene scaricata al primo avvio, alla fine del download viene controllata con il tasto Home andando all'inizio del 1994 su M1. Poi bypasso manualmente i timeframe che uso frequentemente, così come quelli rilevanti per l'indicatore multitemporale, aspetto la loro formazione e ricarico il terminale. Questo è tutto.

Per quanto ho capito, tutte le TF sono costruite al volo da M1. Cioè, quando si riavvia il terminale, si "dimentica" tutti i disegni precedenti e quando si riavvia di nuovo il terminale ha bisogno di tempo per il loro calcolo.

Prova prima di tutti i calcoli a inserire nel tuo indicatore il download di tutta la storia necessaria (per tutti i simboli e i TF utilizzati), come viene fatto in questo script:

   for(int s=0; s<SymbolsCount; s++)
     {
      for(int p=0; p<PeriodsCount; p++)
        {
          if(!CheckLoadHistory(SymbolsName[s],StringToPeriod(PeriodsName[p]),BarsCount)) return;
         }
     }
sHistoryExport - удобный скрипт для экспорта исторических данных в формате МetaТrader 4
sHistoryExport - удобный скрипт для экспорта исторических данных в формате МetaТrader 4
  • voti: 14
  • 2012.11.12
  • Andrey Khatimlianskii
  • www.mql5.com
Экспорт всех необходимых инструментов и тайм-фреймов одним кликом с загрузкой и проверкой истории.
 
komposter:

Per quanto ho capito, tutte le TF sono costruite al volo da M1. Cioè riavviando il terminale si "dimenticano" tutti i disegni precedenti e ad un nuovo avvio il terminale ha di nuovo bisogno di tempo per calcolarli.

Prova prima di tutti i calcoli a caricare tutta la storia necessaria nel tuo indicatore (per tutti i simboli e i TF utilizzati), come viene fatto in questo script:

Io, semmai, mi riferisco a questo elenco:

C:\Program Files\MetaTrader 5\Bases\MetaQuotes-Demo\history\NZDUSD\cache,

Se per "costruzioni" intendiamo la creazione di timeframe non-M1. Ma ancora non li vedremo al lancio iniziale del terminale e aggiriamo i tempi non-M1 per la loro formazione e la possibilità di lavorare ulteriormente con loro, anche se il terminale sarà completamente pronto a funzionare e non solo manualmente. Tuttavia, dopo che il terminale è stato scaricato e anche durante ulteriori esecuzioni, i timeframe generati in precedenza possono essere facilmente visti nella stessa directory. Ma poiché non evaporano con lo scarico, ma rimangono e sembrano essere aggiunti durante le corse successive, è improbabile che il terminale abbia bisogno di tempo per ricalcolare completamente l'intervallo di tempo richiesto.

Ma quando si tratta dell'indicatore - tutto viene ricalcolato al volo a tutte le profondità richieste, ho deciso di non preoccuparmi di salvare i calcoli precedenti, anche se ho avuto una tale idea.

Il tuo codice, per come lo vedo io, non è altro che la pre-sincronizzazione della storia locale con quella del server? Se è così, lo sto progettando da molto tempo, ma non sono ancora riuscito ad aggiungere un blocco così semplice al mio codice.

 
komposter, anche se ho intenzionalmente menzionato che il terminale è pronto per la piena funzionalità al primo avvio (dopo che la storia necessaria è stata scaricata e le opzioni messe a punto), personalmente prendo precauzioni e inizio a segnalare il comportamento stabilizzato del terminale solo dal secondo avvio (a causa di questa incertezza, che i tempi non configurati in M1 siano salvati in modo affidabile su disco e non si blocchino da qualche parte nella RAM e possano iniziare a scambiare goffamente e pesantemente a spese del sistema operativo quando c'è mancanza di memoria, e si possano danneggiare). Quindi, in teoria, l'indicatore non dovrebbe fallire dal secondo avvio di MT5. Ma per qualche motivo si è fermato solo alla decima corsa, anche se le altre nove corse di MT5 non hanno cambiato nulla, tutto era monotono.
 
x100intraday:

Il tuo codice, da quanto ho capito, non è altro che la pre-sincronizzazione della storia locale con quella del server? Se è così, lo sto progettando da molto tempo, ma non ho ancora il tempo di aggiungere un blocco così semplice al mio codice.

Non solo la sincronizzazione con il server, ma anche la costruzione di tutti i TF.

Scaricate la libreria, inserite 3 righe di codice nel vostro indicatore e vedete il risultato.

 

Non capisco perché la funzione ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0) restituisce zero quando si testa l'indicatore, mentre le barre visibili sono almeno 30

(verificato da ChartGetInteger(0,CHART_VISIBLE_BARS,0)

Sui grafici normali - tutto va bene, uno differisce dall'altro di 1, ma quando si fa il test, c'è questa assurdità...

Come posso sbarazzarmene?

 
Поясните, почему в данном простом индикаторе с двумя массивами - второй  имеет нулевой размер??

{Код удалил после ответа на вопрос чтобы не занимал место}



 
dimonsky: Spiegate perché in questo semplice indicatore con due array - il secondo ha una dimensione zero?
#property indicator_plots 2
 
avoitenko:
Grazie!!!
 
Posso usare un secondo account qui? Certamente non allo scopo di accumulare crediti
 
Zeleniy:

Posso usare un secondo account qui? Non allo scopo di accumulare crediti, ovviamente.
Domanda naturale. Perché? ))