MQL4 Relógio de Tempo Real (segundo por segundo) - página 4

 

Bom, mas esta não é uma solução em tempo real, porque não podemos controlar o tempo de resposta para eventos que não sejam stick.
Em caso de "sono()", podemos.

 

Assim, se combinarmos preços tique a tique e preços fora do prazo com o sono, podemos ter um relógio em tempo real :)

 

Como eu disse, se esta solução for implementada em uma EA não há mais necessidade de TimeCurrent() e o Loop é controlado por Sleep(Interval-Runtime) (em ms)

A maior parte do código permanece o mesmo, o redesenho() não será mais necessário. Também se você precisar aumentar a velocidade do código, você pode usar alguns (ah im falta a palavra inglesa) arrays com rotação ponto zero para se livrar do loop de deslocamento.

AFAIK esta (ou similar) é a melhor solução que pode ser feita em MQL puro em um indicador. Certamente existe uma solução melhor quando você usa uma DLL e exporta os cálculos em um programa externo.

 
spidermagos:

Assim, se combinarmos preços tique a tique e preços fora do prazo com o sono, podemos ter um relógio em tempo real :)

Sim, mas o sono não é possível em Indicadores, isso é seu problema desde o início desta linha
 
zzuegg:
Sim, mas o sono não é possível em Indicadores, isso é seu problema desde o início desta linha

Um EA pode chamar um indicador?
 
Sim, mas apenas por meio de um icustom que não resolverá seu problema
 
Você pode anexar um roteiro ao gráfico que envia um tique falso a cada segundo ao gráfico. Isto é o que costumo fazer para atualizar indicadores multipares e EAs em intervalos regulares.
 
7bit:
Você pode anexar um roteiro ao gráfico que envia um tique falso a cada segundo ao gráfico. Isto é o que costumo fazer para atualizar indicadores multipares e EAs em intervalos regulares.
Você precisa de uma dll para isso ou isso é possível sem?
 
zzuegg:
Você precisa de uma dll para isso ou isso é possível sem?

É apenas um punhado de linhas em mql4 (claro que você precisa de chamadas DLL permitidas para chamar a API do windows, mas não precisa 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);
   }
}

Eu tenho este script em meus favoritos e quando eu preciso de tique-taque eu apenas arrasto para o gráfico.


Também tenho uma variação disto sem o loop que envia apenas um tick e depois sai e tenho vinculado isto (one_tick.mq4) à tecla de atalho ALT+T e agora posso enviar um tick para o gráfico ativo apenas pressionando ALT-T. Preciso disto para alguns dos meus EAs stat-arb quando experimento durante o fim de semana para impor o início() para acionar seus cálculos e traçar seus gráficos (posso mover linhas no gráfico para mudar o intervalo e depois preciso de um novo tick para atualizar seus cálculos).

 

bom. obrigado por compartilhar

Razão: