Resposta

Atualizar a EA a cada mili-segundo e não a cada tique?

4 respostas

JS17

Cliente, bbp_participante, comunidade, 73 respostas.

Perfil da visita

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

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Perfil da visita

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);
#import

int 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

0

JS17

Cliente, bbp_participante, comunidade, 73 respostas.

Perfil da visita

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

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Perfil da visita

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);
#import

int 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 🙂

0

JS17

Cliente, bbp_participante, comunidade, 73 respostas.

Perfil da visita

6 anos atrás #202464

Karish

Muito obrigado novamente

Cumprimentos

John

0

Visualizando 4 respostas - 1 até 4 (de um total de 4)