Errores, fallos, preguntas - página 382

 
aharata:

Ticks en el archivo: 1159105, y volumen de ticks para este periodo: 1161872

¿Qué puede estar causando esto? ¿Cómo puedo hacer que las garrapatas del probador sean correctas?

1 161 872 - 1 159 105 = 2 767 ticks, lo que supone un 0,2% de 1 161 72 ticks.

Un error del 0,2% en la modelización de los ticks es aceptable y normal, porque no tiene sentido en algunas situaciones (configuraciones de barras) generar ticks adicionales. El probador siempre genera un poco menos de ticks (en el nivel del 0,2% que se muestra) que en la realidad.

Si la barra verde de calidad de los datos brutos se acerca al 100%, puede utilizar sin miedo la secuencia de ticks generada por el comprobador.

Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
  • 2010.05.21
  • MetaQuotes Software Corp.
  • www.mql5.com
MetaTrader 5 позволяет во встроенном тестере стратегий моделировать автоматическую торговлю с помощью экспертов на языке MQL5. Такое моделирование называется тестированием экспертов, и может проводиться с использованием многопоточной оптимизации и одновременно по множеству инструментов. Для проведения тщательного тестирования требуется генерировать тики на основе имеющейся минутной истории. В статье дается подробное описание алгоритма, по которому генерируются тики для исторического тестирования в клиентском терминале MetaTrader 5.
 
Gracias, por la pronta respuesta. La calidad de la historia es del 100% (gran indicador en el probador, por cierto). Cuando opero virtualmente, uso indicadores, y ahora me preocupa la sincronización de los datos de los ticks y los indicadores (me da igual que 2 décimas no me perjudiquen)... Gracias.
 
¿Hay alguna manera de obtener un valor de fecha para una barra en el futuro? Necesito construir una cuadrícula por adelantado después de un cierto número de barras.
 
vdv2001:
¿Hay alguna manera de obtener el valor de la fecha de una barra que está en el futuro? Necesito construir una cuadrícula delante después de un cierto número de barras.

Si sólo es el tiempo, entonces: tome la barra base; averigüe su tiempo; obtenga el número de segundos en un período (TF); multiplique los segundos por el número de barras y añádalo a la fecha de la barra base.

 
Interesting:

Si sólo se trata de tiempo, entonces: tome la barra base; averigüe su tiempo; obtenga el número de segundos en un período (TF); multiplique los segundos por el número de barras y súmelos a la fecha de la barra base.

No es seguro que la barra se mantenga en el mismo índice (teniendo en cuenta el desplazamiento), pero en general, sí, podemos contar el número correcto de barras hacia adelante y fijar el objeto y estará exactamente donde lo queremos. Es más complicado con el pasado, se produce por saltarse bares. Por lo tanto, es probable que haya que comprobar que los objetos que han pasado de cero al primer punto sean correctos.

Lo principal aquí es averiguar qué es más importante: ¿la regularidad de la barra o la regularidad del tiempo?

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Interesting:

Si sólo es el tiempo, entonces: tome la barra base; averigüe su tiempo; obtenga el número de segundos en un período (TF); multiplique los segundos por el número de barras y súmelos a la fecha de la barra base.

Lo estoy haciendo ahora, pensé que podría ser más simple, como la función BarToTime().

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Urain:

No es seguro que la barra se mantenga en el mismo índice (teniendo en cuenta el desplazamiento), pero en general, sí, puedes contar el número correcto de barras hacia adelante y fijar el objeto y estará exactamente donde quieras que esté. Es más complicado con el pasado, se produce por saltarse bares. Los objetos que han pasado del punto cero al primero probablemente deban ser revisados para comprobar que son correctos.

Lo principal aquí es averiguar si es más importante la regularidad de la barra o la regularidad del tiempo.

Lo importante es la regularidad de las barras, de lo contrario las esquinas aparecen torcidas :((

Estoy tratando de construir un cuadrado de GaN.

 
vdv2001:

La regularidad de las barras es importante, de lo contrario los ángulos quedan torcidos :((

Tratando de construir una plaza de gan.

Piensa que es como añadir segundos, pero en cada nueva barra sólo hay que redibujar la imagen (incluso puedes escribir una función de necesidad) y ya está....

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
vdv2001:

La regularidad de las barras es importante, de lo contrario los ángulos quedan torcidos :((

Tratando de construir una plaza de gan.

¿Te importa que se salten las barras?
 
Urain:
¿Y no te importa que las barras vayan con huecos?

¡¡No Gan sólo contó las barras de trabajo!!

Los puntos que faltan son los que tenía que eliminar.

Gracias a todos por los consejos que hice, a través de la formación de una matriz de tiempo.

Tal vez alguien lo necesite:

//   int bars - количество расчетных баров
//   datetime time1 - время нулевого бара

   datetime iTime[];
   int rates_time;
   rates_time=CopyTime(NULL,m_period,time1,TimeCurrent(),iTime);
   if(rates_time==-1) return(false);
   ArrayResize(iTime,bars+1);
   if(rates_time<=bars)
     {
      int shift=rates_time-1;
      for(int i=1;i<=ArraySize(iTime)-rates_time;i++)
        {
         iTime[shift+i]=iTime[shift]+PeriodSeconds(m_period)*i;
        }
     }
   datetime shifttime=time1-iTime[0]; // смещение времени для корекции массива
   for(int i=0;i<=bars;i++) iTime[i]=iTime[i]+shifttime; // корректируем массив
   time2=iTime[bars];

Es cierto que hay que recalcular cuando aparece una nueva barra.