Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1531

 

Como você lida com um congelamento de terminal?

O código é simples, mas é muito lento

   for(int i=limit;i>=0;i--)
     {
      RSI_01Buffer[i]=iRSI(NULL,0,RSI_Period,RSI_Price,i);
      RSI_02Buffer[i]=iMAOnArray(RSI_01Buffer,0,MA_Period,0,MODE_SMA,i);
     }
 
 
Alexey Viktorov:

É mais fácil e seguro colocar a primeira bandeira de partida no OnTick()

Deve fazer cálculos e renderizações de uma só vez, mesmo, por exemplo, em um fim de semana.

 
Igor Makanu:

Eu não vou adivinhar o que vai acontecer, a primeira coisa que vejo é que você fez uma pausa para obter os valores indicadores no OnInit() - o que vai acontecer se o usuário trocar o TF naquele momento?

SZY: E como seu código se comportaria se você executasse um EA, então feche o terminal e reabra o terminal com um EA em execução?

estas variantes são consideradas

 

Por favor, lembre-me de uma coisa trivial. Minha EA abre e fecha os pedidos no testador normalmente. Agora já estou trabalhando com a demonstração há uma semana e tudo está bem. Mas em dois casos, ao abrir a segunda ordem (Marting), minha EA não fechou as duas quando o saldo é positivo, mas apenas uma tem tido dificuldades com a segunda até que eu tenha fechado a ordem de tomada. Olhei para o tronco - o preçoera "requoting". Não deveria parecer um problema e deveria fechar de qualquer forma, mas não fechou.

Portanto, eu não escrevi a função ENVIAR (REQUERIDO) DE ENVIO em caso de uma condição. Por favor, diga-me como escrever esta trivialidade. Obrigado.

 
Порт-моне тв:

Por favor, lembre-me de uma coisa trivial. Minha EA abre e fecha os pedidos no testador normalmente. Agora já estou trabalhando com a demonstração há uma semana e tudo está bem. Mas em dois casos, ao abrir a segunda ordem (Marting), minha EA não fechou as duas quando o saldo é positivo, mas apenas uma tem tido dificuldades com a segunda até que eu tenha fechado a ordem de tomada. Olhei para o tronco - o preçoera "requoting". Não deveria parecer um problema e deveria fechar de qualquer forma, mas não fechou.

Portanto, eu não escrevi a função ENVIAR (REQUERIDO) DE ENVIO em caso de uma condição. Por favor, diga-me como escrever esta trivialidade. Obrigado.

if(GetLastError()==138)OrderClose(...);
ou aumentar o escorregamento
 
MakarFX:
Ou aumentar o deslize.

Obrigado por sua resposta. Por que 138???? Isto é um número de erro? E quanto aumentar o escorregamento (por favor, explique o significado do aumento). Obrigado

 
Порт-моне тв:

Por que 138???? É um número de erro?

Sim

Port mone tv:

E quanto aumentar o escorregamento (por favor, explique o significado do aumento).

Depende de você, quanto mais escorregamento, menos solicitações.

 
MakarFX:

Como você lida com um congelamento de terminal?

O código é simples, mas é muito ocupado.

Estranho...

Eu o fiz com int start() em vez de OnCalculate e ele não fica pendurado de jeito nenhum

Por quê?

 
Andrey Sokolov:

É necessário fazer cálculos e renderizações de imediato, mesmo, por exemplo, nos finais de semana.

Os indicadores funcionam em uma única linha, se um espera, todos os outros esperam, até que o terminal fique pendurado.
Ao iniciar o MT, a inicialização do indicador (-s) pode acontecer antes da inicialização das variáveis terminais, ou seja, é canja para pegar um enforcamento.