Atualizar a EA a cada mili-segundo e não a cada tique?
4 respostas
JS17
6 anos atrás #202369
Olá a todos,
Como faço para que um EA seja executado a cada mili-segundo e não apenas quando o EA recebe um tique?
Cumprimentos
John
Karish
6 anos atrás #202381
1st option is: http://www.forexmt4.com/Windows%20programs/MSFX-MT4TickSender-Setup.exe
A segunda opção é:
crie um arquivo de script, coloque o seguinte código dentro dele e compile
Ele envia um tique falso a cada 100 ms para o gráfico e todos os seus indicadores e EA até que esse script seja removido.
#import "user32.dll"
int PostMessageA(int hWnd,int Msg,int wParam,int lParam);
int RegisterWindowMessageA(string lpString);
#importint start(){
int hwnd=WindowHandle(Symbol(), Period());
int msg = RegisterWindowMessageA("MetaTrader4_Internal_Message");
while(!IsStopped()){
PostMessageA(hwnd, msg, 2, 1);
Sleep(100); //1000=1sec...
}
}
Boa sorte
JS17
6 anos atrás #202404
Karish
Obrigado pela resposta
Não é possível fazer isso dentro do EA Wizard usando algum tipo de função de cronômetro?
Cumprimentos
John
Karish
6 anos atrás #202412
A melhor opção para você é criar um MT4 separado e criar um TEMPLATE padrão com esse script já dentro dele,
para que você não precise sempre arrastar e soltar esse script no gráfico depois de soltar o EA dentro desse gráfico.
Basta abrir um gráfico aleatório > Modelos > Salvar modelo > salvá-lo como Padrão > Substituir esse novo modelo pelo modelo "Padrão" mais antigo.
É melhor não mexer no código-fonte do Wiz para isso..., não vale a pena.
Você deve modificar o script já existente com esse código para ver se o script já está anexado ao gráfico quando você planeja criar um modelo padrão com ele,
#import "user32.dll"
int PostMessageA(int hWnd,int Msg,int wParam,int lParam);
int RegisterWindowMessageA(string lpString);
#importint start(){
Text("#Fake Ticker Script is attached.", "fake_tick_obj",7, "Arial Bold",2,3,2,White);
int hwnd=WindowHandle(Symbol(), Period());
int msg = RegisterWindowMessageA("MetaTrader4_Internal_Message");
while(!IsStopped()){
PostMessageA(hwnd, msg, 2, 1);
Sleep(100); //1000=1sec...
}
}void Text(string text,string identity,int textsize,string textfont,int x,int y,int z,color c)
{
ObjectDelete(identity);
ObjectCreate(identity,OBJ_LABEL,0,0,0);
ObjectSet(identity,OBJPROP_XDISTANCE,x);
ObjectSet(identity,OBJPROP_YDISTANCE,y);
ObjectSet(identity,OBJPROP_CORNER,z);
ObjectSetText(identity,text,textsize,textfont,c);
}int deinit() {
ObjectDelete("fake_tick_obj");
return(0);
}
Isso mostrará uma mensagem no canto inferior esquerdo do gráfico informando que o script está sendo executado, para que você saiba..,
Boa sorte com o que está tentando fazer 🙂
JS17
6 anos atrás #202464
Visualizando 4 respostas - 1 até 4 (de um total de 4)