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

 
Dadas:


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

Não por carrapatos MT4?


Eu mesmo tentarei responder a isto:

Não é possível, porque a função start() é executada pelas novas cotações, o que significa os carrapatos do corretor.

Portanto, mesmo que você tenha um loop dentro da função start(), ele só faz loop quando um novo tick entra.

É por isso que você não pode ganhar contra o corretor!

No entanto, quando eu executei minha EA como um Script como este:

int start() {

while(1==1) {

MyEA();

}
}

meu computador começou a ficar lento, por causa desse loop.

Eu tentei isso no domingo, então o mercado estava fechado.

 
Dadas:


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?


Um script é executado uma vez a menos que você adicione um loop finito/infinito dentro de sua função start(). Se você quiser acionar o script com seu próprio tick gerado, então faça-o um EA e coloque-o em um gráfico offline.
 
Dadas:


No entanto, quando dirigi minha EA como um Roteiro como este:

meu computador começou a ficar para trás, por causa desse loop.


Seu computador precisa de uma atualização . . . ou para ser substituído.
 
RaptorUK:

Seu computador precisa de uma atualização . . . ou para ser substituído.

Isso é bem verdade! É um computador antigo.
 
RaptorUK:

Um script é executado uma vez a menos que você adicione um loop finito/infinito dentro de sua função start(). Se você quiser acionar o script com seu próprio tick gerado, então faça-o um EA e coloque-o em um gráfico offline.

Eu não posso negociar em um gráfico off-line.
 
Dadas:

Não posso negociar em um gráfico off-line.
Por que não?
 

Dadas 2012.08.12 16:34
Dadas:


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

Não por carrapatos MT4?


Eu mesmo tentarei responder a isto:

Não é possível, porque a função start() é executada pelas novas cotações, o que significa os carrapatos do corretor.

Portanto, mesmo que você tenha um loop dentro da função start(), ele só faz loop quando um novo tick entra.

É por isso que você não pode ganhar contra o corretor!

No entanto, quando eu executei minha EA como um Script como este:

int start() {

while(1==1) {

MyEA();

}
}

meu computador começou a ficar lento, por causa desse loop.

Eu tentei isso no domingo, então o mercado estava fechado.

Oi Dadas,

O script é executado sem um tick, a EA é executada com um tick.

Ao utilizar um loop infinito, adicione um Sleep ()(https://docs.mql4.com/common/Sleep)

Tente este código abaixo como um script, desligue a conexão com a Internet, abra o gerenciador de tarefas e anexe o script ao gráfico. O script irá loopar infinitamente com a necessidade de um tick, e sem usar muito o uso do processador.

  int n;
  while (IsStopped() == false) // or while (true)
    {
    n++;
    Alert (n);
    
    Sleep (500); // add this !
    }

 
.
 
RaptorUK:
Por que não?


Iluminem-me, por favor!

Como posso fazer comércio ao vivo em tempo real em um gráfico offline?

 
onewithzachy:

Olá Dadas,

O script é executado sem um tick, a EA é executada com um tick.

Ao utilizar um loop infinito, adicione um Sleep ()(https://docs.mql4.com/common/Sleep)

Tente este código abaixo como um script, desligue a conexão com a Internet, abra o gerenciador de tarefas e anexe o script ao gráfico. O script irá loopar infinitamente com a necessidade de um tick, e sem usar muito o uso do processador.


Muito obrigado!

É tão simples que eu mesmo deveria ter pensado nisso...

Cansado, eu pergunto: ........ Como meu velho computador - LOL!

Embora, você sabe, eu estivesse pensando no smth um pouco diferente.

Estou pensando em como anular o tiquetaque no MT4 live trading!

A questão é que, enquanto o comércio ao vivo, os carrapatos controlam a EA e, portanto, o corretor também pode.

Em outras palavras, se eu quiser que minha EA feche a ordem sob alguma condição - eu quero que minha EA faça exatamente isso, definitivamente, não talvez.

Além das solicitações (que nada mais posso fazer, a não ser mudar o corretor), acontece com muita freqüência que vejo no meu gráfico

que meu pedido deveria estar fechando, mas está apenas pendurado até o próximo tique, e depois perde.

Se eu escrever no meu EA:

if(AccountProfit()>0) { CloseAllOrders(); }

então eu quero que ele feche @ 1 Pip lucro ou mais. Não espero que ele fique pendurado no 1 Pip e não faça nada!

BTW, eu estou negociando com spread fixo de 1 Pip em EURUSD.

Portanto, não preciso do óbvio, e Sleep() também não é uma solução, a não ser para os testes offline para trás.

BTW, qualquer teste retrospectivo não é bom para nada - não é um teste em tempo real.

Bem, é bom para algumas observações e estudos gráficos, para aprender muito!

Mas, no comércio em tempo real você não conhece o futuro, e cometerá erros - a menos que realmente confie em sua EA!

Confie mais nisso do que no que você vê nos gráficos! - Essa é a parte mais difícil!

Então, rapazes, por favor, leiam meus posts com compreensão!