CopyOpen

La funzione ottiene in open_array i dati storici dei prezzi della barra open per la coppia simbolo-periodo selezionati nella quantità specificata. Occorre notare che l'ordinamento degli elementi è dal presente al passato, cioè, la posizione iniziale di 0 significa la barra corrente.

CopyOpen

Quando si copia una quantità ancora sconosciuta di dati, si raccomanda di utilizzare gli array dinamici come array di destinazione, perché se il conteggio dei dati richiesti è di meno (o più) rispetto alla lunghezza dell'array di destinazione, la funzione cerca di riallocare la memoria in modo che i dati richiesti vi entrino completamente.

Se si conosce la quantità necessaria di dati da copiare, dovrebbe essere meglio fatto in un buffer allocato in modo statico, al fine di evitare un' allocazione eccessiva di memoria.

Non importa ciò che è di proprietà dell'array di destinazione - as_series=true o as_series=false. I dati verranno copiati in modo che l'elemento più vecchio sarà situato all'inizio della memoria fisica allocata per l'array. Ci sono 3 varianti di chiamate di funzione.

Chiamate dalla prima posizione ed il numero di elementi richiesti  

int  CopyOpen(
   string           symbol_name,     // nome simbolo
   ENUM_TIMEFRAMES  timeframe,       // periodo
   int              start_pos,       // posizione inizio
   int              count,           // conteggio dati da copiare
   double           open_array[]     // array target in cui copiare i prezzi di apertura
   );

Chiamata dalla data di inizio e il numero di elementi richiesti

int  CopyOpen(
   string           symbol_name,     // nome simbolo
   ENUM_TIMEFRAMES  timeframe,       // periodo
   datetime         start_time,      // data e tempo di inizio
   int              count,           // conteggio dati da copiare
   double           open_array[]     // array target per i prezzi di apertura delle barre
   );

Chiamata per le date di inizio e di fine di un intervallo di tempo richiesto

int  CopyOpen(
   string           symbol_name,     // nome simbolo
   ENUM_TIMEFRAMES  timeframe,       // periodo
   datetime         start_time,      // data e tempo di inizio
   datetime         stop_time,       // data ed ora di fine
   double           open_array[]     // array target per i prezzi di apertura dei valori open
   );

Parametri

symbol_name

[in] Nome del Simbolo.

timeframe

[in] Periodo.

start_pos

[in] La posizione di partenza per il primo elemento da copiare.

count

[in] Conteggio dati da copiare.

start_time

[in] L'orario di avviamento per il primo elemento da copiare.

stop_time

[in] L'orario di inizio per l'ultimo elemento da copiare.

open_array[]

[out]  Array of double type.

Valore restituito

Restituisce il numero di elementi nell'array o -1 in caso di errore.

Nota

Se l'intervallo di insieme dei dati richiesti è fuori dei dati disponibili sul server, la funzione restituisce -1. Se sono richiesti i dati fuori da TERMINAL_MAXBARS (numero massimo di barre nel grafico), la funzione anche restituire -1.

Quando si richiedono dati dall'indicatore, se le timeseries richieste non sono ancora costruite o hanno bisogno di essere scaricati dal server, la funzione restituisce immediatamente -1, ma il processo di download/costruzione verrà avviato.

Quando si richiedono dati da un Expert Advisor o uno script, verrà avviato il download dal server, se il terminale non dispone di questi dati a livello locale, o la costruzione delle timeserie richieste avrà inizio, se i dati possono essere costruiti dallo storico locale, ma non sono ancora pronti. La funzione restituisce la quantità di dati che sarà pronta entro il momento del timeout dell'espirazione, ma il download dello storico continuerà, ed alla successiva richiesta simile la funzione restituisce più dati.

Quando si richiedono dati per la data di inizio ed il numero di elementi necessari, solo i dati la cui data è minore (prima) o uguale alla data specificata. Vuol dire, che il tempo di apertura di ogni barra, per il quale viene restituito il valore (volume, spread, valore sul buffer indicatore, i prezzi Open, High, Low, Close o l'orario di apertura Time) è sempre minore o uguale a quello specificato.

Quando si richiedono dati in un intervallo di date specificato, solo i dati di questo intervallo verranno restituiti. L'intervallo è impostato e contato fino ai secondi. Vuol dire, che il tempo di apertura di ogni barra, per il quale viene restituito il valore (volume, spread, valore sul buffer indicatore, i prezzi Open, High, Low, Close o l'orario di apertura Time) è sempre entro l'intervallo richiesto.

Dunque, se il giorno corrente è Sabato, al tentativo di copiare i dati su un arco di tempo di settimane specificando start_time=Last_Tuesday e stop_time=Last_Friday la funzione restituirà 0, perché l'orario di apertura su timeframe di settimana è sempre Domenica, ma una barra da una settimana non cadere nell'intervallo specificato.

Se c'è bisogno di restituire il valore corrispondente alla corrente barra incompiuta, è possibile utilizzare la prima forma di chiamata specificando start_pos=0 e count= 1.

Vedere un esempio dettagliato di richiesta dati storici di cui al punto Metodi di Binding Oggetti. Lo script disponibile in questa sezione mostra come ottenere i valori degli indicatori iFractals delle ultime 1000 barre e come visualizzare gli ultimi 10 su e 10 giù frattali sul grafico. Una tecnica simile può essere utilizzata per tutti gli indicatori che hanno dati mancanti e che sono solitamente elaborati utilizzando i seguenti stili: