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

 
Roman:

Realmente útil...

Imprimir em diferentes prazos.

Porque a variável predefinida _Periodo produz o valor que:

A variável _Período armazena o valor do intervalo de tempo do gráfico atual.

E este prazo é definido pelo valor da constante da enumeração ENUM_TIMEFRAMES que corresponde ao período do gráfico.

Ok, resolva isso:

//+------------------------------------------------------------------+
//|                                         TestTimeframe_Period.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print
     (
      "Значение предопределённой переменной _Period на графике ",TimeframeDescription(Period())," = ",(string)(int)_Period,"\n",
      "Значение константы перечисления ENUM_TIMEFRAMES ",EnumToString(Period())," = ",(string)(int)Period(),"\n",
      "Период графика, соответствующий константе перечисления ENUM_TIMEFRAMES ",EnumToString(Period()),", со значением ",(string)(int)Period()," = ",TimeframeDescription(Period())
     );
  }
//+------------------------------------------------------------------+
//| Возвращает описание таймфрейма                                   |
//+------------------------------------------------------------------+
string TimeframeDescription(const ENUM_TIMEFRAMES timeframe)
  {
   return StringSubstr(EnumToString((timeframe>PERIOD_CURRENT ? timeframe : (ENUM_TIMEFRAMES)Period())),7);
  }
//+------------------------------------------------------------------+
Документация по MQL5: Предопределенные переменные / _Period
Документация по MQL5: Предопределенные переменные / _Period
  • www.mql5.com
Предопределенные переменные / _Period - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

Não usei mql4 )) e não me acostumei a ele.
Por que temos que dividir por mais 60 ???
Onde diz isso na referência?
Já são suas muletas que contornam o bug.
Agora verifique sua muleta, em todos os períodos de tempo

Um bug? Então você acha que ter prazos M1, M2, M3, M4, M5, M6, e depois M10 também é um bug?

Por que você não pede aos desenvolvedores que eliminem os bugs de prazos em falta?

M7, M8, M9, M11, M13, M14, M16, M17, M18, M19, M21, M22, M23, M24, M25, M26, M27, M28, M29, M31 - M59, N1_M1, N1_M2, N1_M3, --- , ---, CEM_ANOS ?

Por que a representação interna das constantes de transferência de repente é um bug ?

A falta de trezentas notas de rublo não o incomoda?

 
Artyom Trishkin:

Um bug? Então você acha que ter prazos M1, M2, M3, M4, M5, M6, e depois M10 também é um bug?

Por que você não pede aos desenvolvedores que eliminem os bugs de prazos em falta?

M7, M8, M9, M11, M13, M14, M16, M17, M18, M19, M21, M22, M23, M24, M25, M26, M27, M28, M29, M31 - M59, N1_M1, N1_M2, N1_M3, --- , ---, CEM_ANOS ?

Por que a representação interna de enum constantes de repente é um bug ?

Você não se incomoda com a falta de trezentas notas de rublo?

Você pode me dizer se o valor de 16385 corresponde ao valor do período do gráfico H1?
E todos os outros valores do período acima de H1.
Igor até lhe mostrou o formato binário, e meu próximo post é o mesmo, mas em um formato diferente.

Você está indo numa direção completamente diferente, não mencione algo que não tenha dito.
O que me incomoda é que o moderador amordaça os bugs com suas muletas!
Não contribuindo para sua eliminação.

Aqui está outro bug para você.

Print(PeriodSeconds(PERIOD_MN1)*1000);

E a mesma coisa no gráfico MN.

Print(PeriodSeconds(PERIOD_CURRENT)*1000);
 
Roman:

Diga-me por favor, o valor de 16385 corresponde ao valor do período do gráfico H1?
E todos os outros valores do período acima de H1.

Você está indo numa direção completamente diferente, não fale de algo que não tenha sido falado.
O que me incomoda é que o moderador está lavando os insetos com suas muletas!
E não contribuindo para sua eliminação.
Aqui está outro bug para você.

Você não tem tempo para estudar a ajuda?

Algo que você não entende é um bug que você acha que os desenvolvedores deveriam consertar?

Ou talvez você devesse aprender a ler neste caso, em vez de passar o dinheiro para um moderador?

Print((string)(uint)PeriodSeconds(PERIOD_MN1)*1000)

Por que você está transbordando a int ?

Portanto, imprima-o para você mesmo:

Print
  (
   "(int)PeriodSeconds(PERIOD_MN1) = ",(int)PeriodSeconds(PERIOD_MN1),
   ", (ulong)PeriodSeconds(PERIOD_MN1)*1000 = ",(ulong)PeriodSeconds(PERIOD_MN1)*1000,
   ", INT_MAX = ",INT_MAX
  );

e, por favor, corrija o erro em seu próprio pensamento.

E se você quiser milissegundos, represente-os como ulong.

 
Artyom Trishkin:

Você não tem tempo para estudar a ajuda?

