Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 535
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Tem de especificar isso imediatamente :) .
A situação é a seguinte: se houver uma barra no gráfico, ela corresponde a uma célula no tampão indicador. Desde que não se escreva nada nesta cela, ela irá armazenar lixo.
Quando se dividem números inteiros (int,long,datetime etc.) o resultado é um número inteiro, ou seja, o restante é descartado. 00:00 de hoje e 23:59:59 de ontem, a diferença será de 1 dia.
Em primeiro lugar, não é - está provado experimentalmente no indicador.
Em segundo lugar, como se obtém um 1 - mostre-me matematicamente, dado que estamos originalmente a calcular em segundos.
Exactamente da mesma forma que a zeragem de tipos simples. Atribuindo-lhes um valor 0. Uma vez atribuído aos campos requeridos um valor 0 - utilizar a operação inversa StructToTime().
Zerado:
MqlDateTime str1;
datetime Open_timePos=iTime(_Symbol,0,pos);
TimeToStruct(Open_timePos,str1);
str1.hour=0;
str1.min=0;
str1.sec=0;
datetime start_time=StructToTime(str1);
Print("день=",TimeToStr(start_time));
Aleksey Lebedev:
При делении целых чисел(int,long,datetime и т.п.) результат целое число, т.е. остаток отбрасывается. 00:00 сегодня и 23:59:59 вчера, разность будет равна 1дню.
-Aleks-:
Antes de mais, não é - comprovado experimentalmente no indicador.
Não discuta com o básico).
-Aleks-:
Segundo, como se obtém 1 - mostrar-me matematicamente, dado que inicialmente temos o cálculo em segundos.
Utilizar a conversão através da estrutura, se for mais fácil de compreender.
Não conteste o básico)
Utilizar a conversão da estrutura se for mais fácil de compreender.
O que se entende é o que tem sido tratado. Ainda não experimentei o seu código para o executar, mas penso que o fez você mesmo, por isso explique-me de forma pouco inteligente como funciona:
86401/86400-86400/86400 igual a 1, se por regras matemáticas 1.000012-1=0.000012 , e int deve arredondar-se para o inteiro, isto é, 0.
O que se entende é o que tem sido tratado. Não tentei executar o seu código, mas penso que o fez você mesmo, por isso explique-me de forma ininteligente como funciona:
86401/86400/86400 igual a 1, se de acordo com as regras da matemática 1.000012-1=0.000012 , e int deve arredondar para inteiro, ou seja, 0.
mas fá-lo)
O início do dia 00:00:00 é dividido por 86400 sem um resto, o anterior é pelo menos 1 segundo a menos. Arredondado - o resto da divisão é descartado, não toda a expressão.
86400/86400=1
86399/86400=0
e depois executá-lo)
O início do dia 00:00:00 é dividido por 86400 sem um resto, sendo o anterior pelo menos 1 segundo a menos. Arredondado - o resto da divisão é descartado, não toda a expressão.
86400/86400=1
86399/86400=0
Rapazes! É possível exibir o indicador no gráfico de forma programática? Ou apenas à mão?