Algunas señales de los CTs correctos - página 15

 
Nikolai Semko:

Si tu TS no necesita todo el historial para funcionar, tengo malas noticias para ti.

Pero el impacto de la historia se desvanece exponencialmente en función de su profundidad. Es cierto.

Por eso uso una representación logarítmica de la historia.

Es decir, si utilizo 20 años de historia, la historia semanal más cercana es un 80% del tamaño de la historia completa.


ZS Es una buena analogía con la gravedad. ¿Sabías que la trayectoria de nuestro planeta está muy influenciada por la gravedad de la galaxia vecina, la nebulosa de Andrómeda, hasta la que la luz viaja 2,5 millones de años?

números, números, números:

La Tierra gira alrededor del Sol a unos 30 km/seg.

El Sol gira alrededor del centro de nuestra galaxia a unos 230 km/seg.

Nuestra galaxia, la Vía Láctea, y la galaxia de la nebulosa de Andrómeda se precipitan una hacia la otra a unos 300 km/seg.

ZS La secuela... Eso no es todo

Nuestra galaxia y sus galaxias vecinas se mueven hacia la galaxia M83 a una velocidad de ~ 500 km/seg.

En total, nuestra galaxia se mueve por el Universo a una velocidad de unos 1000 km/seg.

¿Tomas drogas?

 

Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio

Algunos indicios de una buena ST

fxsaber, 2020.03.01 21:56

En los comentarios se sugirió pensar en el comportamiento de la TS tras la inversión del tiempo: los ticks van en sentido inverso (del futuro al pasado), como si se activara el rebobinado.

Allí también se puede leer, en qué símbolos la inversión puede no afectar el resultado del TS, y para cuáles es un cambio serio de los patrones del mercado.

Afortunadamente, los símbolos de Forex no deberían, en teoría, destruir los patrones de mercado con esta inversión de tiempo. Me pareció interesante probar esto en uno de mis ST.


En primer lugar, el código de inversión de series de ticks en 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;  
}


En base a esta función se adjunta el script que crea el símbolo invertido. Trabajaremos con él. Los resultados son los siguientes.


El mejor pase del optimizador en el símbolo recto.


El mismo pase en el símbolo de tiempo invertido.


No hay conclusiones.


Este resultado es sólo de interés teórico. Es difícil de interpretar.

Hay un símbolo de código, para que cada uno pueda probar su ST en el símbolo invertido si lo desea.

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

¿Tomas drogas?

Por lo que veo, es una de las personas más comestibles del foro. Y usted es cuidadoso al ordenar lo que está diciendo.

 
Uladzimir Izerski:

Por lo que veo, es uno de los que más se atreven en el foro. Y tienes cuidado con lo que dices.

Le pregunté a él, no a ti).

 
fxsaber:

Este resultado sólo tiene hasta ahora un interés teórico. Es difícil de interpretar.

El código del símbolo está ahí, así que cualquiera puede probar su ST en un símbolo invertido si lo desea.

La simetría se ha mostrado en todo su esplendor. Debería serlo. Y quería probar algo antes. (Me impacienté))

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

Le pregunté a él, no a ti).

No hagas preguntas vacías y vulgares. De este modo, sólo se desacredita a sí mismo.

 
Uladzimir Izerski:

No hagas preguntas vacías y vulgares. Sólo te desacreditas a ti mismo de esta manera.

No estoy jodido.

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

No tengo problemas.

Discreto sería más correcto.

 
Nikolai Semko:

...

Un TS adecuado necesita una estructura de datos, un almacenamiento y una base de acceso adecuados.

El actual es muy engorroso y torpe para crear un TS adecuado.

Tuve que desarrollar el mío propio y resultó, en mi opinión, mucho más cómodo, compacto y ágil.

Puedo explicarlo en pocas palabras.

...

Después de eso, puede eliminar también la matriz de garrapatas y formar una base de datos comprimida logarítmicamente de hasta 1Mb a partir de la base de datos de 30-40Mb. En esta base de datos hay una imagen completa de todo el historial de símbolos desde el momento actual.

...

Me interesa la "compresión logarítmica" de la base de datos. ¿Puede decirme algo más al respecto?

 
Vladimir:

Interesado en la "compresión logarítmica" de la base de datos. ¿Puede ser más específico?

Eso no es del todo correcto.

La frase correcta es "compresión debida a la escala logarítmica de representación de los datos".

es sencillo.

Esta es la estructura de la barra sin empaquetar en un sistema de este tipo:

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 el período de tiempo de la barra siendo diferente para cada barra en la matriz.

Por ejemplo, hay un conjunto finito de barras como 28000.

El período de tiempo de la barra cero será, por ejemplo, de 1 segundo.
El periodo de tiempo de la primera barra será int(1.00047) = 1 segundo.
el periodo de tiempo de la segunda barra será int(1.00047^2) = 1 segundo.
el periodo de tiempo de la tercera barra será int(1.00047^3) = 1 segundo.
...
el periodo de tiempo de 1500 bar será int(1.00047^1500) = 2 segundos.
...
el periodo de tiempo de 3000 bar será int(1.00047^3000) = 4 segundos.
...
el periodo de tiempo de 10000 bar será int(1.00047^10000) = 109 segundos = 1 minuto y 49 segundos
...
el periodo de tiempo de la barra 12000 será int(1.00047^12000) = 281 segundos = 4 min 41 seg
...
el período de tiempo de 15000 bar sería int(1.00047^15000) = 1150 segundos = 19,21 minutos ...
...
el periodo de tiempo de la barra 17000 sería int(1.00047^17000) = 2945 segundos = 49 minutos ...
...
el periodo de tiempo de la barra 20000 será int(1.00047^20000) = 12061 segundos = 3.35 horas ...
...
el periodo de tiempo de la barra 25000 será int(1.00047^25000) = 126404 segundos = 1.46 días
...
el período de tiempo de la barra 27999 sería int(1,00047^27999) = 517331 segundos=5,99 días


Las barras se almacenan de forma empaquetada con un tamaño medio de unos 20 bytes por barra

Lasmatrices de índices para el acceso rápido ocupan alrededor del 5% del tamaño total

Es decir, el tamaño total de dicha base de datos sería de 28000*20*1,05 = 588 kB, dicha matriz cubriría 40-50 años de historia.