Algo que você não entende é um bug que você acha que os desenvolvedores deveriam consertar?

Ou talvez você devesse aprender a ler neste caso, em vez de passar o dinheiro para um moderador?

Por que você está transbordando a int ?

Portanto, imprima-o para você mesmo:

e, por favor, corrija o erro em seu próprio pensamento.

Superlotação, sim, isso foi um lapso, eu não levei isso em consideração. Obrigado aqui.
Mas seu exemplo não se compila.

Como está bem impresso, adivinhe quando você precisa de um fio e quando você não precisa ))

Print((uint)PeriodSeconds(PERIOD_MN1)*1000);


E em relação à variável _Periodo, há algo errado acima de H1.

 
Roman:

Diga-me por favor, o valor de 16385 corresponde ao valor do período do gráfico H1?
E todos os outros valores do período acima de H1.
Igor até lhe mostrou o valor em formato binário, e o próximo é meu posto, onde você vê o mesmo valor em outro formato.

Você está indo numa direção completamente diferente, não mencione algo que não tenha dito.
O que me incomoda é que o moderador amordaça os bugs com suas muletas!
Não contribuindo para sua eliminação.

Aqui está outro bug para você.

E o mesmo na tabela MN.

1. Sim, corresponde ao valor da constante.

2. e todas as outras correspondem ao valor da constante.

Tente imprimi-lo.

Print("SYMBOL_BID=",SYMBOL_BID); 

Você acha que o preço atual da Licitação será impresso para você, ou algo mais?

Por que então você espera de

Print("PERIOD_H1=",PERIOD_H1);

que lhe será dado algo como H1 ou 60 ?

E Igor não o imprimiu para mim, mas mostrou a representação interna dos valores constantes da enumeração ENUM_TIMEFRAMES no formato binário.

Você alegou que os valores das constantes de enumeração que me mostrou são um erro e minha explicação é uma muleta. Isto não é assim - é apenas sua ignorância do básico simples.

Agora eu me retiro - aprenda o básico e, por favor, não mostre sua ignorância em bugs e muletas dos desenvolvedores - não é bom jogar um branco. Sim, e você escolhe algumas "palavras apertadas", ao mesmo tempo em que esquece que afinal você não sabe de nada.

Você vai descobrir, mas seu esboço permanecerá para outros que são igualmente "conhecedores". É uma praga...

 
Roman:

Com o transbordamento, sim, exagerado, não levou este ponto em consideração. Obrigado.
Mas sua amostra não será compilada.

Mas imprime bem, então adivinhe quando você precisa de um fio e quando você não precisa ))


E em relação à variável _Período, algo deve estar errado acima de H1.

Quero dizer, o que você quer dizer com "não compila"? Copiado do fórum para o roteiro e compilado:


E a variável _Period retorna o valor da constante de enumeração ENUM_TIMEFRAMES do gráfico atual como int. Isto é, não o número de minutos, não o número de segundos, mas o valor da constante de ENUM_TIMEFRAMES correspondente ao gráfico atual.

 
Roman:

Mas imprime tudo bem, então adivinhe quando você precisa de um fio e quando você não precisa ))

Não é preciso adivinhar. Você tem que pensar e entender o que está sendo feito e com que objetivo. Quando algo precisa ser escrito e quando não precisa ser escrito.

 
Artyom Trishkin:

Por que então você esperaria

que você vai conseguir algo como H1 ou 60 ?

Porque os minutos de tempo abaixo de H1 retornam os valores corretos.
Como descrito na ajuda, eles devolvem o valor do prazo, não uma constante aleatória.

Print("PERIOD_M1=",PERIOD_M1);
Print("PERIOD_M5=",PERIOD_M5);
Print("PERIOD_M30=",PERIOD_M30);
Print("PERIOD_H1=",PERIOD_H1);
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M1=1
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M5=5
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_M30=30
2020.04.10 03:19:50.600 VP (EPM20,H4)   PERIOD_H1=16385

É por isso que é lógico esperar isso de prazos mais altos, continuando a seqüência em minutos.
PERÍODO_H1=60

etc.

 
Roman:

Porque os minutos de tempo abaixo de H1 retornam valores corretos.
Como é descrito na ajuda, eles devolvem o valor do prazo, não as constantes arbitrárias.

É por isso que é lógico esperar isso de prazos mais altos, continuando a seqüência em minutos.
PERÍODO_H1=60

etc.

... continuando a compor canções malignas, esperando o comunismo, a marca de trincheiras e o *** colecionar...

É lógico não usar valores constantes na expectativa de retornar valores "lógicos" esperados.

Mais uma vez (pela última vez) deixe-me lembrá-lo da constante SYMBOL_BID. É "lógico" esperar dele o valor do preço atual da Licitação ao invés de 1 por alguma razão, certo? Ou não é?

É isso aí. Estou cansado do alcaçuz, e não aceitei ensinar, por assim dizer.

Razão: