Quelques signes des bons CTs - page 15

 
Nikolai Semko:

Si votre TS n'a pas besoin de toute l'histoire pour fonctionner, j'ai de mauvaises nouvelles pour vous.

Mais l'impact de l'histoire s'estompe de manière exponentielle en fonction de sa profondeur. C'est vrai.

C'est pourquoi j'utilise une représentation logarithmique de l'histoire.

Par exemple, si j'utilise 20 ans d'histoire, l'histoire hebdomadaire la plus proche représente 80 % de la taille de l'histoire entière.


ZS C'est une bonne analogie avec la gravité. Saviez-vous que la trajectoire de notre planète est très influencée par la gravité de la galaxie voisine, la nébuleuse d'Andromède, vers laquelle la lumière voyage pendant 2,5 millions d'années ?

des chiffres, des chiffres, des chiffres :

La Terre tourne autour du Soleil à une vitesse de ~30 km/sec.

Le Soleil tourne autour du centre de notre galaxie à une vitesse de ~ 230 km/sec.

Notre galaxie la Voie lactée et la nébuleuse d'Andromède se rapprochent à une vitesse de 300 km/sec.

ZS La suite... Ce n'est pas tout.

Notre galaxie et ses galaxies voisines se déplacent vers la galaxie M83 à une vitesse de ~ 500 km/sec.

Au total, notre galaxie se déplace dans l'Univers à une vitesse d'environ 1000 km/sec.

Prends-tu des drogues ?

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Quelques signes de bon TS

fxsaber, 2020.03.01 21:56

Dans les commentaires, il a été suggéré de penser au comportement du TS après une inversion du temps - les ticks vont en sens inverse (du futur au passé), comme si le rembobinage était activé.

Vous pouvez également y lire, sur quels symboles l'inversion peut ne pas affecter le résultat du TS, et pour lesquels il s'agit d'un changement sérieux des modèles de marché.

Heureusement, les symboles forex ne devraient pas, en théorie, détruire les modèles de marché avec cette inversion temporelle. J'ai trouvé intéressant de tester cela sur un de mes TS.


Tout d'abord, le code d'inversion des séries de tics dans 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;  
}


Sur la base de cette fonction, le script qui crée le symbole inversé est joint. Nous allons travailler avec elle. Les résultats sont les suivants.


La meilleure passe de l'Optimiseur sur le symbole de la quinte.


La même passe sur le symbole du temps inversé.


Aucune conclusion.


Ce résultat n'a qu'un intérêt théorique. Il est difficile à interpréter.

Il existe un symbole de code, afin que chacun puisse essayer son TS sur le symbole inversé s'il le souhaite.

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

Prends-tu des drogues ?

D'après ce que je vois, c'est l'une des personnes les plus comestibles du forum. Et vous faites attention à ce que vous dites.

 
Uladzimir Izerski:

D'après ce que je peux voir, c'est l'une des personnes les plus énervées du forum. Et vous faites attention à ce que vous dites.

Je lui ai demandé, pas à vous).

 
fxsaber:

Ce résultat ne présente pour l'instant qu'un intérêt théorique. Il est difficile à interpréter.

Le code du symbole est là, donc n'importe qui peut essayer son TS sur un symbole inversé s'il le souhaite.

La symétrie s'est montrée dans toute sa gloire. Il devrait l'être. Et je voulais prouver quelque chose plus tôt. (Je me suis impatienté))

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

Je lui ai demandé, pas à vous.)

Ne posez pas de questions vides et vulgaires. Vous ne faites que vous discréditer de cette manière.

 
Uladzimir Izerski:

Ne posez pas de questions vides et vulgaires. Vous ne faites que vous discréditer de cette façon.

Je ne suis pas foutu.

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

Je n'ai pas d'ennuis.

Discret serait plus correct.

 
Nikolai Semko:

...

Une bonne TS a besoin d'une structure de données, d'un stockage et d'une base d'accès appropriés.

Le système actuel est très lourd et maladroit pour créer un TS correct.

J'ai dû développer le mien et il s'est avéré, à mon avis, beaucoup plus pratique, compact et agile.

Je peux vous expliquer en quelques mots.

...

Après cela, vous pouvez également supprimer le tableau des tics et former une base de données compressée logarithmiquement jusqu'à 1Mb à partir de la base de données de 30-40Mb. Cette base de données offre une image complète de l'historique des symboles depuis le moment présent.

...

Je suis intéressé par la "compression logarithmique" de la base de données. Pouvez-vous m'en dire plus ?

 
Vladimir:

Intéressé par la "compression logarithmique" de la base de données. Pouvez-vous être plus précis ?

Ce n'est pas tout à fait ça.

La phrase correcte est "compression due à l'échelle logarithmique de la représentation des données".

c'est simple.

Voici la structure déballée de la barre dans un tel système :

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

la période de temps de la barre étant différente pour chaque barre du tableau.

Par exemple, il existe un tableau fini de barres telles que 28000.

La période de temps de la barre zéro sera par exemple de 1 seconde.
La période de temps de la 1ère barre sera int(1.00047) = 1 seconde.
La période de temps de la 2ème barre sera int(1.00047^2) = 1 seconde.
La période de temps de la troisième barre sera int(1.00047^3) = 1 seconde.
...
la période de temps de 1500 bars sera int(1.00047^1500) = 2 secondes.
...
la période de temps de 3000 bars sera int(1.00047^3000) = 4 secondes.
...
la période de temps de 10000 bar sera int(1.00047^10000) = 109 secondes = 1 minute et 49 secondes
...
la période de temps de la 12000ème barre sera int(1.00047^12000) = 281 secondes = 4 min 41 sec
...
la période de temps de 15000 bar serait int(1.00047^15000) = 1150 secondes = 19.21 minutes ...
...
la période de temps de la 17000ème barre serait int(1.00047^17000) = 2945 secondes = 49 minutes ...
...
la période de temps de la 20000ème barre sera int(1.00047^20000) = 12061 secondes = 3.35 heures ...
...
la période de temps de la 25000ème barre sera int(1.00047^25000) = 126404 secondes = 1.46 jours
...
la période de temps de la 27999ème barre serait int(1.00047^27999) = 517331 secondes=5.99 jours


Les barres sont stockées sous forme de paquets dont la taille moyenne est d'environ 20 octets par barre.

lestableaux d'index pour un accès rapide occupent environ 5% de la taille totale.

c'est-à-dire que la taille totale d'une telle base de données serait de 28000*20*1,05 = 588 kB, un tel tableau couvrirait 40-50 ans d'histoire.