Hola, puede usted equivalente en Bar M5 M15 H1 H4
Hola,
Hora Símbolo OPEM CERRAR PH PB
2013.01.04 04:55 EURGBP 0.81065 0.81078 0.81086 0.81065 172
2013.01.04 05:00 EURGBP 0.81079 0.81046 0.81080 0.81044 90
2013.01.04 05:05 EURGBP 0.81047 0.81044 0.81056 0.81044 89
2013.01.04 05:10 EURGBP 0.81043 0.81059 0.81059 0.81033 111
2013.01.04 05:15 EURGBP 0.81057 0.81052 0.81059 0.81048 78
2013.01.04 05:20 EURGBP 0.81051 0.81065 0.81071 0.81050 124
2013.01.04 05:25 EURGBP 0.81067 0.81066 0.81070 0.81060 243
2013.01.04 05:30 EURGBP 0.81067 0.81076 0.81080 0.81063 108
Hola,
Hora Símbolo OPEM CERRAR PH PB
2013.01.04 04:55 EURGBP 0.81065 0.81078 0.81086 0.81065 172
2013.01.04 05:00 EURGBP 0.81079 0.81046 0.81080 0.81044 90
La mejor manera de obtener datos periódicos (según yo) es utilizar MT4 historia, u puede descargar y exportar (a Excel) los datos históricos. pero si u quiere un reedit de este código para los datos periódicos, creo que esto va a trabajar para u:
//+------------------------------------------------------------------+ //|PeriodicRealTimeDataStream.mq5 //| Copyright 2013, MetaQuotes Software Corp. | //| http://www.mql5.com //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" datetime t1; double arro[1],arrh[1],arrl[1],arrc[1]; string T,O,H,L,C; long arrv[1],V; //+------------------------------------------------------------------+ void OnTick() { t1 = (datetime)SeriesInfoInteger(_Symbol,_Period,SERIES_LASTBAR_DATE); static datetime t0 = t1; //--- obtener valores para el gráfico especificado if (t0!=t1) { //--- copiar valores a matrices CopyOpen(_Symbol,_Period,0,1,arro); CopyHigh(_Symbol,_Period,0,1,arrh); CopyLow(_Symbol,_Period,0,1,arrl); CopyClose(_Symbol,_Period,0,1,arrc); CopyTickVolume(_Symbol,_Period,0,1,arrv); //-- T=TimeToString(t1,TIME_DATE|TIME_MINUTES); O=DoubleToString(arro[0],_Digits); H=DoubleToString(arrh[0],_Digits); L=DoubleToString(arrl[0],_Digits); C=DoubleToString(arrc[0],_Digits); V=arrv[0]; //--- salida de los valores printf("%s %s %s %s %s %s %d",T,_Symbol,O,H,L,C,V); //--- vuelve a poner la hora t0=t1; } //--- } //+------------------------------------------------------------------+
si desea exportar csv, puede utilizar las funciones de archivo y variables como en el código principal
¿Qué pasa con los ticks que se pierden? ¿añades algo en el archivo TXT para ellos? si no lo haces entonces no estás ". . . almacena todos los datos tick-by-tick de los precios ask y bid en un archivo txt" .
Tienes razón en que existe la posibilidad de que falten cotizaciones debido a la forma en que se maneja el evento NewTick, pero el código es lo suficientemente rápido como para hacer que esta posibilidad sea muy pequeña (casi cero). si los ticks que faltan ocurren más de lo que pensaba (que puede afectar a la significancia del análisis), entonces Ontick() tiene un error, no mi código.
y sobre la frase ". . . almacena todos los datos tick-by-tick de los precios de compra y venta en un archivo txt.", me di cuenta hace mucho tiempo y lo cambie :) ya no hay "todos", pero en el foro sigue igual - lo siento no tengo la capacidad de cambiarlo, me gusta reeditar los comentarios, pero es imposible para esa frase :(
Tienes razón en que hay una posibilidad de que falten cotizaciones debido a la forma en que se maneja el evento NewTick, pero el código es lo suficientemente rápido como para hacer que esta posibilidad sea muy pequeña (casi cero). si faltan ticks más de lo que pensaba (que puede afectar a la significación del análisis), entonces Ontick() tiene un error, no mi código.
y sobre la frase ". . . almacena todos los datos tick-by-tick de los precios de compra y venta en un archivo txt.", me di cuenta hace mucho tiempo y lo cambié :) ya no hay "todos", pero en el foro sigue igual - lo siento, no tengo la capacidad de cambiarlo, me gusta reeditar los comentarios, pero es imposible para esa frase :(
No es un bug, simplemente es como funciona... si OnTick() se está ejecutando cuando llega un nuevo tick el nuevo tick se ignora....
Nuevo tick
El evento NewTick se genera si hay nuevas cotizaciones, es procesado por OnTick() de los Asesores Expertos adjuntos. En caso de que la función OnTick para la cotización anterior esté siendo procesada cuando se recibe una nueva cotización, la nueva cotización será ignorada por un Asesor Experto, porque el evento correspondiente no se pondrá en cola.
Todas las nuevas cotizaciones que se reciban mientras se ejecuta el programa se ignorarán hasta que se complete la función OnTick(). Después de eso la función se ejecutará sólo después de que se reciba una nueva cotización.
. . . ¿ha hecho pruebas para ver cuántos ticks se suele perder?
No es un error, es sólo cómo funciona ... si OnTick() se está ejecutando cuando llega un nuevo tick el nuevo tick es ignorado ....
Estoy confundido, por lo que usted piensa que es la forma de newtick manejo y yo también:)
erdogenes:
Tienes razón hay posibilidad de que falten comillas por la forma de manejar el evento NewTick
RaptorUK:
. . . ¿has probado a ver cuantos ticks te saltas normalmente?
Yo no se de ticks perdidos, yo obtengo lo que el programa obtiene, como puedo calcularlo? o se puede calcular de alguna manera?, no puedo saber cuantos ticks pierde Ontick en un dia (no estoy desarrollando mql5). No puedo hablar por MetaQuotes. No tengo acceso directo a un servidor de trading para comparar los feeds. No puedo calcularlo para un programa, no se cambiará cuando el programa sea mío, sólo puedo hablar estadísticamente.
Para usted, he editado un ejemplo con el procesamiento de datos HF. Obtengo la tasa de llegadas de ticks en el mismo milisegundo con las tasas interbancarias 27.01.2011- el programa para el cálculo es Gretl, los códigos se pueden utilizar y los datos se envían por PM (no puedo compartir los datos públicamente lo siento). el resultado es ~ 0.003 (es la tasa de llegadas en el mismo milisegundo y fue un día activo).
Supongamos que los datos se manejan en MT5 y (absurdamente) que faltan todos (~0.003). Entonces, ¿una señal que se remuestrea aleatoriamente con una tasa de ~0.003, pierde alguna significancia? mi respuesta es no. ya usamos remuestreo con tasas más altas en el análisis.
Claro que era sólo hipotética, y no de un corredor, pero espero que usted entienda mi punto. Y de nuevo, yo no tengo la capacidad de obtener el número real de garrapatas que faltan.
Y una cosa más: si es la política de "no cola" del manejador de eventos NewTick lo que causa los ticks perdidos (y lo es), entonces creo que el número de los perdidos puede depender de la velocidad de su hardware, también. Entonces no se puede calcular como un valor estándar.
(Reedito el comentario: Arreglé el código que te envié, estaba buggeado, el resultado real es ~0.003 el código está adjunto)
Estoy confundido, así que usted piensa que es la forma de newtick manejo y yo también:)
puede que lo hayas entendido mal: si la falta de ticks tiene un efecto significativo en el análisis entonces ontick tiene un bug, no es normal (porque es el manejador de eventos "new tick", si no puede manejarlo lo suficiente tiene un bug) pero no creo que no pueda manejarlo no creo que tenga un bug.
Lo de los ticks perdidos no lo se, obtengo lo que obtiene el programa, ¿como puedo calcularlo? o ¿se puede calcular de alguna manera?, no puedo saber cuantos ticks pierde Ontick en un dia (no estoy desarrollando mql5).
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Ask Bid Ticks:
"AskBidTicks" es una solución de datos de tick en tiempo real y alta precisión para el análisis de microestructura.
Exporta precios tick a tick a un fichero csv. Trabaja con la hora local del ordenador.
A continuación se muestra un ejemplo de salida csv delimitado por tabuladores con las marcas de tiempo en milisegundos:
Autor: Erdem Sen