Mesa de todos los oficios. Acceso a través de MQL5 - página 2

 
prostotrader:
Se ha encontrado un error y se ha optimizado el funcionamiento.

Un buen ejemplo, aunque todavía queda mucho camino por recorrer para conseguir un rendimiento óptimo. Hasta ahora, los principales frenos son tres:

1. CopyTiks cada OnBookEvent copia todos los ticks desde el inicio:

int copied= CopyTicks(Symbol(),ticks,COPY_TICKS_ALL,start_time,0);

En realidad, esto se puede optimizar haciendo cortes dinámicos.

2. Enumeración completa de todos los ticks recibidos en OnBookEvent

for(int i=1; i<copied; i++)
{
   if(( ticks[i].flags  &TICK_FLAG_BUY)==TICK_FLAG_BUY)
   {
      buy_deals++;
   }
   else
   if(( ticks[i].flags  &TICK_FLAG_SELL)==TICK_FLAG_SELL)
   {
      sell_deals++;
   }
}

Esto también se puede arreglar si lo desea.

3. Enumeración completa de todas las barras en OnCalculation:

for(int i=rates_total-1; i>0; i--)
{
   SellBuffer[i]= SellBuffer[i-1];
   BuyBuffer[i] = BuyBuffer[i-1];
}
 
A petición de los miembros del foro, he finalizado el indicador
Archivos adjuntos:
DealsLent.mq5  9 kb
 
Vasiliy Sokolov:

Un buen ejemplo, aunque todavía queda mucho camino por recorrer para conseguir un rendimiento óptimo. Hasta ahora, los principales frenos son dos:

1. CopyTiks cada OnBookEvent copia todos los ticks desde el inicio:

En realidad, esto se puede optimizar haciendo cortes dinámicos.

2. Enumeración completa de todos los ticks recibidos en OnBookEvent

Esto también se puede arreglar si lo desea.

3. Enumeración completa de todas las barras en OnCalculation:

Gracias, pero no tienes razón en todas partes.

1. No todas las garrapatas (fíjate bien).

2. ¿cómo quiere hacerlo?

3. fácil de hacer

Ahora, vamos a retocarlo...

 
Aquí, retocado.
Archivos adjuntos:
DealsLent.mq5  9 kb
 
prostotrader:

Gracias, pero no tienes razón en todo.

1. No todas las garrapatas (mira con atención)

2. fácil de hacer

3. fácil de hacer.

Ahora lo estamos entendiendo bien...

Sí, efectivamente no todas las garrapatas.

Sobre el tercer punto, no estoy seguro de que sea fácil de hacer. El indicador tiene tics y, por lo tanto, requiere un reajuste serio.

Pero en general está bien. Gracias por el ejemplo.

 
prostotrader:
Aquí, lo he retocado.
Gracias.
 
Vasiliy Sokolov:

Sí, efectivamente no todas las garrapatas.

Sobre el tercer punto no estoy seguro de que sea fácil de hacer. Porque el indicador es un indicador de ticks y, por tanto, requiere un reajuste importante.

Pero en general está bien. Gracias por el ejemplo.

De hecho, el indicador se basa en los ticks, por lo que sólo son importantes los datos actuales (recientes).

Si el usuario quiere tomar un historial más largo de los buffers,

es muy fácil de hacer.

Sec.

 

Aquí, el usuario puede elegir el tamaño de los datos que le interesan.

Si ActSize = 0 - todo el historial disponible

Archivos adjuntos:
DealsLent.mq5  9 kb
 
El toque final...
Archivos adjuntos:
DealsLent.mq5  10 kb
 

¿Alguien sabe cuál es el error?

El indicador funciona correctamente, pero se muestran más barras,

de lo que se estableció.