- Dirección de indexación en los arrays y series temporales
- Organización de acceso a los datos
- SeriesInfoInteger
- Bars
- BarsCalculated
- IndicatorCreate
- IndicatorParameters
- IndicatorRelease
- CopyBuffer
- CopyRates
- CopySeries
- CopyTime
- CopyOpen
- CopyHigh
- CopyLow
- CopyClose
- CopyTickVolume
- CopyRealVolume
- CopySpread
- CopyTicks
- CopyTicksRange
- iBars
- iBarShift
- iClose
- iHigh
- iHighest
- iLow
- iLowest
- iOpen
- iTime
- iTickVolume
- iRealVolume
- iVolume
- iSpread
CopyClose
La función recibe en el array close_array datos históricos de los precios del cierre de barras para el par especificado de símbolo-período en cantidad especificada. Cabe mencionar que la cuenta de elementos desde la posición de inicio se realiza del presente al pasado, es decir, la posición de inicio igual a 0 significa la barra corriente.
Cuando copiamos los datos sin conocer todavía el volumen a copiar, se recomienda usar un array dinámico como array de destino, porque si la cantidad de datos resulta ser menos (o más) de la que cabe en el array, entonces se intenta redistribuirlo de tal manera para que los datos solicitados quepan íntegramente.
Si sabemos la cantidad de datos que tenemos que copiar, con el fin de evitar la asignación excesiva de memoria es mejor hacerlo a un buffer asignado estáticamente.
La propiedad del array de destino no importa, sea as_series=true o sea as_series=false. Los datos van a ser copiados de tal manera que el elemento más antiguo estará al principio de la memoria física que ha sido destinada para el array. Existen 3 variantes de la función.
Llamada según la posición de inicio y el número de elementos requeridos
int CopyClose(
|
Llamada según la fecha de inicio y el número de elementos requeridos
int CopyClose(
|
Llamada según la fecha de inicio y finalización del intervalo de tiempo requerido
int CopyClose(
|
Parámetros
symbol_name
[in] Símbolo.
timeframe
[in] Período.
start_pos
[in] Posición del primer elemento a copiar.
count
[in] Cantidad de elementos a copiar.
start_time
[in] Hora de la barra correspondiente al primer elemento.
stop_time
[in] Hora de la barra correspondiente al último elemento.
close_array[]
[out] Array del tipo double.
Valor devuelto
Cantidad de elementos copiados del array, o -1 en caso del error.
Nota
Si el intervalo de datos solicitados se encuentra totalmente fuera del rango de datos disponibles del servidor, la función devuelve -1. Si los datos solicitados salen del rango de TERMINAL_MAXBARS (la cantidad máxima de barras en el gráfico), la función tambien devuelve -1.
Al solicitar los datos del indicador, si las series temporales solicitadas todavía no están construidas o hay que bajarlas del servidor, la función devolverá inmediatamente -1. Aunque en este caso, se iniciará el proceso de descarga/construcción.
Cuando se solicitan los datos a un Asesor Experto o un script, se iniciará la descarga desde el servidor si el terminal no dispone de estos datos a nivel local, o se empezará la construcción de la serie temporal necesaria si se puede construir los datos usando el historial local y ellos todavía no están listos. La función devolverá aquella cantidad de datos que estarán listos para el momento de vencimiento de timeout, pero el historial seguirá cargándose y con la siguiente solicitud del mismo tipo la función devolverá más datos.
Cuando se solicitan los datos por la fecha inicial y el número de elementos requeridos, sólo se devuelven los datos cuya fecha es menor (anterior) o igual a la especificada. Este intervalo se establece y se cuenta con la precisión de segundos. Es decir, la fecha de apertura de cualquier barra para la que se devuelve el valor (volumen, spread, valor en el búfer de indicador, precio Open, High, Low, Close o la hora de apertura Time) siempre es igual o menor que la especificada.
Cuando se solicitan los datos de un período de fechas especificado, se devuelven los datos que entran sólo en este intervalo temporal especificado. Este intervalo se establece y se cuenta con la precisión de segundos. Es decir, la hora de apertura de cualquier barra para la que se devuelve el valor (volumen, spread, valor en el búfer de indicador, precio Open, High, Low, Close o la hora de apertura Time) siempre se encuentra en el intervalo especificado.
Por ejemplo, si el día corriente es sabado, al intentar copiar los datos del margen semanal indicando start_time=Último_Martes y stop_time=Último_Viernes, la función devolverá 0 porque la apertura en un período de tiempo semanal siempre cae en domingo, pero ninguna barra semanal no entra en el período especificado.
Si se necesita obtener el valor que corresponde a una barra corriente no finalizada, se puede usar la primera forma de llamada, indicando start_pos=0 y count=1.
Puede encontrar un ejemplo de la solicitud de datos históricos en la sección Modos de enlace de objetos. En el script de aquella sección se muestra cómo se puede obtener los valores del indicador iFractals sobre las últimas 1000 barras, y cómo luego se puede visualizar en el gráfico los diez últimos fractales arriba y los diez último fractales abajo. Esta técnica puede ser utilizada para todos los indicadores que tienen omisiones de valores y suelen realizarse utilizando los siguientes estilos de construcción: