Reloj de tiempo real MQL4 (segundo a segundo) - página 4

 

Bien, pero esta no es una solución en tiempo real, porque no podemos controlar el tiempo de respuesta para los eventos que no son de tipo tick.
En el caso de "sleep()" sí podemos.

 

Así que si combinamos el tic-tac y los precios antiguos con el sueño, podemos tener un reloj en tiempo real :)

 

Como he dicho, si esta solución se implementa en un EA ya no hay necesidad de TimeCurrent() y el bucle es controlado por Sleep(Interval-Runtime) (en ms)

La mayor parte del código permanece igual, redraw() ya no será necesario. También si necesitas aumentar la velocidad del código puedes usar algunos (ah im missing the english word) arrays con punto cero de rotación para deshacerte del bucle de desplazamiento.

AFAIK esto (o similar) es la mejor solución que se puede hacer en MQL puro en un indicador. Seguramente existe una mejor solución cuando se utiliza una DLL y se exportan los cálculos en un programa externo.

 
spidermagos:

Así que si combinamos el tic-tac y los precios antiguos con el sueño, podemos tener un reloj en tiempo real :)

Sí, pero el sueño no es posible en los indicadores, que es su problema desde el principio de este hilo
 
zzuegg:
Sí, pero el sueño no es posible en los indicadores, que es su problema desde el principio de este hilo

¿Puede un EA llamar a un indicador?
 
Sí, pero sólo a través de icustom, lo que no resolverá su problema
 
Puedes adjuntar un script al gráfico que envíe un tick falso cada segundo al gráfico. Esto es lo que suelo hacer para actualizar indicadores multipares y EAs en intervalos regulares.
 
7bit:
Puedes adjuntar un script al gráfico que envíe un tick falso cada segundo al gráfico. Esto es lo que suelo hacer para actualizar indicadores multipares y EAs en intervalos regulares.
Necesita una dll para eso o es posible sin?
 
zzuegg:
¿Necesitas una dll para eso o es posible sin ella?

Es sólo un puñado de líneas en mql4 (por supuesto, usted necesita las llamadas DLL permitido llamar a la API de Windows, pero usted no necesita instalar nada):

/**
* MT4/experts/scripts/ticks.mq4
* send a fake tick every 1000ms to the chart and
* all its indicators and EA until this script is removed.
*/

#property copyright "© Bernd Kreuss"

#import "user32.dll"
   int PostMessageA(int hWnd, int Msg, int wParam, int lParam);
   int RegisterWindowMessageA(string lpString);
#import

int start(){
   int hwnd = WindowHandle(Symbol(), Period());
   int msg = RegisterWindowMessageA("MetaTrader4_Internal_Message");
   while(!IsStopped()){
      PostMessageA(hwnd, msg, 2, 1);
      Sleep(1000);
   }
}

Tengo este script en mis favoritos y cuando necesito ticks simplemente lo arrastro al gráfico.


También tengo una variación de esto sin el bucle que sólo envía una garrapata y luego sale y han obligado a esto (one_tick.mq4) a la tecla de acceso directo ALT + T y ahora puedo enviar una garrapata al gráfico activo con sólo pulsar ALT-T. Necesito esto para algunos de mis EAs stat-arb cuando experimento durante el fin de semana para forzar start() para desencadenar sus cálculos y trazar sus gráficos (puedo mover las líneas en el gráfico para cambiar el intervalo y entonces necesito un nuevo tick para actualizar sus cálculos).

 

Muy bonito, gracias por compartirlo