Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 506

 
Mihail Marchukajtes:

¡¡¡Hola a todos!!! Chicos, ¿podéis decirme cómo retrasar el cálculo del indicador? ¡¡¡¡¡Se ha abierto una nueva barra y el indicador debe calcularse después de 30 segundos!!!!!

Necesito un retardo en el cálculo del indicador, tiene que esperar 30 seg. o aconséjame donde está escrito o un ejemplo, he tropezado con todo, no encuentro :-(

¿Para qué sirve un retraso?

 
Vitaly Muzichenko:

¿Por qué el retraso?


Los datos de la PYME se cargan con un retraso de unos 30 segundos. Y a veces el indicador se calcula y luego se cargan los datos, entonces vuelvo a compilar el indicador y cambia su dirección, porque los datos se cargan completamente, en contraste con los primeros 5 segundos de la vida de la barra. Por regla general, 30 segundos son suficientes. ¿Es posible hacerlo con indicador? Me refiero al retraso.....

 
Mihail Marchukajtes:

Los datos de SME se cargan con un retraso de 30 segundos. Y a veces el indicador se calcula y luego se cargan los datos, entonces vuelvo a compilar el indicador y cambia su dirección, porque los datos se cargan completamente, en contraste con los primeros 5 segundos de la vida de la barra. Por regla general, 30 segundos son suficientes. ¿Es posible hacer esto con el indicador? Me refiero al retraso.....

O bien crea un evento de temporizador único,
o hágalo usted mismo: se memoriza un nuevo tiempo de barra y se comprueba en cada tick si han pasado 30 segundos.
 
Aleksey Terentev:
O bien crear un evento de temporizador único,
o hágalo usted mismo: se memoriza un nuevo tiempo de barra y se comprueba en cada tick si han pasado 30 segundos.

La función del temporizador no está muy clara. Utilicé los consejos anteriores para hacer la siguiente función y ahora la barra se calcula sin retrasos. (sin ella, no cuenta en absoluto hasta que cambies el TF)

void OnTimer()
{
   int bars = Bars(_Symbol, _Period);
   if (bars <= 0) return;
   
   datetime T[];
   int res = CopyTime(_Symbol, _Period, 0, bars, T);
   if (res <= 0) return;
   
   // unused params
   double d[];
   long l[];
   int i[];
   OnCalculate(bars, bars - 1, T, d, d, d, d, l, l, i);
   ChartRedraw();
}

¿Cuál es la mejor manera de organizarlo, podría sugerir ????

 
Mihail Marchukajtes:

Los datos de SME se cargan con un retraso de 30 segundos. Y a veces el indicador se calcula y luego se cargan los datos, entonces vuelvo a compilar el indicador y cambia su dirección, porque los datos se cargan completamente, en contraste con los primeros 5 segundos de la vida de la barra. Por regla general, 30 segundos son suficientes. ¿Es posible hacer esto con el indicador? Me refiero al retraso.....

Lo primero que llegó:

 int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
 // здесь ваши расчёты 
 int limit=rates_total-prev_calculated;
  if(limit>0) { 
  ...
  }

 // задержим на 30 сек
 if(time[0] > TimeCurrent()-30)
   return(rates_total-1);

 // остальной код
   ...
 
Vitaly Muzichenko:

Lo primero que surgió:


¡¡Interesante!! Pon tu código en el pavo, voy a ver qué pasa. Pero yo pensaba que ese retraso debía ser descrito en onTimer, ¿no?

¡¡¡Gracias de todos modos!!!
 
Mihail Marchukajtes:

¡¡¡Hola a todos!!! Chicos, ¿podéis decirme cómo retrasar el cálculo del indicador? ¡¡¡¡¡Se ha abierto una nueva barra y el indicador debe calcularse después de 30 segundos!!!!!

Necesito un indicador de retraso después de 30 seg. o aconsejarme donde está escrito o un ejemplo, me tropezó todo, no puedo encontrarlo :-(

¿Por qué 30 segundos? - Hazlo durante 60 segundos, es decir, no cuentes por el primer compás, sino por el segundo. Es decir, tienes una nueva barra 0, todavía tienes que esperar la primera durante 30 segundos, pero la segunda está lista.

Además, hay que optimizar y probar abriendo precios.

 
Review of Econometric Models Applicable to Hedge Fund Returns Capturing Serial Correlation and Illiquidity by Ludovic Dubrana :: SSRN
  • papers.ssrn.com
Hedge Fund returns are often highly serially correlated mainly due to illiquidity exposures given that investments in such securities tend to be inactively traded and associated market prices are not always readily available. Following that, observed returns of such alternative investments tend to be smoother than “true” unobserved returns...
 
elibrarius:

¿Por qué 30 segundos? - Hazlo durante 60 segundos a la vez, es decir, no cuentes desde el primer compás sino desde el segundo. Es decir, la nueva barra 0 está fuera, todavía tiene que esperar 30 segundos para la primera, pero la segunda está lista.

Además, es probable que haga optimizaciones y pruebas sobre los precios de apertura.


¡Lo hago con barras! Pero no funciona con la estrategia principal, significa que tenemos que desplazar la barra de decisión hacia atrás, lo que es contrario a la estrategia básica, por lo que no es una opción....