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

 
Alexey Burnakov:

C'est un gros problème. C'est un problème qu'il est presque impossible de résoudre sans nuire à l'apprentissage.
Ce qu'il faut retenir, c'est que plus on regarde dans le passé, plus on est dépendant des observations voisines.

Si vous alimentez la machine en observations non spécifiées, vous perdez la chose la plus importante - l'exigence d'indépendance des observations. Après cela, l'apprentissage sera radicalement insuffisant. Et les statistiques ne fonctionnent pas.

Pour éviter cela, il faut éclaircir les observations de manière à ce que le délai de retour maximal soit inférieur ou égal à l'étape d'éclaircissement des observations. Et cela mènerait à quoi ? Réduction par cent de la taille de l'échantillon d'entraînement.

Il y a un compromis à faire ici. Profondeur du regard par rapport au nombre d'exemples dans l'échantillon.

Je suis d'accord pour dire que c'est un problème, ça fait des semaines que j'y pense...

ce qui signifie que plus vous regardez en arrière, plus vos observations voisines sont dépendantes. ? n'a pas de sens...

Et à propos de l'entaille, s'il vous plaît, je ne comprends pas non plus...

 
mytarmailS:

Je suis d'accord pour dire que c'est un problème, cela fait quelques semaines que j'y pense...

qu'est-ce que cela signifie que plus on regarde dans le passé, plus les observations du voisinage sont dépendantes. ? c'est pas clair...

Et l'entaille, s'il vous plaît, clarifiez... Je ne comprends pas non plus...

Ok. En utilisant votre propre exemple.

Pour deux barres adjacentes dans le temps, vous dessinerez des histogrammes de prix passés identiques à presque 100%. En d'autres termes, les deux exemples d'apprentissage seront très similaires simplement parce qu'ils sont adjacents dans le temps. Cela contredit la propriété fondamentale des processus statistiques où les observations sont indépendantes. La machine n'apprendra pas des modèles chronologiquement invariants, mais des modèles répétitifs (presque identiques). Imaginez que vous interrogez Vasya 200 fois dans le cadre d'un sondage d'opinion et que vous essayez d'étendre les connaissances acquises à 1000 personnes différentes.
 
Alexey Burnakov:
Ok. Sur votre exemple.

Pour deux barres adjacentes dans le temps, vous tracerez des histogrammes de prix passés identiques à presque 100%. En d'autres termes, les deux exemples d'apprentissage seront très similaires simplement parce qu'ils sont adjacents dans le temps. Cela contredit la propriété fondamentale des processus statistiques où les observations sont indépendantes. La machine n'apprendra pas des modèles chronologiquement invariants, mais des modèles répétitifs (presque identiques). Imaginez que vous ayez interrogé Vasya 200 fois dans le cadre d'un sondage d'opinion et que vous essayiez d'étendre les connaissances acquises à 1000 personnes différentes.

Ooh !!! c'est différent, maintenant tout est clair comme de l'eau de roche :)

1) Vous pouvez réduire la taille de la fenêtre plusieurs fois, les sections seront alors moins similaires dans chaque tranche.

2) Vous pouvez augmenter lespauses autant que possible, ce qui supprimerait également un peu delissage.

PRICE <- cumsum(rnorm(300))+1000
layout(1:2)
plot(PRICE,t="l",ylab = "цена" , xlab = "индексы",lwd=2)
Max <- max(PRICE)
Min <- min(PRICE)
range.vector <- seq(Min, Max, length.out=200)
H <- hist(PRICE, breaks = range.vector)
          

 
mytarmailS:

Ooh !!! C'est différent, c'est tout à fait logique maintenant :)

1) Vous pouvez réduire la taille de la fenêtre plusieurs fois, les sections seront alors moins similaires dans chaque tranche.

2) Vous pourriez maximiser lespauses, ce qui supprimerait également un peu delissage.

Je le fais de cette façon. Pseudocode :

Exemple1 = p[0]
étape = 720
aléatoire = [0;50]
Exemple 2 = p [step+random]

où le décalage maximal par rapport au passé = 720

Cela signifie que je découpe de manière à ce que les observations ne se chevauchent pas.

Le même principe est nécessaire pour éviter de dépendre de la cible en regardant devant soi.
 

La première chose à déterminer est : quel type d'horizon de prévision vous avez besoin. Cela déterminera la profondeur de l'histoire que vous devez examiner.

Regardez les graphiques de tendance avec une profondeur d'historique de 3000, 1000, 300 et 150 barres (AUDUSD/H1).

> library("PolyTrend", lib.loc="K:/RRO/R-3.3.1/library")
> trend3000 <- PolyTrend(price[ ,4], alpha = 0.05)
> require(magrittr)
Loading required package: magrittr
> trend1000 <- PolyTrend(price[ ,4] %>% tail(., 1000), alpha = 0.05)
> trend300 <- PolyTrend(price[ ,4] %>% tail(., 300), alpha = 0.05)
> trend150 <- PolyTrend(price[ ,4] %>% tail(., 150), alpha = 0.05)
> plot(trend3000, t="l")
> plot(trend1000, t="l")
> plot(trend300, t="l")
> plot(trend150, t="l")


J'ai inséré les photos dans l'ordre inverse.

Et pour 3000 barres, la direction est "Up".

Trend type: 3 (cubic)
Slope: 0.0000
Direction: 1 (positive)
Significance: 1 (statistically significant)
Polynomial degree: 3 (cubic)

Pour les plus courts

#  trend1000
PolyTrend classification:

Trend type: 2 (quadratic)
Slope: -0.0000
Direction: -1 (negative)
Significance: 1 (statistically significant)
Polynomial degree: 2 (quadratic)
#  trend300
PolyTrend classification:

Trend type: 2 (quadratic)
Slope: 0.0000
Direction: 1 (positive)
Significance: 1 (statistically significant)
Polynomial degree: 2 (quadratic)
#trend150
 PolyTrend classification:

Trend type: 3 (cubic)
Slope: -0.0000
Direction: -1 (negative)
Significance: 1 (statistically significant)
Polynomial degree: 3 (cubic)

Si je suis intéressé par l'horizon de prévision de 24 barres (un jour), je n'ai pas besoin de regarder 3000 barres en arrière. 300 bars seraient suffisants.

Bonne chance






 

Je trouve l'idée de prédire 24 étapes à l'avance discutable.

Dans la classification et la régression, vous devez toujours prédire exactement UNE étape à l'avance, mais par exemple sur H1, H4 et D1. En négociant sur H1, nous obtiendrons des prédictions de 4 et 24 pas en avant pour H1.

Idéalement, le TF devrait être réalisé artificiellement à partir du quotient sous-jacent. Dans mon exemple, nous chargeons H1 et ne prenons pas les autres dans le terminal. En utilisant cette approche, nous n'obtiendrons pas D1 lié à 00:00, mais strictement 24 heures en avance sur l'heure actuelle

 
SanSanych Fomenko:

Je trouve l'idée de prédire 24 étapes à l'avance discutable.

Dans la classification et la régression, nous devons toujours prédire exactement UNE étape à l'avance, mais par exemple sur H1, H4 et D1. En négociant sur H1, nous obtiendrons des prédictions de 4 et 24 pas en avant pour H1.

Idéalement, le TF devrait être réalisé artificiellement à partir du quotient sous-jacent. Dans mon exemple, nous chargeons H1 et ne prenons pas les autres dans le terminal. En utilisant cette approche, nous n'obtiendrons pas D1 lié à 00:00, mais strictement 24 heures en avance sur l'heure actuelle

Cela dépend de ce que nous prévoyons. Par exemple, une prévision de la tendance sur 24 heures est tout à fait satisfaisante (la courbe est très lisse). C'est-à-dire lorsque vous avez besoin de voir la FORME de la courbe sans exigences particulières en matière de précision.

Sinon, votre exemple est tout à fait correct (en principe). Et l'option de fenêtre coulissante (24 heures) est également très pratique. Cela dépend beaucoup des détails.

Bonne chance

 

Question rapide...

J'ai fait une distribution des prix, c'est-à-dire un vecteur régulier, et j'ai obtenu une sorte de profil de marché, mais puis-je établir un véritable profil de volume, c'est-à-dire relier le prix au volume dans la distribution ?

 
mytarmailS:

Question rapide...

J'ai fait une distribution basée sur le prix, c'est-à-dire un vecteur régulier, et j'ai obtenu une sorte de profil de marché, mais est-il possible de construire un véritable profil de volume, c'est-à-dire de relier le prix au volume dans la distribution ?

Il existe des indicateurs qui prennent le prix et le volume et construisent un graphique général. Et la distribution peut être calculée pour cela. Par exemple, l'oscillateur Chaikin ou d'autres indicateurs dans le dossier Indicateur/Volumes. Bien qu'il y ait une corrélation, c'est toujours mauvais, il est préférable de chercher les volumes réels de la bourse.

 
Dr. Trader:

Il existe des indicateurs qui prennent le prix et le volume et construisent un graphique général. Et vous pouvez lire la distribution pour cela. Par exemple, l'oscillateur Chaikin ou d'autres indicateurs dans le dossier Indicateur/Volumes. Bien qu'il y ait une corrélation, c'est toujours mauvais, il est préférable de rechercher les volumes réels du marché boursier.

Je ne négocie pas de devises, je ne suis même pas familier avec Metatrader :)

J'aimerais expérimenter différents profils dans P, mais je ne comprends pas comment construire une distribution de deux vecteurs.

Il n'est pas nécessaire que ce soit les volumes, c'est un début, vous pouvez mettre n'importe quoi dans le profil mais il doit être connecté au prix et cela signifie deux vecteurs