Erros, bugs, perguntas - página 382

 
aharata:

Carraças no ficheiro: 1159105, e volume da carraça para este período: 1161872

De que poderia tratar-se? Como faço para acertar as carraças do testador?

1 161 872 - 1 159 105 = 2 767 ticks, ou seja 0,2% de 1 161 72 ticks.

Um erro de 0,2% na modelação de carraças é aceitável e normal, porque não faz sentido em algumas situações (configurações de barras) gerar carraças adicionais. O testador gera sempre um pouco menos de carraças (ao nível de 0,2% mostrado) do que na realidade.

Se a barra verde de qualidade dos dados em bruto estiver próxima dos 100%, pode utilizar a sequência de tick gerada do testador sem medo.

Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
  • 2010.05.21
  • MetaQuotes Software Corp.
  • www.mql5.com
MetaTrader 5 позволяет во встроенном тестере стратегий моделировать автоматическую торговлю с помощью экспертов на языке MQL5. Такое моделирование называется тестированием экспертов, и может проводиться с использованием многопоточной оптимизации и одновременно по множеству инструментов. Для проведения тщательного тестирования требуется генерировать тики на основе имеющейся минутной истории. В статье дается подробное описание алгоритма, по которому генерируются тики для исторического тестирования в клиентском терминале MetaTrader 5.
 
Obrigado, pela resposta rápida. A qualidade da história é de 100% (grande indicador no testador, a propósito). Quando negoceio virtualmente, uso indicadores, e agora estou preocupado com a sincronização de carraças e dados indicadores (não me interessa se 2 décimos não me prejudicam)... Obrigado.
 
Existe alguma forma de obter um valor de data para uma barra no futuro? Preciso de construir uma grelha com antecedência após um certo número de barras.
 
vdv2001:
Existe alguma forma de obter o valor da data para uma barra que está no futuro? Preciso de construir uma grelha na frente depois de um certo número de barras.

Se apenas o tempo, então: tomar a barra de base; descobrir o seu tempo; obter o número de segundos num período (TF); multiplicar os segundos pelo número de barras e adicionar à data da barra de base.

 
Interesting:

Se apenas o tempo, então: tomar a barra de base; descobrir o seu tempo; obter o número de segundos num período (TF); multiplicar os segundos pelo número de barras e adicionar à data da barra de base.

Não é certo que a barra permanecerá no mesmo índice (tendo em conta o turno), mas em geral, sim, podemos contar o número certo de barras para a frente e definir o objecto e este estará exactamente onde o queremos. É mais complicado com o passado, é causado por saltar barras. Assim, os objectos que passaram de zero para o primeiro ponto terão provavelmente de ser verificados quanto à sua exactidão.

O principal aqui é descobrir o que é mais importante - regularidade de bares ou regularidade temporal?

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

Se apenas o tempo, então: tomar a barra base; descobrir o seu tempo; obter o número de segundos num período (TF); multiplicar os segundos pelo número de barras e adicionar à data da barra base.

Estou a fazê-lo agora, pensei que poderia ser mais simples, como a função BarToTime()).

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

Não é certo que a barra permanecerá no mesmo índice (tendo em conta o turno), mas em geral, sim, é possível contar o número certo de barras para a frente e definir o objecto e este estará exactamente onde quer que esteja. É mais complicado com o passado, é causado por saltar barras. Os objectos que tenham passado do ponto zero para o primeiro provavelmente devem ser verificados para verificar a sua correcção.

O principal aqui é descobrir se a regularidade da barra ou a regularidade temporal é mais importante.

O importante é a regularidade das barras, caso contrário os cantos parecem tortos :((

Estou a tentar construir uma praça de GaN.

 
vdv2001:

A regularidade das barras é importante, caso contrário os ângulos ficam tortos :((

Tentar construir uma praça de gangue.

Pense nisso como um acréscimo de segundos, mas em cada nova barra basta redesenhar a imagem (pode até escrever uma função da necessidade) e pronto....

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

A regularidade das barras é importante, caso contrário os ângulos ficam tortos :((

Tentar construir uma praça de gangue.

Interessa-lhe que as barras sejam ignoradas?
 
Urain:
E não se importa que as barras vão com intervalos?

Nenhum Gan contou apenas as barras de trabalho!!!

Os períodos em falta eram o que eu precisava para remover.

Obrigado a todos pelas dicas que dei, através da formação de uma matriz temporal.

Talvez alguém vá precisar dele:

//   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];

É verdade que é preciso recalcular quando aparece uma nova barra.

Razão: