Alcuni segni dei TC giusti - pagina 15

 
Nikolai Semko:

Se il vostro TS non ha bisogno di tutta la storia per funzionare, ho cattive notizie per voi.

Ma l'impatto della storia svanisce in modo esponenziale a seconda della sua profondità. Questo è vero.

Ecco perché uso una rappresentazione logaritmica della storia.

Cioè, se uso 20 anni di storia, allora la storia settimanale più vicina è l'80% della dimensione dell'intera storia.


ZS È una buona analogia con la gravità. Sapevi che la traiettoria del nostro pianeta è molto influenzata dalla gravità della Galassia vicina, la Nebulosa di Andromeda, verso la quale la luce percorre 2,5 milioni di anni?

numeri, numeri, numeri:

La Terra gira intorno al Sole a ~30 km/sec.

Il Sole gira intorno al centro della nostra galassia a ~ 230 km/sec.

La nostra galassia della Via Lattea e la galassia della Nebulosa di Andromeda stanno sfrecciando l'una verso l'altra a ~300 km/sec.

ZS Il seguito... Non è tutto

La nostra galassia e le galassie vicine si muovono verso la galassia M83 ad una velocità di ~ 500 km/sec.

In totale la nostra galassia si muove attraverso l'Universo ad una velocità di circa 1000 km/sec.

Prende droghe?

 

Forum sul trading, sistemi di trading automatico e strategie di trading di prova

Alcuni segni di un buon TS

fxsaber, 2020.03.01 21:56

Nei commenti è stato suggerito di pensare al comportamento del TS dopo l'inversione del tempo - i tick vanno al contrario (dal futuro al passato), come se il rewind fosse attivato.

Lì potete anche leggere, su quali simboli l'inversione può non influenzare il risultato del TS, e per quali è un serio cambiamento dei modelli di mercato.

Fortunatamente, i simboli forex non dovrebbero, in teoria, distruggere i modelli di mercato con questa inversione temporale. Ho trovato interessante testare questo su uno dei miei TS.


In primo luogo, il codice di inversione delle serie di tick in MQL5.

int TimeDayOfWeek( const datetime Date )
{
  MqlDateTime mTime;
  
  TimeToStruct(Date, mTime);
  
  return(mTime.day_of_week);
}

#define  HOUR 3600
#define  DAY (24 * HOUR)
#define  WEEK 7

// https://www.mql5.com/ru/forum/170953/page8#comment_6940794
datetime GetTimeDayOfWeek( const datetime TimeSource, const int Shift = 0, const ENUM_DAY_OF_WEEK Day = SUNDAY )
{
  const datetime Res = TimeSource / DAY * DAY;
  
  return(Res - (((WEEK + (TimeDayOfWeek(Res) - Day)) % WEEK) + Shift * WEEK) * DAY);
}

void ReverseTick( MqlTick &Tick, const long &Offset )
{
  Tick.time_msc = Offset - Tick.time_msc;
  Tick.time = (datetime)(Tick.time_msc / 1000);
  
  return;
}

// Инверсирование времени.
void ReverseTicks( MqlTick &Ticks[] )
{
  const int Size = ArraySize(Ticks);
  
  if (Size)
  {
    const long Offset = (long)(GetTimeDayOfWeek(Ticks[0].time, 0, MONDAY) + GetTimeDayOfWeek(Ticks[Size - 1].time, -1, SATURDAY)) * 1000;

    for (int i = 0; i < Size; i++)
      ReverseTick(Ticks[i], Offset);

    ArrayReverse(Ticks);
  }

  return;  
}


Sulla base di questa funzione viene allegato lo script che crea il simbolo invertito. Ci lavoreremo. I risultati sono i seguenti.


Il miglior passaggio dell'ottimizzatore sul simbolo dritto.


Lo stesso passaggio sul simbolo del tempo invertito.


Nessuna conclusione.


Questo risultato è di interesse solo teorico. È difficile da interpretare.

C'è un simbolo di codice, in modo che ognuno possa provare il suo TS sul simbolo invertito, se lo desidera.

 
Алексей Тарабанов:

