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

 
Igor Makanu:

experimentar tal código, ler a mensagem no log EA (mudar TF, digitar variável, recarregar terminal sem fechar EA...)

e a segunda variante é descrever em âmbito global uma variável com modificador estático

Em primeiro lugar, este é o mql4.

Em segundo lugar, preciso executar o OnInit() em qualquer mudança de variáveis do Expert Advisor.

Isso é tudo o que peço ajuda!

Sim, reiniciar o terminal e mudar o texto ajuda, mas quando você muda as variáveis, OnInit() não funciona e é por isso que eu tenho todos os problemas!!!!

 
Игорь:

Em primeiro lugar, é mql4. Em segundo lugar, preciso executar o OnInit() para mudar as variáveis da EA.

Em segundo lugar, preciso dele para executar o OnInit() quando as variáveis do Expert Advisor são alteradas.

Isso é tudo o que peço ajuda!

Reiniciar o terminal e mudar o texto ajuda, mas quando você muda as variáveis, OnInit() não funciona e é por isso que eu tenho todos os problemas!!!!

Eu tenho a seguinte solução. OnInit() copia as variáveis na 1ª execução do EA. Em Calc...() ou o que quer que seja em MT4, ele verifica se as variáveis são idênticas às suas cópias. Se as variáveis não coincidirem, então executamos à força o OnInit() e, se necessário, executaremos algo mais antes disso para atualizar a EA. E finalmente, voltar.

 
Игорь:

Em primeiro lugar, é mql4. Em segundo lugar, preciso executar o OnInit() para mudar as variáveis da EA.

Em segundo lugar, preciso dele para executar o OnInit() quando as variáveis do Expert Advisor são alteradas.

Isso é tudo o que peço ajuda!

Sim, reiniciar o terminal e mudar o cofre ajuda, mas quando você muda as variáveis, OnInit() não funciona e é por isso que eu tenho todos os problemas!!!!

Você já olhou o código que lhe dei? Era o MT4 e tudo funciona como você pediu

leia a documentaçãohttps://docs.mql4.com/ru/runtime/event_fire

Eu executei o código que sugeri, alterei a variável externa var duas vezes, aqui está o log do Expert Advisor:

0       15:36:39.736    Compiling 'test'
0       15:37:37.573    Expert test EURUSD,H1: loaded successfully
0       15:37:39.101    test EURUSD,H1 inputs: var1=1; 
0       15:37:39.130    test EURUSD,H1: Вызов OnInit(), var1=1
0       15:37:39.130    test EURUSD,H1: initialized
0       15:37:51.341    test EURUSD,H1: uninit reason 5
0       15:37:51.343    test EURUSD,H1: Вызов OnInit(), var1=34567
0       15:37:51.343    test EURUSD,H1: initialized
0       15:37:51.366    test EURUSD,H1 inputs: var1=34567; 
0       15:38:04.124    test EURUSD,H1: uninit reason 5
0       15:38:04.126    test EURUSD,H1: Вызов OnInit(), var1=-9999
0       15:38:04.126    test EURUSD,H1: initialized
0       15:38:04.149    test EURUSD,H1 inputs: var1=-9999; 

Aqui está o código onde estão os "bugs".

Você pode chamar qualquer função de qualquer lugar em um programa MQL. A função de inicializar um Expert Advisor é uma função, e você pode forçar uma chamada OnInit(), mas geralmente você não precisa dela.

События клиентского терминала - Программы MQL4 - Справочник MQL4
События клиентского терминала - Программы MQL4 - Справочник MQL4
  • docs.mql4.com
Сразу же после того, как клиентский терминал загрузит программу (эксперт или пользовательский индикатор) и запустит процесс инициализации глобальных переменных, будет послано событие Init, которое обрабатывается функцией OnInit(), если она есть. Это событие также генерируется после смены финансового инструмента и/или периода графика, после...
 
Igor Makanu:

há muitos erros no código, em

é melhor normalizar os preços, então eles funcionarão, então o servidor dará um erro de "preços errados", é desejável normalizar oStopLoss_SELL

e, muito provavelmente, você precisa verificar se o StopLoss é igual a zero, e não é desejável comparar números reais para ser igual, você deve tentar comparar números reais com > ou <

Se houver muitos erros, você se importaria de indicá-los a todos?

 
Igor Makanu:

você olhou o código que eu lhe dei? era MT4 e tudo funciona como você pede

então leia a documentaçãohttps://docs.mql4.com/ru/runtime/event_fire

Eu executei o código que sugeri, alterei a variável externa var duas vezes, aqui está o log do Expert Advisor:

Aqui está o código onde estão os "bugs".

Você pode chamar qualquer função de qualquer lugar no programa MQL, a função de inicializar um Expert Advisor também é uma função. Você pode forçar uma chamada OnInit(), mas geralmente você não precisa dela - o terminal chamaOnInit() por si só.

Muito obrigado, graças ao seu código de erros, encontrei !!!!!!!!! BOA SORTE !!!! E OBRIGADO PELA AJUDA !!!!!!

 
Por favor, informe. Como posso fazer com que o indicador padrão MA seja exibido não para todo o histórico, mas para um número especificado de velas? Eu gostaria de lhe fazer uma pergunta.
 
prom18:
Por favor, informe. Como posso fazer com que o indicador padrão MA seja exibido não para todo o histórico, mas para um número especificado de velas? Obrigado.
Escreva seu próprio indicador de MA com a definição da profundidade da história!
 

Como faço para definir manualmente as citações paratestar um EA?

Deve haver uma solução, mas eu não consegui encontrá-la.

 
Galim_V:

O que há de errado com F12 após uma pausa?

Eu queria especificamente definir o movimento de preços

 
Andrey Sokolov:

Como faço para definir manualmente as citações paratestar um EA?

Certamente existe uma solução, mas eu não consegui encontrá-la.

Escreva seus próprios carrapatos e coloque-os no testador de estratégia.