Características da linguagem mql5, subtilezas e técnicas - página 194

 

Olá, ajuda dos peritos!

A partir de documentação

Variáveis globais

"A inicialização de variáveis globais é realizada uma vez após o programa ser carregado na memória do terminal do cliente e antes do primeiro Init ser tratado. Para as variáveis globais, que são objectos de classes, durante a inicialização são chamados os construtores apropriados".

Mas na verdade, quando mudo de período de gráfico, o construtor da classe global de objectos em indicador é chamado.

Como fazer com que o construtor seja chamado uma vez após o início do indicador?

 
Gudgeon:

Mas de facto, quando altero o período do gráfico, o construtor da classe do objecto no indicador é chamado.

Como fazer com que o construtor seja chamado uma vez depois de o indicador ser iniciado?

Mudança de TF para o indicador - início de uma nova cópia do programa.

 
fxsaber:

Mudança da TF para o indicador - executar uma nova cópia do programa.

Obrigado!

Inesperadamente, não compreendo a partir da documentação.

Tudo está bem nos Consultores Especialistas.

 
Pode saber quanto tempo leva a compilar o seu programa da seguinte forma.
LastModifyEX5() - __DATETIME__
 
fxsaber:
Pode descobrir quanto tempo demora a compilar o seu programa da seguinte forma.
O que é LastModifyEX5()? Não o consigo encontrar no sítio web.
 
Alexey Viktorov:
E esta LastModifyEX5() o quê? Não o consigo encontrar no sítio web.

Tem de ser o próprio a escrever através do WinAPI. A implementação é aqui secundária.

 

Meus amigos, colegas de hobby!

Como posso programar a visibilidade de um indicador específico numa TF específica,

Considerando que pode haver outros 5 indicadores para outras TFs.

Pesquisei na descrição, e muito simplesmente, a pesquisa na ajuda, mas a pesquisa da descrição não dá nenhum resultado sobre o mecanismo para a resolver.


Eu sei como definir a visibilidade dos objectos.

 
O limitador pode alterar a suaORDER_TIME_SETUP_MSC - em caso de execução parcial, esta propriedade torna-se igual ao tempo da primeira (possivelmente penúltima) execução parcial.
 
No Testador, esta condição será sempre desencadeada.
int OnInit()
{
  MqlTick Tick;
  
  return(SymbolInfoTick(_Symbol, Tick) && (TimeCurrent() != Tick.time));
}
É difícil dizer se se trata de um bug no testador ou de uma característica.
 

Umavez foi proposta uma forma de determinar a compensação GMT da hora do servidor. Nem sempre funciona com precisão.

Abaixo parece ser uma versão exacta.

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmtoffset
int TimeServerGMTOffset( void )
{
  MqlCalendarValue Value[1];
  
  CalendarValueHistoryByEvent(840030016, Value, D'2020.12.03', D'2020.12.06');
  
  return((13 - ((Value[0].time / 3600) % 24)) * 3600);
}

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmt
datetime TimeServerGMT( void )
{
  return(TimeTradeServer() + TimeServerGMTOffset());
}


Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais

Características da linguagem mql4, complexidades e truques

fxsaber, 2018.03.29 14:32

Aplicações

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{  
  PRINT(TimeGMT());
  PRINT(TimeServerGMT());  
}