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
Suponha que temos
Sabemos queo horário de início deve ser2018.04.28 23:00
Então, acontece que o tempo está errado aqui?
Alexey, dê uma olhada no meu exemplo. Eu mostrei linha por linha como a hora que você passa é convertida para a hora mais próxima da barra atual.
Não foi possível encontrar uma declaração do limite do tipo variável. Minha visão é fraca.
Post 50, procedimento OnCalculate
Post 50, Procedimento OnCalculate
Obrigado, mas qual deles tem 50? Você pode me ajudar com um link?
Obrigado, mas qual deles é o 50? Você pode me ajudar com um link?
https://www.mql5.com/ru/forum/262864/page5
O link é apenas para a página. Diz o número 50 no título do cargo. Seu #74 ))
Você temlimit=start_index-stop_index+1 escrito primeiro, ou seja,limit===1, e depois onde a divisão por 2 élimit=(int)(stop_time-start_time)/PeriodSeconds(_Period). Um não é adicionado. Zero é dividido pelo período.
Certo,limit=start_index-stop_index+1é para i>0, ou seja, para cálculo do histórico, e limit=(int)(stop_time-start_time)/PeriodSeconds(_Period) é para cálculo na barra atual.
E a questão é, de fato, por que nosso tempo é tão torto - se temos um prazo de uma hora, as datas devem ser redondas, tanto no início quanto no final - este é o verdadeiro problema, que a hora do bar na data de início é de alguma forma errada!!!
Talvez haja aqui um problema.
Como a hora_de_início vem correta neste momento
datetime start_time=rates[i].time;
Alexey, não há "no final". É apenas uma quantização. Exatamente às 18h00, o bar abriu, mostrou mínimo e máximo e fechou com segurança, no mesmo segundo.
Por exemplo, o bar abriu às 18:00, portanto o horário inicial(start_time) será 18:00 e o horário final(stop_time) deverá ser 19:00 para o horário horário. Assim, o índice entre eles será diferente no cronograma M1. E no código, o índice inicial e o índice final são os mesmos, o que não é verdade.
Certo,limit=start_index-stop_index+1é para i>0, ou seja, para cálculo do histórico, e limit=(int)(stop_time-start_time)/PeriodSeconds(_Period) é para cálculo na barra atual.
E a questão é, de fato, por que nosso tempo é tão torto - se temos um prazo de uma hora, as datas devem ser redondas, tanto no início quanto no final - este é o verdadeiro problema, que a hora do bar na data de início é de alguma forma errada!!!
Talvez haja aqui um problema.
Desde que a hora_de_início vem correta neste ponto
E por que eles são redondos se você primeiro faz CopyRates a partir de um período de tempo horário (ele se transforma em números redondos), então passe para o procedimentoCreateFigure time from the current timeframe (tempo, que se transforma em Tempo) e Rates from hourly timeframe, e então procure o índice na matriz de período de tempo atual?start_index=ArrayBsearch(Time,start_time);