Régression bayésienne - Est-ce que quelqu'un a fait un EA en utilisant cet algorithme ? - page 45

 
http://www.quantalgos.ru/?p=1898 peut-être que l'auteur de ce fil de discussion en profitera...
Предсказание чего угодно с использованием Python | QuantAlgos
  • 2016.03.12
  • www.quantalgos.ru
Небольшая статья с ресурса http://www.talaikis.com/ о построении простой стратегии, использующую наивный байесовский классификатор при создании процесса возврата к среднему. Весь код в статье приведен на языке Python. Это достаточно большая область исследований, но расскажем все очень кратко. Мы попытаемся найти взаимоотношение между...
 
Ilnur Khasanov:
http://www.quantalgos.ru/?p=1898 peut-être que l'auteur de ce sujet en profitera...
J'ai fait quelque chose de similaire en revenant dans la moyenne, d'une manière légèrement différente. Ça marche, mais on ne peut pas le libérer sur le réel. Il existe des problèmes dont les solutions ne sont absolument pas claires. Le principal inconvénient de cette méthode est que vous devez constamment prouver que vous avez raison et non le marché. :)
 

Générateur de nombres pseudo-aléatoires. (PRNG)

En utilisant la méthode des coordonnées polaires suggérée ci-dessus, j'ai transformé МТ4 PRNG en PRNG avec une valeur aléatoire normalement distribuée.

Pour vérifier visuellement l'exactitude du code, j'ai projeté les résultats sur le graphique des prix.

Voici ce que montre le PRNG de base après 1000 appels. Les surfaces des rectangles de l'histogramme sont proportionnelles au nombre de nombres aléatoires générés qui se situent dans cette plage de l'échelle verticale.


Maintenant, en convertissant ces milliers d'occurrences à l'aide des formules de la méthode, on obtient les résultats suivants

une cloche parfaitement adéquate.

 
Yuri Evseenkov:

En utilisant la méthode des coordonnées polaires proposée ci-dessus, nous avons converti le PRNG MT4 en un PRNG avec une variable aléatoire normalement distribuée.

Un vieux vélo d'aussi loin que mql4.com.
 

A une tentative d'application de la formule bayésienne. Encore une fois.

Tâche. En utilisant le théorème de Bayes, déterminez quelle valeur d'un tick qui n'est pas encore arrivé est la plus probable.

Étant donné. Série chronologique x,y.

y=ax+b Une ligne allant du dernier tick au futur.

P(a,b|x,y)=P(x,y|a,b)*P(a)*P(b)/P(x,y) ; (1) Formule de Bayes.

P(a,b|x,y)est la probabilité que les coefficients a et b correspondent aux coordonnées x et y d'un futur tic.

Nous devons trouver des valeurs a et b telles que cette probabilité (plus correctement appeléemesure de probabilité) soit maximale.

P(x,y|a,b) - prenons l'histogramme réel de la distribution des ticks par niveaux de prix comme fonction de vraisemblance. La fonction est définie par un tableau à deux dimensions (matrice) : fourchette de prix - probabilité, rapport en pourcentage des ticks tombant dans cette fourchette sur le nombre total de ticks.

P(b) - la distribution normale des incréments est prise comme une probabilité a priori b. On utilise un PRNG dont la valeur est normalement distribuée.

Le coefficient P(a) détermine la pente de la ligne droite et le signe de l'incrément prédit. Pour l'instant, je pense utiliser le code de régression linéaire que j'ai posté plus tôt. C'est-à-dire que la probabilité que le coefficient a y soit trouvé est égale à l'unité. Et dans (1) substituer la probabilité P(a) calculée en tenant compte de la différence de ce a et du calculé pour le y donné.

Peut-être avez-vous des idées sur le comportement du signe des incréments de chaque tick ?


 

Il n'est absolument pas nécessaire de mettre des tics dans la formule. N'importe qui peut générer ces ticks sur FORTS, ce qui est fait tous les jours.

Le problème ne réside pas dans les méthodes mathématiques, plutôt. Mais dans l'adéquation du choix des données auxquelles s'appliquer.

 
Pourquoi prendre des tiques artificielles ? Vous pouvez apprendre à les prédire sans avoir recours aux mathématiques supérieures. Demandez à MQ comment.

