Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Supongamos que tenemos
Sabemos questart_time debe ser2018.04.28 23:00
¿Así que resulta que la hora está mal aquí?
Alexey, mira mi ejemplo. Allí mostré línea por línea cómo se convierte la hora que pasas al tiempo más cercano de la barra actual.
No se ha podido encontrar una declaración del tipo de variable límite. Mi vista es débil.
Puesto 50, procedimiento OnCalculate
Puesto 50, procedimiento OnCalculate
Gracias, pero ¿cuál es el 50? ¿Puede ayudarme con un enlace?
Gracias, pero ¿cuál es el 50? ¿Puede ayudarme con un enlace?
https://www.mql5.com/ru/forum/262864/page5
El enlace es sólo a la página. Dice #50 en el título del post. Tu #74 ))
Tienes escrito primerolimit=index_de_parada+1, es decirlimit==1, y luego donde la división por 2 eslimit=(int)(tiempo_de_parada-hora_de_inicio)/PeriodoSegundos(_Periodo). No se añade uno. El cero se divide por el periodo.
Correcto,limit=start_index-stop_index+1es para i>0, es decir, para el cálculo del historial, y limit=(int)(stop_time-start_time)/PeriodSeconds(_Period) es para el cálculo en la barra actual.
Y la cosa es, de hecho, por qué nuestro tiempo está tan torcido - si tenemos un marco temporal de horas, las fechas deben ser redondas, tanto al principio como al final - ¡¡¡este es el verdadero problema, que la hora de la barra en la fecha de inicio está de alguna manera equivocada!!!
Tal vez haya un problema aquí.
Como la hora de inicio es correcta en este punto
datetime start_time=rates[i].time;
Alexey, no hay "al final". Es sólo una cuantificación. Exactamente a las 18:00 el bar se abrió, mostró el mínimo y el máximo y se cerró con seguridad, en el mismo segundo.
Por ejemplo, la barra se abrió a las 18:00, por lo que la hora inicial(start_time) será las 18:00 y la hora final(stop_time) se supone que es las 19:00 para el marco temporal horario. Por lo tanto, el índice entre ellos será diferente en el marco temporal M1. Y en el código, el índice inicial y el final son iguales, lo que no es cierto.
Correcto,limit=start_index-stop_index+1es para i>0, es decir, para el cálculo del historial, y limit=(int)(stop_time-start_time)/PeriodSeconds(_Period) es para el cálculo en la barra actual.
Y la cosa es, de hecho, por qué nuestro tiempo está tan torcido - si tenemos un marco temporal de horas, las fechas deben ser redondas, tanto al principio como al final - ¡¡¡este es el verdadero problema, que la hora de la barra en la fecha de inicio está de alguna manera equivocada!!!
Tal vez haya un problema aquí.
Ya que la hora de inicio es correcta en este punto
¿Y por qué son redondas si primero se hace CopyRates del timeframe horario (resulta números redondos), luego se pasa al procedimientoCreateFigure time del timeframe actual (tiempo, que se convierte en Time) y Rates del timeframe horario, y luego se busca el índice en el array del timeframe actual?start_index=ArrayBsearch(Time,start_time);