Errori, bug, domande - pagina 382

 
aharata:

Ticks nel file: 1159105, e volume di tick per questo periodo: 1161872

Come faccio ad avere i tic del tester?

1 161 872 - 1 159 105 = 2 767 tick, che è lo 0,2% di 1 161 72 tick.

Un errore di 0,2% nella modellazione dei tick è accettabile e normale, perché non ha senso in alcune situazioni (configurazioni di barre) generare tick supplementari. Il tester genera sempre un po' meno tick (al livello di 0,2% mostrato) di quanto non fosse nella realtà.

Se la barra verde della qualità dei dati grezzi è vicina al 100%, puoi usare la sequenza di tick generata dal tester senza paura.

Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
  • 2010.05.21
  • MetaQuotes Software Corp.
  • www.mql5.com
MetaTrader 5 позволяет во встроенном тестере стратегий моделировать автоматическую торговлю с помощью экспертов на языке MQL5. Такое моделирование называется тестированием экспертов, и может проводиться с использованием многопоточной оптимизации и одновременно по множеству инструментов. Для проведения тщательного тестирования требуется генерировать тики на основе имеющейся минутной истории. В статье дается подробное описание алгоритма, по которому генерируются тики для исторического тестирования в клиентском терминале MetaTrader 5.
 
Grazie, per la pronta risposta. La qualità della storia è al 100% (ottimo indicatore nel tester, tra l'altro). Quando faccio trading virtuale, uso gli indicatori, e ora sono preoccupato per la sincronizzazione dei dati dei tick e degli indicatori (non mi importa se 2 decimi non mi danneggiano)... Grazie.
 
C'è un modo per ottenere un valore di data per una barra nel futuro? Ho bisogno di costruire una griglia in anticipo dopo un certo numero di barre.
 
vdv2001:
C'è un modo per ottenere il valore della data per una barra che è nel futuro? Ho bisogno di costruire una griglia davanti dopo un certo numero di barre.

Se solo il tempo, allora: prendi la barra di base; trova il suo tempo; ottieni il numero di secondi in un periodo (TF); moltiplica i secondi per il numero di barre e aggiungi alla data della barra di base.

 
Interesting:

Se solo il tempo, allora: prendi la barra di base; trova il suo tempo; ottieni il numero di secondi in un periodo (TF); moltiplica i secondi per il numero di barre e aggiungi alla data della barra di base.

Non è certo che la barra rimarrà allo stesso indice (tenendo conto dello spostamento), ma in generale, sì, possiamo contare il giusto numero di barre in avanti e impostare l'oggetto e sarà esattamente dove vogliamo che sia. È più complicato con il passato, è influenzato dal salto delle barre. Quindi gli oggetti che sono passati da zero al primo punto avranno probabilmente bisogno di essere controllati per la correttezza.

La cosa principale qui è scoprire cosa è più importante: la regolarità della barra o la regolarità del tempo?

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

Se solo il tempo, allora: prendi la barra di base; trova il suo tempo; ottieni il numero di secondi in un periodo (TF); moltiplica i secondi per il numero di barre e aggiungi alla data della barra di base.

Lo sto facendo ora, ho pensato che potrebbe essere più semplice, come la funzione BarToTime()).

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

Non è certo che la barra rimarrà allo stesso indice (tenendo conto dello spostamento), ma in generale, sì, puoi contare il giusto numero di barre in avanti e impostare l'oggetto e sarà esattamente dove vuoi che sia. È più complicato con il passato, è causato dal salto delle barre. Gli oggetti che sono passati dal punto zero al primo probabilmente dovrebbero essere controllati per la correttezza.

La cosa principale qui è scoprire se è più importante la regolarità delle barre o quella del tempo.

L'importante è la regolarità delle barre, altrimenti gli angoli appaiono storti :((

Sto cercando di costruire un quadrato GaN.

 
vdv2001:

La regolarità delle barre è importante, altrimenti gli angoli diventano storti :((

Cercando di costruire una piazza gan.

Pensate a come aggiungere i secondi, ma su ogni nuova barra basta ridisegnare l'immagine (si può anche scrivere una funzione di necessità) e questo è tutto....

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

La regolarità delle barre è importante, altrimenti gli angoli diventano storti :((

Cercando di costruire una piazza gan.

Le importa che le barre siano saltate?
 
Urain:
E non ti importa che le barre vadano con le lacune?

No Gan ha contato solo le barre funzionanti!!!

I periodi mancanti sono quelli che dovevo rimuovere.

Grazie a tutti per i consigli che ho fatto, attraverso la formazione di una matrice di tempo.

Forse qualcuno ne avrà bisogno:

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

È vero che devi ricalcolare quando appare una nuova barra.