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

 
Aleksey Nikolayev:


La seule chose - pour lutter contre les écarts et les sorties de cotations, il est préférable de prendre close[i]-open[i], au lieu declose[i]-close[i-1], comme incréments.


Je comprends, mais en quoi cela aide-t-il à combler les lacunes des guillemets ? Ne vaut-il pas mieux les envisager pour le H1 ?

"il est préférable de prendre close[i]-open[i] comme un incrément" - peut-être qu'un changement de pourcentage est mieux ?
 
Aleksey Nikolayev:

Ce n'est pas difficile, je suis sûr que tu peux le faire si tu veux. La seule chose à faire est de prendre close[i]-open[i] au lieu declose[i]-close[i-1] comme incréments pour contrôler les écarts et les sorties de cotations.

close[i-1] et open[i] diffèrent de 1 tick. Quel est l'intérêt de se battre avec le 1er tic ?

 
Evgeniy Chumakov:


Je vois ce qu'il en est des écarts, mais en quoi cela aide-t-il à faire tomber les guillemets ? N'est-il pas préférable de calculer pour H1 ?

Lorsqu'une barre = un incrément, ce n'est pas un problème si certaines barres sont perdues. Si l'incrément est compté par deux barres, il y aura de nombreux pics.

Evgeniy Chumakov:


"Si nous voulons utiliser close[i]-open[i] comme incréments" - peut-être serait-il préférable d'utiliser le pourcentage de changement ?

Oui, c'est mieux. Vous pouvez également prendre des incréments logarithmiques.

 
elibrarius:

close[i-1] et open[i] diffèrent de 1 tick. Quel est l'intérêt de se battre avec 1 tique ?

Il est pratiquement garanti que l'on se débarrasse des lacunes et des sauts dans l'histoire.

 
Aleksey Nikolayev:

Presque garantie de se débarrasser des manques et des lacunes de l'histoire.

Un écart peut se produire à n'importe quel autre tick dans la minute. Les barres manquantes doivent être remplies à partir du dernier prix connu de la dernière barre connue.
 
elibrarius:
Un écart peut se produire à n'importe quel autre tick dans une minute. Les barres manquantes doivent être remplies à partir du dernier prix connu de la dernière barre connue.

Les écarts uniformément répartis entre les barres ne sont pas très effrayants. Les plus désagréables sont ceux qui sont entassés à un moment donné, qui sont généralement des écarts entre les bars.

Les barres "manquées" sont un concept ambigu, il peut s'agir d'un jour férié, d'une courte session, etc. ou simplement de barres abandonnées pour des raisons totalement obscures. J'ai décidé qu'il est plus facile de calculer les incréments pour une barre que de montrer Sherlock Holmes traitant plusieurs barres d'une minute de la période de dix ans.

 
elibrarius:

Je fais ceci :

1) Je crée un tableau d'index de chaînes de caractères avec une longueur égale au nombre de chaînes de caractères, je le remplis avec des valeurs de 0 à N chaînes de caractères

2) Je mélange ce tableau

Où RandomInteger() est une variante quelconque de la fonction

3) puis je prends toutes les valeurs de ces index dans une boucle et par le tableau principal la chaîne requise, il s'avère être pseudo-aléatoire après avoir mélangé les indices

J'ai essayé cet algorithme avec la fonction aléatoire, qui a été donnée plus tôt. Il s'avère qu'il y a un décalage vers la première moitié du tableau numérique, si vous prenez les n premières valeurs du tableau résultant et que vous filtrez ensuite le tableau dans l'ordre. Et les groupes en ligne sont observés, ce qui n'est pas bon non plus, mais c'est mieux que rien.

 
Aleksey Vyazmikin:

J'ai essayé cet algorithme avec la fonction aléatoire qui a été donnée plus tôt. Il s'avère qu'il existe un décalage de la première moitié de la série de chiffres, si l'on prend les n premières valeurs du tableau résultant et que l'on filtre ensuite le tableau dans l'ordre. Et les groupes en ligne sont observés, ce qui n'est pas génial non plus, mais c'est mieux que rien.

Étrange. Je me demande comment l'expliquer.
J'ai une autre version commentée, mais je ne l'ai pas aimée pour des raisons logiques :

        for (int r = 0; r<rows; r++) {//перебор train участка
                //j = r + RandomInteger(rows - r);//номер строки с которой поменять  
                j = RandomInteger(rows);//номер строки с которой поменять - так равномернее. Формулой выше меняются последние с последними. А тут с любыми.
                c = idx[r]; idx[r] = idx[j]; idx[j] = c;
        }

Quel RandomInteger() utilisez-vous ? J'utilise XOR.

 
elibrarius:

close[i-1] et open[i] diffèrent de 1 tick. Quel est l'intérêt de se battre avec un seul tic ?

Vous avez tort) elles ne diffèrent pas de 1 tick, ces valeurs seront égales. Ce n'est qu'en cas d'écart qu'il y aura une différence. Oui, close[i-1] ne fonctionnera pas))) pour une nouvelle barre
 
Alexander Alekseyevich:
Vous avez tort) elles ne diffèrent pas de 1 tick, ces valeurs seront égales.

https://www.mql5.com/ru/docs/runtime/testing

Une nouvelle barre minute s'ouvre non pas lorsqu'une nouvelle minute commence (le nombre de secondes devient 0), mais lorsqu'un tick arrive - un changement de prix d'au moins un point.

Документация по MQL5: Программы MQL5 / Тестирование торговых стратегий
Документация по MQL5: Программы MQL5 / Тестирование торговых стратегий
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха, ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...