L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 506

 
Mihail Marchukajtes:

Salut à tous ! !! Les gars, pouvez-vous me dire comment retarder le calcul de l'indicateur? Une nouvelle barre s'est ouverte et l'indicateur doit être calculé après 30 secondes !!!!!.

J'ai besoin d'un délai dans le calcul de l'indicateur, il faut attendre 30 sec. ou me conseiller où c'est écrit ou un exemple, j'ai trébuché partout, je ne trouve pas :-(

A quoi sert un délai ?

 
Vitaly Muzichenko:

Pourquoi ce retard ?


Les données de SME sont chargées avec un retard de 30 secondes. Et parfois l'indicateur est calculé et ensuite les données sont chargées, puis je recompile l'indicateur et il change de direction, parce que les données sont chargées complètement, contrairement aux 5 premières secondes de la vie de la barre. En règle générale, 30 secondes suffisent. Est-il possible de faire cela avec l'indicateur ? Je veux dire le retard.....

 
Mihail Marchukajtes:

Les données de SME sont chargées avec un retard de 30 secondes. Et parfois l'indicateur est calculé et ensuite les données sont chargées, puis je recompile l'indicateur et il change de direction, parce que les données sont chargées complètement, contrairement aux 5 premières secondes de la vie de la barre. En règle générale, 30 secondes suffisent. Est-il possible de faire cela avec l'indicateur ? Je veux dire le retard.....

Soit vous créez un événement ponctuel de type minuterie,
ou faites-le vous-même : une nouvelle heure de barre est mémorisée et chaque tick est vérifié si 30 secondes se sont écoulées.
 
Aleksey Terentev:
Soit créer un événement ponctuel de type minuterie,
ou faites-le vous-même : une nouvelle heure de barre est mémorisée et chaque tic est vérifié si 30 secondes se sont écoulées.

La fonction de minuterie n'est pas très claire. J'ai utilisé les conseils précédents pour réaliser la fonction suivante et maintenant la barre est calculée sans délai. (sans elle, elle ne compte pas du tout jusqu'à ce que vous changiez le 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();
}

Quelle est la meilleure façon de l'organiser, pourriez-vous suggérer ????.

 
Mihail Marchukajtes:

Les données de SME sont chargées avec un retard de 30 secondes. Et parfois l'indicateur est calculé et ensuite les données sont chargées, puis je recompile l'indicateur et il change de direction, parce que les données sont chargées complètement, contrairement aux 5 premières secondes de la vie de la barre. En règle générale, 30 secondes suffisent. Est-il possible de faire cela avec l'indicateur ? Je veux dire le retard.....

La première chose qui est venue :

 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:

La première chose qui est apparue :


Intéressant ! !! Mets ton code dans la dinde, je vais voir ce qu'il en est. Mais je pensais qu'un tel délai devait être décrit dans onTimer, non ?

Merci quand même ! !!
 
Mihail Marchukajtes:

Salut à tous ! !! Les gars, pouvez-vous me dire comment retarder le calcul de l'indicateur? Une nouvelle barre s'est ouverte et l'indicateur doit être calculé après 30 secondes !!!!!.

J'ai besoin d'un indicateur retardé après 30 sec. ou bien conseillez-moi où c'est écrit ou un exemple, j'ai trébuché partout, je ne le trouve pas :-(

Pourquoi 30 secondes ? - Faites-le pendant 60 secondes - c'est-à-dire ne comptez pas par la première mesure, mais par la deuxième. Par exemple, si vous avez une nouvelle barre de 0, vous devez encore attendre la première pendant 30 secondes, mais la deuxième est prête.

En outre, vous devez optimiser et tester en ouvrant les prix.

 
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:

Pourquoi 30 secondes ? - Faites-le pendant 60 secondes d'affilée - c'est-à-dire ne comptez pas à partir de la première mesure mais à partir de la deuxième. C'est-à-dire que la nouvelle 0ème barre est sortie, vous devez encore attendre 30 secondes pour la première, mais la 2ème est prête.

De même, vous effectuez probablement des optimisations et des tests sur les prix d'ouverture.


Je le fais avec des barres ! Mais cela ne fonctionne pas avec la stratégie principale, cela signifie que nous devons déplacer la barre de décision vers l'arrière, ce qui est contraire à la stratégie de base, donc pas une option.....

Raison: