Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 330

 
ramis866:
Alguém me pode dizer como utilizar os EAs?
Ver Ajuda: criação e funcionamento de EAs.
 
Rapazes! Quando o prazo é alterado, a EA é reiniciada. Como resultado, devolve todos os seus gráficos desenhados à visualização por defeito. Como posso impedir o seu reinício quando mudo o prazo?
 
net:
Rapazes! Quando alteramos o calendário, a EA é reiniciada. Como resultado, devolve todo o seu gráfico desenhado à sua aparência padrão. Como posso desactivar o reinício quando altero o período de tempo?

Seria melhor corrigir uma nuance no Expert Advisor, para que o gráfico por ele desenhado seja exibido correctamente após a mudança da TF?

 
net:
Rapazes! Quando se muda o calendário, a EA é reiniciada. Como resultado, devolve todo o seu gráfico desenhado à visualização por defeito. Como posso desactivar o reinício quando altero o período de tempo?

Não se pode proibir. E é necessário salvar o gráfico? Afinal, para cada período de tempo do gráfico, todas as construções podem variar dramaticamente.Tomemos o indicador MACD em diferentes períodos de tempo do gráfico como um exemplo.E se a traçado do gráfico for necessário, é necessário alterar a lógica do Expert Advisor.

O Expert Advisor e o indicador devem ser reiniciados após a mudança do período do gráfico - esta é a lógica da função OnInit() - manipulador do Init():

Init

Assim que o terminal do cliente carregar um programa (Expert Advisor ou indicador personalizado) e iniciar a inicialização de variáveis globais, será enviado um Init, que é tratado pela função OnInit(), se tiver um. Este evento também é gerado após uma mudança de segurança e/ou de período gráfico, após recompilar o programa no MetaEditor, após uma mudança dos parâmetros de entrada de um Expert Advisor ou uma janela de definição de indicadores personalizada. O Conselheiro Especialista também é inicializado após a conta ter sido alterada. O evento Init não é gerado para scripts.

 
barabashkakvn:

Não se pode proibir. E é necessário salvar o gráfico? Afinal, para cada período de tempo do gráfico, todas as construções podem variar dramaticamente.Tomemos o indicador MACD em diferentes períodos de tempo do gráfico como um exemplo.E se a traçado do gráfico for necessário, é necessário alterar a lógica do Expert Advisor.

O Expert Advisor e o indicador devem ser reiniciados após a mudança do período do gráfico - esta é a lógica da função OnInit () - manipulador do Init event:

Não estou totalmente de acordo. Claro que é necessário reiniciar, mas é necessário para poupar recursos, especialmente para indicadores/visores multitemporais com um grande número de objectos gráficos - é possível contornar algumas partes da inicialização, em particular, o recálculo do já construído. Isto é, se por lógica (que pessoalmente penso estar correcta) após a deinicialização as construções gráficas forem eliminadas, então a razão da alteração TF deve ser processada (sem eliminar as construções). Se quiser, é melhor ajustar a visibilidade dos objectos pela TF sem reconstruir os próprios objectos.
 
Tapochun:
Não concordo muito. Claro que é necessário recomeçar, mas por uma questão de economia de recursos, apenas para indicadores/visores multitemporais com um grande número de objectos gráficos - é possível contornar algumas partes da inicialização, em particular, o recálculo dos já construídos. Isto é, se por lógica (que pessoalmente penso estar correcta) após a deinicialização as construções gráficas forem eliminadas, então a razão da alteração TF deve ser processada (sem eliminar as construções). Se quiser, é melhor ajustar a visibilidade dos objectos pela TF sem reconstruir os próprios objectos.
Tudo está nas mãos do programador.
 

Pode dizer-me como encontrar o valor mínimo de variável com tipo duplo a partir de amortecedores iCustom, existem 8 deles.

Penso que é resolvido pela matriz, mas como escrevê-lo não sei.

Ajude o plz!

 

Olá a todos, tanto freeloaders como profissionais, não tenho tempo para reler todas as memórias do fórum, calmamente pelo princípio de parkour aprendemos MQ.............

Vobsobschestvya problema actual: descarreguei o painel a partir do exemplo, adaptei-o no meu EA, agora a tarefa é activar e desactivar este painel nas definições

assim no código

Eu escrevo em variáveis :

entrada bool vkl =false;// painel de eliminação

Explico melhor

se //

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Вывести в журнал причину деинициализации
   Print(GetDeinitReasonText(reason));
//--- При удалении с графика
   if(reason==REASON_REMOVE)
      //--- Удалить все объекты с графика, которые относятся к информационной панели   
      DeleteInfoPanel();
      
     
  }

DeleteInfoPanel();

se (vkl=falso);

----------------

então um erro ou outra coisa que ele não me entende))

Se souber como fazê-lo correctamente através do exemplo, ou mostrar-me onde encontrar um ficheiro com um exemplo

Arquivos anexados:
 
alhoya:

Pode dizer-me como encontrar o valor mínimo de variável com tipo duplo a partir de amortecedores iCustom, existem 8 deles.

Penso que é resolvido pela matriz, mas como escrevê-lo não sei.

Ajude o plz!

Depois de obter uma manipulação do indicador personalizado usando iCustom, copia-se o valor do buffer analisado do indicador personalizado para o seu buffer usando CopyBuffer em OnCalculate(). Resta encontrar o valor mínimo no seu tampão utilizando o ArrayMinimum.
 
aleks557:

...

A fim de eliminar algo, tem de ser criado primeiro.

void DeleteInfoPanel()
  {
   DeleteObjectByName("InfoPanelBackground");   // Удалить фон панели
   DeleteObjectByName("InfoPanelHeader");       // Удалить заголовок панели
//--- Удалить свойства позиции и их значения

E mais uma coisa: quando alterar as propriedades da EA (nos parâmetros de entrada definiu a condição verdadeira - quer apagar a EA), esta condição não lhe permitirá apagar o painel:

void OnDeinit(const int reason)
  {
//--- Вывести в журнал причину деинициализации
   Print(GetDeinitReasonText(reason));
//--- При удалении с графика
   if(reason==REASON_REMOVE)
      //--- Удалить все объекты с графика, которые относятся к информационной панели   
      DeleteInfoPanel();

  }

Esta condição só funcionará se eliminar o Expert Advisor do gráfico.