FORTI Si prega di aiutare - pagina 8

 
MigVRN:

È sempre stato così.

È un esperto di ticchettii che non funziona. E tutto il resto della chat. Il timer e gli eventi personalizzati non sono stati davvero controllati.

Anche da aiuto

...I file di servizio in formato HCC fungono da fonte di dati per costruire i dati sui prezzi per i periodi richiesti in formato HC. I dati nel formato HC sono serie temporali, che sono preparati al massimo per un accesso rapido. Vengono creati solo su richiesta di un grafico o di un programma mql5 nel volume che non supera il parametro "Max bars in charts", e vengono salvati per un uso successivo in file con estensione hc.

Per risparmiare risorse, i dati sul timeframe vengono caricati e immagazzinati nella RAM solo quando sono necessari. In caso di lunga assenza di richieste i dati vengono scaricati dalla RAM salvandoli in un file. I dati per ogni periodo sono preparati indipendentemente dai dati pronti per altri periodi. Le regole per la preparazione e la disponibilità dei dati sono le stesse per tutti i tempi. Quindi, nonostante il fatto che l'unità di memorizzazione dei dati nel formato HCC sia la barra dei minuti, la disponibilità dei dati nel formato HCC non significa la disponibilità e l'accessibilità dei dati dell'intervallo di tempo M1 nello stesso volume nel formato HC.

:)

Quindi chi li caricherà in memoria, se nonSeriesInfoInteger(symbol,PERIOD_M1,SERIES_TERMINAL_FIRSTDATE,first_date)

Non c'è altra funzione!!!!

Perché andare sul server quando i dati sono nel terminale????

 
Mikalas:

:)

Quindi chi li caricherà in memoria, se nonSeriesInfoInteger(symbol,PERIOD_M1,SERIES_TERMINAL_FIRSTDATE,first_date)

Non c'è altra funzione!!!!

Perché andare sul server quando i dati sono nel terminale????

Esatto - carica quello che c'è. Ma a causa del fatto che qualsiasi ritardo nell'indicatore rallenta la chat con tutto ciò che è appeso su di essa - negli indicatori abbiamo fatto in modo, che se la serie al momento della chiamata non è pronta - la funzione restituirà l'errore e INIZIALIZZA la preparazione dei dati. Dopo un po' non restituirà più un errore. Questo è quello che succede nei vostri registri.
 
MigVRN:
Perché è la PRIMA volta che affronta questa particolare serie.

Ho fatto il ciclo:

long first_date = 0;
    datetime times[1];
    int fail_cnt = 0;
//---
    while ( fail_cnt < 1000 )
    {
      ResetLastError();  
      if ( SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) )
      {
        if ( first_date > 0 )
        {
//--- force timeseries build
          CopyTime( symbol, period, datetime( first_date ) + PeriodSeconds( period ), 1, times );
//--- check date
          if ( SeriesInfoInteger( symbol, period, SERIES_FIRSTDATE, first_date ) )
//---        
          if ( first_date > 0 && first_date <= long( start_date ) )
          {
            return( Bars( symbol, period, start_date, end_date ) );
          } 
        }
      }
      fail_cnt++;
    }

Indovina qual è il risultato?

 
MigVRN:
Va bene - carica e prepara quello che c'è. Ma a causa del fatto che qualsiasi ritardo nell'indicatore rallenta la chat con tutto ciò che pende da esso - negli indicatori abbiamo fatto in modo che se la serie non è pronta al momento della chiamata - la funzione restituirà errore e INIZIALIZZA la preparazione dei dati. Dopo un po' non restituirà più un errore. Questo è quello che avete nei vostri registri.
Questo tempo può richiedere diverse chiamate OnCalculate() o anche alcuni secondi. È così che funziona la macchina per fare soldi. Questo è il motivo per cui non è corretto chiamare qualsiasi cosa relativa all'ottenimento di dati dall'indicatore OnInit().
 
Mikalas:

Ho fatto il ciclo:

Indovina qual è il risultato?

barabashkakvn:
Questo tempo può richiedere diverse chiamate OnCalculate() o anche diversi secondi. Ecco come funziona una macchina per fare soldi. Ecco perché è sbagliato chiamare qualsiasi cosa relativa all'ottenimento di dati da OnInit() dell'indicatore.

È vero - il ciclo è MOLTO veloce. non c'è tempo per prepararsi... Capisco che dal punto di vista di uno sviluppatore (noi) è un INFERNO :) Ma ci si dovrà abituare.

A proposito, Sleep() non funziona negli indicatori

:)

 
MigVRN:

È vero - il ciclo è MOLTO veloce. non c'è tempo per prepararsi... Capisco che dal punto di vista di uno sviluppatore (noi) è un INFERNO :) Ma dovrai abituarti...

A proposito, Sleep() non funziona negli indicatori

:)

Grazie, Andrey!

La domanda non è per te, è retorica:

Perché ho bisogno di

SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) ????

Se non ricevo una risposta, devo contattare il server (potrebbe davvero non esserci alcun dato nel terminale)!

Grazie a tutti. I chukchi l'hanno preso....

... E "rispetto" a MQ!

P/S Non leggerò più la guida...

 
Mikalas:

komposter!

Quando non capisci o fraintendi qualcosa, nessuno ti chiama Chukchi.

Perché dovrebbero?

Quando non capisco, cerco di ascoltare ciò che mi viene detto.

E avete ostinatamente ignorato l'esperienza di molte persone che hanno affrontato un problema simile e lo hanno risolto.

Questo è quello che io chiamo uno "scrittore chukcha".

 
Mikalas:

Allora qual è il

SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) ????

Se non ricevo una risposta, devo andare sul server (i dati nel terminale potrebbero davvero non esserci)!

Per ottenere i dati se sono pronti o per iniziare una preparazione se la richiesta avviene per la prima volta.
 
MigVRN:

È vero - il ciclo è MOLTO veloce. non c'è tempo per prepararsi... Capisco che dal punto di vista di uno sviluppatore (noi) è un INFERNO :) Ma dovrai abituarti...

A proposito, Sleep() non funziona negli indicatori

:)

A proposito, cosa impedisce agli sviluppatori di usare il parametroSERIES_TERMINAL_FIRSTDATE

ritorno:

-1 - nessun dato

0 - nessun dato disponibile ma non pronto

> 0 - data stessa

 
Mikalas:

A proposito, gli sviluppatori hanno impedito che l'identificatoreSERIES_TERMINAL_FIRSTDATE

ritorno:

-1 - nessun dato

0 - nessun dato disponibile, ma non pronto

> 0 - data stessa.

E qual è la differenza tra "non disponibile" e "non pronto" per il programma (e il programmatore)?

Se i dati non sono pronti, ci sarà un errore.

O forse anche questa informazione non è immediatamente disponibile, ed è per questo che non viene mostrata.

Motivazione: