Perguntas de um "boneco" - página 117

 
meneo:

Como pode isto ser? (ver cálculo da variável k e valores de todas as variáveis em modo de depuração)

É muito simples. lparam é do tipo longo (inteiro), wdpix é do tipo int (inteiro). lparam/wdpix é do tipo privado longo (inteiro). Desde lparam < wdpix, lparam/wdpix ==0.

Ver Referência MQL5 / Noções básicas de linguagem / Tipos de dados / Conversão de tipo

 
meneo:

Como explica as lacunas entre as barras adjacentes no gráfico?

Se o vir, por favor notifique o Service Desk sobre o erro.
 
Obrigado a todos! )
 
Sabe dizer qual o perito que está a correr noutra janela?
 
meneo:
Pode dizer qual é o Expert Advisor que está a correr noutra janela?
Parece ser impossível (se não me escapou nada). Mas é possível "distinguir" o que é próprio dos "outros". Se houver vários programas no projecto, pode especificar o seu protocolo de troca de cortesias através de mensagens personalizadas. Devem dizer olá, tirar o chapéu, virar os bolsos, etc.
 

É também possível fazer uma enumeração por enumeração

como esta?

para (int i = PERIOD_M1;i<=PERIOD_D;i++)

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
meneo:

É também possível fazer uma enumeração por enumeração

como esta?

para (int i = PERIOD_M1;i<=PERIOD_D;i++)

Isto não vai funcionar.

Sobre isto - Devia experimentar.

for (ENUM_TIMEFRAMES i = PERIOD_M1;i<=PERIOD_D;i++) {}

De alguma forma suspeito que isso não irá funcionar, embora "teoricamente" tenha uma hipótese. :)

 

Bem, eu tentei.

void OnStart()
  {
//---
   for (ENUM_TIMEFRAMES i = PERIOD_M1;i<=PERIOD_D;i++) { Print(EnumToString(i));}
  }
//+------------------------------------------------------------------+

Não quer sequer compilar.

'ForEnum.mq5' ForEnum.mq5 1 1 1
'i' - ficha inesperada ForEnum.mq5 15 25 25
'i' - identificador não declarado ForEnum.mq5 15 25
'PERIOD_D' - identificador não declarado ForEnum.mq5 15 42
'i' - parâmetro para EnumToString deve ser uma enumeração ForEnum.mq5 15 77
4 erro(s), 0 aviso(s) 5 1

Mas parece não haver nada de ilegal nisso.

 
MetaDriver:

Eu tentei.

O programador nem sequer quer compilar.

E parece não haver nada de ilegal nisso.


Para trabalhar com o enum, deve provavelmente acrescentar pelo menos funções como

enum::GetName e enum::GetValue

e construção da linguagem foreach

A enumeração será então automatizada por MQL

 

Isto, é claro, funciona.

#property script_show_inputs

input  ENUM_TIMEFRAMES P = PERIOD_D1;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for (int i = PERIOD_M1;i<=P;i++)  // { Print(EnumToString(ENUM_TIMEFRAMES(i)));}
    {
      string S=EnumToString(ENUM_TIMEFRAMES(i));
      if (StringGetCharacter(S,0)=='P')   

        {{{{ Print(S);  }}}}

    }

  }

E o que é óptimo - não diz que P é um símbolo inesperado ou um identificador não declarado

E, pelo contrário, como cliente habitual, oferece todas as conveniências



Estranho ..... ;)