Prenez de vrais ticks, 10 000 pièces et regardez la distribution. Au moins, ce serait pratique.
 
Alexey Burnakov:
Pourquoi prendre des tics artificiels ? Vous pouvez apprendre à les prédire sans avoir recours aux mathématiques supérieures. Demandez à MQ comment.

Prenez de vrais ticks, 10 000 pièces et regardez la distribution. Au moins, ce serait pratique.

Ainsi, la fonction de vraisemblance P(x,y|a,b) dans (1) est la distribution réelle des ticks réels (volumes de ticks). Il est extrêmement rare que ce soit normal. Et P(a) et P(b) sont des probabilités correctives, par lois prises comme probabilités a priori.

Que demander à MQ ? Le principe de la modélisation des tics dans le testeur de stratégie ? Oui, il doit y avoir un principe. En le sachant, nous pourrions peut-être créer des "grails" de testeurs. Mais pour l'instant, je ne peux pas le développer en mode test, car je n'ai ni historique de tics, ni pratique pour travailler avec lui. Tout sera en temps réel.

Vos propos m'intéressent :

"Je ne fais pas du tout de régression et de valeurs de prix (ou ses transformations) dans mes expériences, je prédis le signe, mais on pourrait dire que cela fait aussi partie de l'information sur le prix.

Mes erreurs ressemblent à ceci :

0 1

0 0,58 0,42

1 0,43 0,57

Ou à peu près comme à l'origine :

1 - correct, 0 - erreur : 1, 1, 1, 0, 0, 0, 1 , 1, 1, 1, 0, 1

Et la distribution de probabilité qui en résulte doit être aussi différente que possible de 0,5 / 0,5. Si nous obtenons l'inséparabilité mutuelle de ces résultats, nous arriverons à la distribution binomiale, et il existe de très nombreuses formules pour celle-ci et des tests statistiques" Fin de citation.

La distribution binomiale est-elle vraiment la règle dans le cas de la prédiction d'un signe ? Quelle est l'indépendance mutuelle des résultats ? Merci.

 
Yuri Evseenkov:

Ainsi, la fonction de vraisemblance P(x,y|a,b) dans (1) est la distribution réelle des ticks réels (volumes de ticks). C'est très rarement normal. Et P(a) et P(b) sont des probabilités correctives, par lois prises comme probabilités a priori.

Que demander à MQ ? Le principe de la modélisation des tics dans le testeur de stratégie ? Oui, il doit y avoir un principe. En le sachant, nous pourrions peut-être créer des "grails" de testeurs. Mais je ne peux pas le développer en mode test, car je n'ai ni l'historique des tics, ni l'habitude de travailler avec lui. Tout sera en temps réel.

Vos propos m'intéressent :

"Je ne fais pas du tout de régression et de valeurs de prix (ou ses transformations) dans mes expériences, je prédis le signe, mais on pourrait dire que cela fait aussi partie de l'information sur le prix.

Mes erreurs ressemblent à ceci :

0 1

0 0,58 0,42

1 0,43 0,57

Ou à peu près comme à l'origine :

1 - correct, 0 - erreur : 1, 1, 1, 0, 0, 0, 1 , 1, 1, 1, 0, 1

Et la distribution de probabilité qui en résulte doit être aussi différente que possible de 0,5 / 0,5. Si nous obtenons l'indépendance mutuelle de ces résultats, nous arrivons à la distribution binomiale, pour laquelle il existe de très nombreuses formules et tests statistiques" Fin de citation.

La distribution binomiale prévaut-elle vraiment dans le cas de la prédiction d'un signe ? Quelle est l'indépendance mutuelle des résultats ? Merci.

Dans l'ordre. Oui, les tics sont générés par l'algorithme du testeur. Le test sur les tiques réelles n'est pas encore en version. Il y a un article sur ce site qui explique comment ces tics sont générés. Ce ne sont pas du tout de vraies tiques.

A propos de la distribution binomiale. Si vous prédisez une variable binaire, vous obtenez une matrice 2*2 montrant la précision de la reconnaissance. Il s'agit essentiellement d'une distribution conjointe des deux variables binaires, la variable cible et la variable simulée.

Si votre séquence de réalisations de la variable cible i.i.d. est indépendante et identiquement distribuée, cela ouvre la possibilité d'appliquer de nombreux critères. Le résultat d'un tirage à pile ou face est exactement ça. C'est un processus de Bernoulli. Les événements sont donc indépendants les uns des autres. Si cela est valable, votre distribution de probabilité obéit à une distribution binomiale. Par exemple, le nombre de réussites a sa probabilité, qui est approximativement normale.

J'écris en divaguant, il est tard. Ce que j'aime vraiment dans les distributions binomiales, pour une table quadratique, c'est d'appliquer le critère du chi-deux, montrant la signification que votre résultat est différent d'une supposition aléatoire. Vous pouvez faire de même pour les tableaux multinomiaux (carrés non contraignants). De même, pour les variables binaires, il existe de nombreuses méthodes d'apprentissage automatique.
 

Utiliser les ticks pour la prédiction est dangereux à mon avis, et le modèle devrait être configuré pour chaque courtier séparément.

Si nous prenons les ticks du testeur de stratégie, il y aura une sérieuse différence avec les ticks réels, car les ticks dans le testeur sont générés par un modèle à partir des valeurs ohlc des barres minutes(https://www.mql5.com/en/articles/75). C'est pourquoi personne ne teste jamais les scalpeurs, mais les place immédiatement sur un compte réel et les optimise en cours de route.

À propos des ticks réels - ils peuvent varier considérablement d'un courtier à l'autre. Par exemple, dans ce fil de discussion https://www.mql5.com/en/forum/64228/page2#comment_1960403 (https://c.mql5.com/3/78/tbd.png ), vous trouverez en annexe une capture d'écran, qui montre la distribution des incréments de tick sur le même intervalle de temps chez deux courtiers différents. Je ne me souviens pas de la durée de l'intervalle, quelque chose entre un jour et une semaine. En général, ils coïncident, mais l'un d'eux a deux fois plus de ticks sans changement de prix. Si vous comparez plus de dix courtiers, je pense qu'il peut y avoir d'énormes différences, notamment pour les "chandeliers surprises".
Comme alternative, tous les ticks peuvent être retirés sans changement de prix. Ensuite, il y a une nuance : l'événement OnTick() peut être ignoré dans l'EA et un nouveau prix avec le précédent sera envoyé au terminal. C'est-à-dire, pas 1.23456 -> 1.23490 -> 1.23410, mais simplement 1.23456 -> 1.23410. Et au lieu de deux changements, votre modèle n'en aura qu'un.
Il s'avérera que l'intervalle de temps entre deux ticks voisins n'est pas défini et il y aura des lacunes dans les données, je pense que c'est mauvais.
Cela vaut quand même la peine d'essayer, vous devez utiliser MT4 et le programme Tickstory Lite (il existe une version gratuite) pour insérer des ticks réels dans le testeur (ils sont pris du courtier Dukascopy). Seul le terminal MT4 doit être utilisé avec un build inférieur à 950, sinon la version gratuite de tickstory fera des données de test avec un spread nul.

J'ai essayé quelque chose avec des ticks, comme trouver une moyenne et acheter et vendre si le prix actuel s'écarte fortement de la moyenne. S'il y avait un profit, le spread mangeait tout et je suis passé à des périodes plus longues.

The Algorithm of Ticks' Generation within the Strategy Tester of the MetaTrader 5 Terminal
The Algorithm of Ticks' Generation within the Strategy Tester of the MetaTrader 5 Terminal
  • 2010.06.02
  • MetaQuotes Software Corp.
  • www.mql5.com
MetaTrader 5 allows us to simulate automatic trading, within an embedded strategy tester, by using Expert Advisors and the MQL5 language. This type of simulation is called testing of Expert Advisors, and can be implemented using multithreaded optimization, as well as simultaneously on a number of instruments. In order to provide a thorough testing, a generation of ticks based on the available minute history, needs to be performed. This article provides a detailed description of the algorithm, by which the ticks are generated for the historical testing in the MetaTrader 5 client terminal.