Executar roteiro através do Expert Advisor - página 2

 
Shaun:

História verdadeira, eu sou novo, para o site, para a codificação também. Nunca codificado antes.
comece aqui
 
qjol:
Comece aqui

Obrigado por essa informação.

Para ser honesto, vim ao fórum de comerciantes/códigos para obter a resposta de alguém que já o fez e que possivelmente poderia me ajudar, não aprender a codificar tudo sozinho a partir do zero.

 
Shaun:

Obrigado por essa informação.

Para ser honesto, vim ao fórum de comerciantes/códigos para obter a resposta de alguém que já o fez e que possivelmente poderia me ajudar, não aprender a codificar tudo sozinho a partir do zero.

Mostre seu Script, mostre seu EA talvez alguém tenha piedade de você e os combine ...
 
Shaun:

Obrigado por essa informação.

Para ser honesto, vim ao fórum de comerciantes/códigos para obter a resposta de alguém que já o fez e que possivelmente poderia me ajudar, não aprender a codificar tudo sozinho a partir do zero.

certo, mostre seu código e tentaremos ajudar você, mas é claro que não espero que você faça o código inteiro por você.
 

Obrigado, pessoal!

Seguindo seus conselhos, eu escrevi um texto assim dentro da minha EA:

if(MyCondition)
{
  PlaySound("my_alert.wav");
    if(MessageBox("Do you really want to run the script?", 0, MB_YESNO|MB_ICONQUESTION)!=IDNO)
     { 
      MyScript();
      DisableAllEA();
      Sleep(3000);    
     }
  }

Em uma determinada situação, definida pela MyCondition, isto toca meu alerta, para que eu possa ouvir que tenho que verificar o que está acontecendo.

Uma caixa de mensagem aparece, perguntando se eu quero executar o script - que é um script de fechamento de todas as posições.

Quando clico no botão [SIM], o script executa - fecha todas as posições - e desativa o botão [Especialistas] no MT4.

É claro que você não precisa desativar os Peritos, a menos que tenha um motivo para isso.

Se no próximo loop seu EA não encontrar a condição, ele não acionará o script.

Obviamente, esta é apenas uma solução de trabalho e não uma solução perfeita, porque o EA continua fazendo loop em cada tick.

E você não pode desativar os especialistas até que o script tenha sido executado, porque o script está dentro da EA, não está sozinho.

P.S.

Para que isto funcione, você precisa incluir o seguinte no início de sua EA:

#include <WinUser32.mqh>
 

Eu acabei de pensar em outra solução!!!

Você pode atribuir uma tecla de atalho (HOTKEY) ao seu roteiro.

Assim, você pode emular o evento do teclado.

Portanto, melhor:

if(MyCondition)
{
      EnableScript();
      DisableAllEA();
      Sleep(3000);
}

Você pode incluir seu alert.wav no script stand alone, e a caixa de mensagens também.

E, você pode decidir se habilita ou não os especialistas, após sua ação sobre a situação.

Desta forma, você não corre o risco de exagerar.

É claro que isto precisa de mais estudo sobre os principais eventos.

A função do evento de teclado Ctrl+E é:

void DisableAllEA() {
   keybd_event(17, 0, 0, 0); // CTRL down
   keybd_event(69, 0, 0, 0); // E down
   keybd_event(69, 0, 2, 0); // E up
   keybd_event(17, 0, 2, 0); // CTRL up
}

Com um pouco de googling, você pode encontrar códigos numéricos para cada tecla.

Ou, você pode usar este link: https: //www.mql5.com/en/code

É claro que o keybd_event não faz parte do mql4, é por isso que você precisa:

#include <WinUser32.mqh>
 

E, a propósito!

Alguém já se cansou de implementar uma EA no gráfico como um indicador?

Deve funcionar tão bem quanto isso!

E você pode ter qualquer número de indicadores funcionando em um gráfico!

Eu tentei implementar scripts como indicadores, e isso funciona muito bem!

 
Dadas:

E, a propósito!

Alguém já se cansou de implementar uma EA no gráfico como um indicador?

Deve funcionar tão bem quanto isso!


Você não pode colocar negócios a partir de um Indicador, somente a partir de Scripts e EAs.
 
RaptorUK:

Você não pode colocar negociações a partir de um Indicador, apenas a partir de Scripts e EAs.


Então, um EA poderia funcionar como um roteiro? Em um loop?

Somente, quando em um loop infinito, o computador acabará travando.

Existe uma maneira de acionar um script em loop controlado por algum ticker, como a cada 50ms ou smth como esse?

Não por tiquetaques MT4?

 
RaptorUK:

Você não pode colocar ordens a partir de um Indicador, somente a partir de Scripts e EAs.


E outro pensamento:

Então você pode usar a função de evento de teclado para fazer pedidos por Script.

1. Escreva um Script para fazer pedidos automaticamente.

2. Atribuir um HOTKEY a ele.

3. No EA funcionando como Indicador, defina o evento do teclado.

Em seguida, você pode fazer o mesmo para fechar os pedidos.

Aí você tem! Um EA correndo como um Indicador e fazendo seu trabalho!

A única desvantagem deste modo é que você não pode desativar um Indicador com um evento de teclado - apenas removê-lo manualmente do gráfico.