Erros, bugs, perguntas - página 1178

 
svds75:
Não, preciso de o definir manualmente e de o verificar programáticamente.
Depois tenho de ler a bandeira de visibilidade e fazer uma lógica & com a constante.
 

Assim:

   long cf=ObjectGetInteger(0,"name",OBJPROP_TIMEFRAMES);
   Alert(((cf&OBJ_PERIOD_H1)==OBJ_PERIOD_H1) || cf==0);
Se a bandeira de visibilidade em H1 for colocada, será verdade.
 
Integer:
Depois é preciso ler a bandeira de visibilidade e fazer uma lógica & com a constante.

Se se refere:

ObjectGetInteger(0,"line",OBJPROP_TIMEFRAMES,OBJ_PERIOD_W1&OBJ_PERIOD_MN1,res);

Ou

ObjectGetInteger(0,"line",OBJPROP_TIMEFRAMES,OBJ_PERIOD_W1&&OBJ_PERIOD_MN1,res);
A mesma coisa.
 
svds75:

Se se refere:

Ou

A mesma coisa.
Não. Não há necessidade de fazer com enumeração. Basta ir, e depois verificar se a bandeira com o prazo requerido está definida. Acima é um exemplo.
 
svds75:

Se se refere:

Ou

A mesma coisa.

O seu erro aqui é bool(res), uma vez que res é sempre superior a 1 em qualquer mapeamento, veja o que é devolvido em res, portanto bool(res) só retornará 0 ou falso quando res=0

Está a utilizar a conversão de tipo e comparação de forma desatenta

OBJ_NO_PERIODS

0

O objecto não é mostrado em qualquer período de tempo

OBJ_PERIOD_M1

0x00000001

O objecto é traçado em gráficos de 1 minuto

OBJ_PERIOD_M2

0x00000002

O objecto é traçado em gráficos de 2 minutos

OBJ_PERIOD_M3

0x00000004

O objecto é traçado em gráficos de 3 minutos

OBJ_PERIOD_M4

0x00000008

O objecto é traçado em gráficos de 4 minutos

OBJ_PERIOD_M5

0x00000010

O objecto é traçado em gráficos de 5 minutos

OBJ_PERIOD_M6

0x00000020

O objecto é traçado em gráficos de 6 minutos

OBJ_PERIOD_M10

0x00000040

O objecto é traçado em gráficos de 10 minutos

OBJ_PERIOD_M12

0x00000080

O objecto é traçado em gráficos de 12 minutos

OBJ_PERIOD_M15

0x00000100

O objecto é traçado em gráficos de 15 minutos

OBJ_PERIOD_M20

0x00000200

O objecto é traçado em gráficos de 20 minutos

OBJ_PERIOD_M30

0x00000400

O objecto é traçado em gráficos de 30 minutos

OBJ_PERIOD_H1

0x00000800

O objecto é traçado em gráficos de 1 hora

OBJ_PERIOD_H2

0x00001000

O objecto é traçado em gráficos de 2 horas

OBJ_PERIOD_H3

0x00002000

O objecto é traçado em gráficos de 3 horas

OBJ_PERIOD_H4

0x00004000

O objecto é traçado em gráficos de 4 horas

OBJ_PERIOD_H6

0x00008000

O objecto é traçado em gráficos de 6 horas

OBJ_PERIOD_H8

0x00010000

O objecto é traçado em gráficos de 8 horas

OBJ_PERIOD_H12

0x00020000

O objecto é traçado em gráficos de 12 horas

OBJ_PERIOD_D1

0x00040000

O objecto é traçado em gráficos diários

OBJ_PERIOD_W1

0x00080000

O objecto é traçado em gráficos semanais

OBJ_PERIOD_MN1

0x00100000

O objecto é traçado em gráficos mensais

OBJ_ALL_PERIODS

0x001fffff

O objecto é traçado em todos os períodos de tempo

 
Integer:

Aí está:

Se a bandeira de visibilidade em H1 for colocada, será verdade.
Está a funcionar, obrigado.
 
meat:

Como continuação do meu posto anterior, consegui encontrar a área problemática que causou o insecto utilizando o método científico.

Temos uma tal biblioteca com a função:

Aqui está o ficheiro principal:

O Expert Advisor resultante não funciona e exibe no registo: "O carregamento EX5 falhou".

Obrigado pelo correio, foi fixado.
 

Hi. Eu tranquei a EA na função OnInit e deve ser a razão pela qual o terminal fica pendurado quando desligo a EA e mudo o prazo (o prazo não muda após os travões). Então a minha pergunta é: É causado por enforcamentos? Em caso afirmativo, é corrigido se eu mover o algoritmo para OnTick? Se não, o que ajudaria?

PS: O laço tem uma função Dormir, para que o terminal não fique sobrecarregado. Os campos de entrada são lidos no laço.

 
king20:

Hi. Fechei a EA na função OnInit e provavelmente por causa disso o terminal fica pendurado quando desligo a EA e mudo o prazo (o prazo não muda após os travões). Então a minha pergunta é: É causado por enforcamentos? Em caso afirmativo, é corrigido se eu mover o algoritmo para OnTick? Se não, o que ajudaria?

PS: O laço tem uma função Dormir, para que o terminal não fique sobrecarregado. Os campos de entrada são lidos no laço.

Formatar o disco rígido.
 
king20:

Hi. Bloqueei o Expert Advisor na função OnInit e parece que quando desligo a EA e mudo o prazo o terminal fica pendurado (o prazo não muda após os travões). Então a minha pergunta é: É causado por enforcamentos? Em caso afirmativo, é corrigido se eu mover o algoritmo para OnTick? Se não, o que ajudaria?

PS: O laço tem uma função Dormir, para que o terminal não fique sobrecarregado. Os campos de entrada são lidos no laço.

OnInit - serve apenas para inicialização. Todos os cálculos devem ser feitos mais tarde - OnTick, OnTimer, etc.

Se precisar de saber a mudança no campo de entrada, existe uma biblioteca padrão para isso: https://www.mql5.com/ru/docs/standardlibrary/controls/cedit

Документация по MQL5: Стандартная библиотека / Классы для создания панелей и диалогов / CEdit
Документация по MQL5: Стандартная библиотека / Классы для создания панелей и диалогов / CEdit
  • www.mql5.com
Стандартная библиотека / Классы для создания панелей и диалогов / CEdit - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5