Erros, bugs, perguntas - página 202

 
Interesting:

Agora, ao contrário do MT4, o período não significa o número de segundos de um período.

Leia com mais atenção, escrevi sobre _Periodo, não sobre PeriodSeconds. E não desorganize a página com os seus erros de percepção, por favor.
 
ANG3110:
Nunca mostrou o número de segundos, mesmo no MT4 querido... Mas os minutos em MT4 mostraram claramente. O que é que _Período no gráfico H1 mostra então? A mim parece-me um insecto sério.
ANG3110:
Leia atentamente, escrevi sobre _Periodo, não sobre PeriodSeconds. E não entupir a página com os seus erros de percepção, por favor.
Já fixado. O ponto geral é, usando PeriodSeconds obtemos exactamente segundos num período, e depois fazemos o que quisermos com eles...

Assim H1 = 16385 não é um disparate, é a representação numérica de H1 em ENUM_TIMEFRAMES.


Ler Period-u ajuda

Período

Devolve o valor temporal do gráfico actual.

PeríodoENUM_TIMEFRAMES();

Valor devolvido

Conteúdo da variável _Periodo , contendo o valor temporal do gráfico actual. Ovalor pode ser um dos valores daenumeração de ENUM_TIMEFRAMES.

PS

Assim,devolve não o número de minutos correspondente ao período (como foi em MT4), mas o elemento da enumeração ENUM_TIMEFRAMES(ou a sua representação numérica, se necessário)...

 
Interesting:
Já corrigido. O ponto geral é, usando PeriodSeconds obtemos exactamente segundos num período, e depois fazemos o que quisermos com eles...

Assim H1 = 16385 não é um disparate, mas uma representação numérica de H1 em ENUM_TIMEFRAMES.

Raios, que confusão. Antes tudo era simples e fácil - basta escrever Period() e receberá minutos. Agora, obtêm-se alguns identificadores de serviço que não são realmente necessários para o vosso trabalho. Ok, vou tentar obter os minutos em segundos.
 

Então, se eu solicitar _Período no H1 e receber este ENUM_TIMEFRAMES= 16385, como posso obter minutos dele?

Embora, claro, dividir PeriodSeconds()/60 não valha nada. Mas o que são estes identificadores e como trabalhar com eles?

 
ANG3110:

Então, se eu solicitar _Período no H1 e receber este ENUM_TIMEFRAMES= 16385, como posso obter minutos dele?

Estou a usar esta função na minha biblioteca de migração há 11 meses e até agora funcionou bem

//Fumction PeriodToMinute
int PeriodToMinute(ENUM_TIMEFRAMES Value)
{
//----------------------------------------------------------------------------//
//Work variables
int Result; //Returned importance
//----------------------------------------------------------------------------//
Result = PeriodSeconds(Value)/60;
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

ANG3110:

Embora, é claro, deve dividir PeriodSeconds()/60 por si só. Mas ainda assim, que tipo de identificadores são estes e como trabalhar com eles.

Esta questão pode ser remetida para os princípios básicos do OOP. Diz respeito aos identificadores e enumeradores. Consulte a Referência ou qualquer bom livro sobre programação C++ para mais detalhes.

Isto já foi implementado na MQL4, mas não tão óbvio.

Cada identificador (independentemente de ser escrito em MQL5 ou criado por um utilizador) pode ter a sua própria "representação numérica".

Para simplificar (estou a explicar o melhor que posso)...

Pode pensar que é para compatibilidade com ambientes externos, por exemplo, DLL ou outro (que não tem qualquer ideia sobre MQL e os seus identificadores).

Assim, se precisar de trabalhar com um período dentro do programa MQL5, seria razoável utilizar o identificador PERIOD_H1 da enumeração ENUM_TIMEFRAMES.

Mas se precisar de dizer ao ambiente externo (por exemplo DLL) que estamos a trabalhar com o período H1, é mais fácil fazer com a representação numérica deste identificador, no nosso caso é 16385.

 
ANG3110:

Então, se eu solicitar _Período no H1 e receber este ENUM_TIMEFRAMES= 16385, como posso obter minutos dele?

Embora, claro, dividir PeriodSeconds()/60 não valha nada. Mas quais são estes identificadores e como devo trabalhar com eles?

como esta

int minute = PeriodSeconds(_Period)/60;
 
Interesting:

Há 11 meses que uso esta função na minha biblioteca de migração, e até agora tem estado bem

Já está. Obrigado pela resposta!
 
sergey1294:

como esta

Obrigada também a si!
 

Desenvolvedores.

1. A corda OHLC começa a piscar sob algumas condições. Revelado ao testar EA num único computador central (CPU provavelmente sobrecarregado)...

2. É possível colocar a lista de classes e a sua funcionalidade (o recheio) no navegador, tal como se faz no Delphi (porque não é muito conveniente trabalhar com a lista de procedimentos e funções de um módulo)?

 
Ashes:

Tentativa de salvar o relatório do testador em formato Open XML. Minutos de espera (Pentium 4, 3.0GHz), aplicação não respondendo, processo terminal.exe no gestor de tarefas estava a correr desenfreadamente (cerca de 50% do CPU) consumindo RAM (cerca de 250Mb), Resultado - nada. MT5 só responde, não entram citações (indicador do estado da ligação com círculo cinzento de fiação). Uma segunda tentativa, é a mesma. A janela "Ferramentas" tem 2 entradas no diário "MemoryException 107878464 bytes não disponíveis", o tempo correspondente à tentativa de receber um relatório no OpenXML.
O ficheiro HTML foi gerado quase instantaneamente (cerca de 12 Mb). Demora muito tempo a abrir, mas a culpa não é do MT5...

Repito. Mesmo assim, mas com o build 358. Só que leva ainda mais tempo. Há uma dependência do tamanho do relatório - o relatório curto é processado sem problemas.