Es necesario comprobar no en la secuencia de comandos, pero el indicador de ejecución en RTS-9.16 chavs en - 8-9 PM, hora de Moscú.
Y los ticks no siempre se copian en profundidad, sino sólo si el primer tick de un nuevo bloque está con el tiempo del bloque anterior.
Debería esperar nuevos ticks (bloque) en lugar de copiar post factum.
Tengo un indicador que emite 20-30 últimos ticks. Creo que puedo añadir una comprobación: comprobar todos los ticks recibidos para ver si están en el historial de ticks con tiempo anormal.
Karputov Vladimir: Tengo un indicador, que emite 20-30 últimos ticks. Creo que puedo añadir una comprobación: comprobar todos los ticks recibidos para ver si están en el historial de ticks con tiempo anormal.
No podrás "atornillar" el cheque (a mí no me funcionó) porque no sabes si son garrapatas antiguas,
¿cuál es el criterio de comprobación? Esto sólo puede verse a "ojo" si el indicador y la cinta se colocan uno al lado del otro
Pero tendrás que esperar mucho tiempo (como he dicho, copiado en profundidad por un solo criterio)
Recuerde que el defecto sólo aparece bajo dos condiciones.
1. Esperamos a que se produzcan nuevos ticks (bloque)
2. Se "clava" en profundidad, sólo si en el nuevo bloque el 1er tick tiene la hora del/los tick(s) anterior(es) del bloque anterior.
No podrás "atornillar" el cheque (a mí no me funcionó) porque no sabes si son garrapatas antiguas,
¿cuál es el criterio de comprobación? Esto sólo puede verse a "ojo" si el indicador y la cinta se colocan uno al lado del otro
Pero tendrás que esperar mucho tiempo (como he dicho, copiado en profundidad por un solo criterio)
Recuerde que el defecto sólo aparece bajo dos condiciones.
1. Esperamos a que se produzcan nuevos ticks (bloque)
2. Se "clava" en profundidad, sólo si en el nuevo bloque el 1er tick tiene la hora del/los tick(s) anterior(es) del bloque anterior.
Cortar las cosas innecesarias: el cálculo y la representación del indicador. Deje sólo obtener y comprobar la matriz de garrapatas. Para buscar un error (no importa de quién) hay que simplificar el código al máximo.
Karputov Vladimir: Cortar las cosas innecesarias: el cálculo y el dibujo del indicador. Deja sólo la obtención y comprobación de la matriz de garrapatas. Para buscar un error (no importa de quién) hay que simplificar el código al máximo.
Si había un error en mi código, siempre aparecía.
Pero tal y como está, el indicador funciona correctamente (lo he comprobado muchas veces con los datos de la tabla)
Esto se ve claramente, si se ejecuta el indicador en los instrumentos de líquido medio.
Y es casi imposible "perderse entre dos pinos" (no hay una sola línea en este código que se pueda cortar:( ).
Pero tal y como está, el indicador funciona correctamente (lo he comprobado muchas veces con los datos de la tabla)
Esto se ve claramente, si se ejecuta el indicador en los instrumentos de líquido medio.
Y es casi imposible "perderse entre dos pinos" (no hay una sola línea en este código que se pueda cortar :() ).
Hay que tener en cuenta los ticks cargados previamente en start_time, de lo contrario se produce la duplicación de ticks.
Aquí hay un ejemplo, la función devuelve los últimos ticks, sacado de mi clase de procesamiento de la historia de los ticks, pero creo que, todo estará claro en el código.
int CTickHistory::LastTicks(MqlTick &_ticks[])
{
if(m_lasttick<=0) return(-1); //нет загруженной историиint n=CopyTicks(m_symbol,tk,COPY_TICKS_TRADE,m_lasttick,TICKHISTORY_MAX_TICKS);
if(n>m_lastcount)
{
n=ArrayResize(_ticks,n-m_lastcount);//размер массива под новые тики
ArrayCopy(_ticks,tk,0,m_lastcount,n);//копирование только новых тиков//определим количество всех тиков, приходящихся на последний момент времени,//необходимое для отсечки загруженных тиков при следующем вызовеif(m_lasttick!=_ticks[n-1].time_msc)
{
m_lasttick=_ticks[n-1].time_msc;
m_lastcount=1;
for(int i=n-2; i>=0; i--)
{
if(_ticks[i].time_msc<m_lasttick) break;
m_lastcount++;
}
}else m_lastcount+=n;
}else n=0;//нет новых тиковreturn(n);
}
Modo de solicitud de ticks - últimos "ticks" de ticks - es decir, el tiempo es "0":
int copied=CopyTicks(_Symbol,tick_array,type,0,ticks);
Un indicador (en el gráfico de la izquierda) solicita CopyTicks() en OnCalculate(), el segundo indicador (en el gráfico de la derecha) solicita CopyTicks() en OnBookEvent().
Y aquí está la imagen:
Los ticks se muestran de la siguiente manera: el elemento con índice "0" está en la parte inferior del gráfico y el tiempo de tick del elemento con índice "0" es el más antiguo. El elemento con índice "29" tiene el tiempo de tick más joven. Aquí estamos: he encontrado, al menos en esta figura, dos incoherencias, a continuación hay un ejemplo para la primera:
Hay que tener en cuenta los ticks cargados previamente en start_time, de lo contrario se duplican los ticks.
Aquí hay un ejemplo, la función devuelve los últimos ticks, sacado de mi clase de procesamiento del historial de ticks, pero creo que está claro en el código.
Aquí está la prevención de la duplicación en mi código:
Se ha cambiado COPY_TICKS_ALL por COPY_TICKS_TRADE y parece que funciona correctamente,
2016.08.2610:42:23.685 DealsLent (RTS-9.16,M1) Pred tiks
2016.08.2610:42:23.685 DealsLent (RTS-9.16,M1) Prev ticks, element 0 time = 2016.08.2610:42:15.5762016.08.2610:42:23.685 DealsLent (RTS-9.16,M1) Prev ticks, element 1 time = 2016.08.2610:42:15.5952016.08.2610:42:23.685 DealsLent (RTS-9.16,M1) Curr tiks
2016.08.2610:42:23.685 DealsLent (RTS-9.16,M1) Curr ticks, element 0 time = 2016.08.2610:42:15.5952016.08.2610:42:23.685 DealsLent (RTS-9.16,M1) Curr ticks, element 1 time = 2016.08.2610:42:17.2252016.08.2610:42:23.685 DealsLent (RTS-9.16,M1) Curr ticks, element 2 time = 2016.08.2610:42:17.2252016.08.2610:42:23.685 DealsLent (RTS-9.16,M1) Curr ticks, element 3 time = 2016.08.2610:42:17.2252016.08.2610:42:23.685 DealsLent (RTS-9.16,M1) Curr ticks, element 4 time = 2016.08.2610:42:17.2252016.08.2610:42:23.685 DealsLent (RTS-9.16,M1) Curr ticks, element 5 time = 2016.08.2610:42:17.235
No pienso en profundidad, veo "hilvanado" desde las profundidades.
¿Por qué pensar?
Ejecute el indicador y compruébelo usted mismo.
¿Y acaso lees lo que está escrito?
Lo he leído, pero la puja ya está cerrada, volveré a comprobar en qué dirección se descargan los ticks (en mi script).
Usted no debe comprobar en la secuencia de comandos, pero ejecutar el indicador en RTS-9.16 chavs en - 8-9 pm, hora de Moscú (para ver).
Y los ticks no siempre se copian en profundidad, sino sólo si el primer tick de un nuevo bloque está con el tiempo del bloque anterior.
Hay que esperar a los nuevos ticks (bloque) y no copiar post factum.
Si ejecuta su script, estará bien, porque estará copiando del historial y no
No"esperar" nuevos bloques.
Es necesario comprobar no en la secuencia de comandos, pero el indicador de ejecución en RTS-9.16 chavs en - 8-9 PM, hora de Moscú.
Y los ticks no siempre se copian en profundidad, sino sólo si el primer tick de un nuevo bloque está con el tiempo del bloque anterior.
Debería esperar nuevos ticks (bloque) en lugar de copiar post factum.
Tengo un indicador, que emite 20-30 últimos ticks. Creo que puedo añadir una comprobación: comprobar todos los ticks recibidos para ver si están en el historial de ticks con tiempo anormal.
No podrás "atornillar" el cheque (a mí no me funcionó) porque no sabes si son garrapatas antiguas,
¿cuál es el criterio de comprobación? Esto sólo puede verse a "ojo" si el indicador y la cinta se colocan uno al lado del otro
Pero tendrás que esperar mucho tiempo (como he dicho, copiado en profundidad por un solo criterio)
Recuerde que el defecto sólo aparece bajo dos condiciones.
1. Esperamos a que se produzcan nuevos ticks (bloque)
2. Se "clava" en profundidad, sólo si en el nuevo bloque el 1er tick tiene la hora del/los tick(s) anterior(es) del bloque anterior.
No podrás "atornillar" el cheque (a mí no me funcionó) porque no sabes si son garrapatas antiguas,
¿cuál es el criterio de comprobación? Esto sólo puede verse a "ojo" si el indicador y la cinta se colocan uno al lado del otro
Pero tendrás que esperar mucho tiempo (como he dicho, copiado en profundidad por un solo criterio)
Recuerde que el defecto sólo aparece bajo dos condiciones.
1. Esperamos a que se produzcan nuevos ticks (bloque)
2. Se "clava" en profundidad, sólo si en el nuevo bloque el 1er tick tiene la hora del/los tick(s) anterior(es) del bloque anterior.
Cortar las cosas innecesarias: el cálculo y el dibujo del indicador. Deja sólo la obtención y comprobación de la matriz de garrapatas. Para buscar un error (no importa de quién) hay que simplificar el código al máximo.
Si había un error en mi código, siempre aparecía.
Pero tal y como está, el indicador funciona correctamente (lo he comprobado muchas veces con los datos de la tabla)
Esto se ve claramente, si se ejecuta el indicador en los instrumentos de líquido medio.
Y es casi imposible "perderse entre dos pinos" (no hay una sola línea en este código que se pueda cortar:( ).
Si había un error en mi código, siempre aparecía.
Pero tal y como está, el indicador funciona correctamente (lo he comprobado muchas veces con los datos de la tabla)
Esto se ve claramente, si se ejecuta el indicador en los instrumentos de líquido medio.
Y es casi imposible "perderse entre dos pinos" (no hay una sola línea en este código que se pueda cortar :() ).
Aquí hay un ejemplo, la función devuelve los últimos ticks, sacado de mi clase de procesamiento de la historia de los ticks, pero creo que, todo estará claro en el código.
Modo de solicitud de ticks - últimos "ticks" de ticks - es decir, el tiempo es "0":
Un indicador (en el gráfico de la izquierda) solicita CopyTicks() en OnCalculate(), el segundo indicador (en el gráfico de la derecha) solicita CopyTicks() en OnBookEvent().
Y aquí está la imagen:
Los ticks se muestran de la siguiente manera: el elemento con índice "0" está en la parte inferior del gráfico y el tiempo de tick del elemento con índice "0" es el más antiguo. El elemento con índice "29" tiene el tiempo de tick más joven. Aquí estamos: he encontrado, al menos en esta figura, dos incoherencias, a continuación hay un ejemplo para la primera:
Aquí hay un ejemplo, la función devuelve los últimos ticks, sacado de mi clase de procesamiento del historial de ticks, pero creo que está claro en el código.
Aquí está la prevención de la duplicación en mi código:
Se ha cambiado COPY_TICKS_ALL por COPY_TICKS_TRADE y parece que funciona correctamente,
pero seguiré comprobando. :)
No puedo mirar la cinta estáticamente, así que esperaré a que se aclare.