Prende droghe?

Da quello che posso vedere, è una delle persone più commestibili del forum. E lei è attento a ordinare ciò che dice.

 
Uladzimir Izerski:

Da quello che posso vedere, è una delle persone più taglienti del forum. E stai attento a quello che dici.

L'ho chiesto a lui, non a te).

 
fxsaber:

Questo risultato è finora solo di interesse teorico. È difficile da interpretare.

Il codice del simbolo è lì, quindi chiunque può provare il suo TS su un simbolo invertito, se lo desidera.

La simmetria si è mostrata in tutto il suo splendore. Dovrebbe essere. E volevo dimostrare qualcosa prima. (Sono diventato impaziente))

 
Алексей Тарабанов:

L'ho chiesto a lui, non a te).

Non fare domande vuote e volgari. In questo modo ti stai solo screditando.

 
Uladzimir Izerski:

Non fare domande vuote e volgari. In questo modo ti stai solo screditando.

Non sono fregato.

 
Алексей Тарабанов:

Non sono nei guai.

Discreto sarebbe più corretto.

 
Nikolai Semko:

...

Un TS adeguato ha bisogno di una struttura di dati, di una base di memorizzazione e di accesso adeguata.

Quello attuale è molto macchinoso e goffo per creare un TS adeguato.

Ho dovuto sviluppare il mio e si è rivelato, secondo me, molto più conveniente, compatto e agile.

Posso spiegare in poche parole.

...

Dopo di che puoi cancellare anche l'array di tick e formare un database logaritmicamente compresso fino a 1Mb dal database di 30-40Mb. In questo database c'è un quadro completo di tutta la storia dei simboli dal momento attuale.

...

Sono interessato alla "compressione logaritmica" del database. Può dirmi di più?

 
Vladimir:

Interessato alla "compressione logaritmica" del database. Puoi essere più specifico?

Non è proprio così.

La frase corretta è "compressione dovuta alla scala logaritmica della rappresentazione dei dati".

è semplice.

Ecco la struttura spacchettata della barra in un tale sistema:

struct iRates {
   double    open;
   double    high;
   double    low;
   double    close;
   datetime  open_time;
   datetime  high_time;
   datetime  low_time;
   datetime  close_time;
   int       volume;
};

con il periodo di tempo della barra che è diverso per ogni barra nella matrice.

Per esempio, c'è una serie finita di barre come 28000.

Il periodo di tempo della barra zero sarà per esempio 1 secondo.
il periodo di tempo della 1a barra sarà int(1,00047) = 1 secondo.
il periodo di tempo della 2a barra sarà int(1.00047^2) = 1 secondo.
il periodo di tempo della terza barra sarà int(1.00047^3) = 1 secondo.
...
il periodo di tempo di 1500 bar sarà int(1.00047^1500) = 2 secondi.
...
il periodo di tempo di 3000 bar sarà int(1.00047^3000) = 4 secondi.
...
il periodo di tempo di 10000 bar sarà int(1.00047^10000) = 109 secondi = 1 minuto e 49 secondi
...
il periodo di tempo di 12000 bar sarà int(1.00047^12000) = 281 secondi = 4 min 41 sec
...
il periodo di tempo di 15000 bar sarebbe int(1.00047^15000) = 1150 secondi = 19.21 minuti ...
...
il periodo di tempo della 17000esima barra sarebbe int(1.00047^17000) = 2945 secondi = 49 minuti ...
...
il periodo di tempo della 20000esima barra sarà int(1.00047^20000) = 12061 secondi = 3.35 ore
...
il periodo di tempo della 25000esima barra sarà int(1.00047^25000) = 126404 secondi = 1.46 giorni
...
il periodo di tempo della 27999a barra sarebbe int(1.00047^27999) = 517331 secondi=5.99 giorni


Le barre sono memorizzate in una forma imballata con una dimensione media di circa 20 byte per barra

gli array di indici per l'accesso rapido occupano circa il 5% della dimensione totale

cioè la dimensione totale di tale database sarebbe 28000*20*1.05 = 588 kB, tale array coprirebbe 40-50 anni di storia.