Résonance stochastique - page 26

 
Prival:

La tâche a donc pris de l'ampleur. C'est bien. Je vais maintenant essayer d'exprimer ma pensée. Si j'ai écrit quelque chose de faux (ou incompréhensible - dites-le moi).

grasn

  1. Oui, il y a vraiment un effet de bord. Mais c'est le but, c'est souvent considéré comme mauvais (interférer). Et si c'était là que se manifeste la "résonance stochastique". Supposons cette variante : le sens du mouvement des prix coïncide avec le sens de la courbe (résonance), mais il ne coïncide pas (pas de résonance). Qui l'a vérifié ? (C'est peut-être là que se trouve le Graal ). Les différentes fenêtres Henning, Hemming, Blackman, etc. ne peuvent pas non plus être écartées. (réduisant cet effet).
  2. En ce qui concerne le bruit, nous avons toujours un mélange de signal+bruit. Et nous n'avons aucun mécanisme pour le séparer du signal, mécaniquement (comme dans mon exemple, en fermant le récepteur et en mesurant son intensité). Je propose donc une autre option. Commencez par le concept d'énergie. L'énergie du signal fait bouger le marché. L'énergie du bruit nous empêche de voir (isoler un signal utile).
  3. Comment agir
...

Que voulez-vous dire par "attraper" ? Nous en discutons pendant vingt pages, si vous le lisez attentivement (prenez votre temps). Bon aperçu du traitement du signal, merci, mais je recommande de tout laisser tomber, si vous voulez faire un travail fructueux sur ce sujet, et de le remplacer par un filtre passe-bas numérique normal de la classe FIR ou IIR, à moins que vous ne soyez sûr que le filtre passe-bas trouvera un vrai signal.

En ce qui concerne le bruit, il serait préférable de sélectionner TOUT au lieu de NOUS, c'est plus logique, mais le fait que l'effet de bord est mal éliminé avec cette approche est un fait, et donc sur les bords vous ne sélectionnerez aucun bruit, votre signal lui-même sera du bruit.

PS: En conséquence, vous allez inventer un filtre bien pire que FATL. Ne vous y trompez pas, la réalisation d'un filtre adaptatif est tout un art et les principes de sa conception sont bien différents.

 
AAB:
Candid, cet ouvrage décrit la prédiction du mouvement des prix en termes de niveaux potentiels, cela pourrait vous intéresser. La qualité n'est pas bonne, mais c'est une mono lecture, de plus il n'y a que quatre pages de formules et de graphiques.


Hmm, n'ai-je pas donné un lien vers ce site au début ? :) Comme on dit, laissez le pain couler et il vous reviendra :). Bon travail, imho.

Privé:

- construire un indicateur


Je me souviens que lorsque j'ai essayé la bibliothèque de Klot, j'ai fait une sorte d'indicateur. Il faut seulement l'exécuter dans le visualiseur et attendre jusqu'à ce qu'il y ait assez de barres pour la FFT. Les sauts sont clairs de quoi, le nombre de fréquences joue, si pour augmenter l'échantillonnage ils seront lissés. Bien sûr, la bibliothèque klot doit être en place (il y en a une dans CodeBase).

Dossiers :
offtma_e.mq4  4 kb
 
lna01:

Hm, n'était-ce pas le lien que j'ai donné au début ? :) Comme on dit, mets du pain sur l'eau et ça te reviendra :). Bon travail, imho.


Ouais, je suis foutu, au moins signe où que d'où et de la nourriture de qui swiped, Vot t se rappeler après avoir lu que vous aimez l'article, et qui a donné le lien et oublié, ouais, se rappeler le poisson dans Strugatsky a dit, "Mes années ne sont pas ceux, le bois a vu ...". Mais chaque nuage a un bon côté, les gens pourraient télécharger ce document une fois de plus.
 

Attention à toutes les parties intéressées et aux téléspectateurs.

Voici la solution au problème que je vous ai adressé à tous il y a quelques jours. En principe, il n'y a rien de nouveau. J'ai simplement mis en œuvre le programme, que j'ai décrit dans le dernier message sur ce sujet. Le but de cette mise à disposition est simple : je vois plusieurs applications de cette méthode, elle peut donc être utile à quelqu'un. Je veux aussi "démontrer" l'utilité de l'approche théorique.

Le problème est donc simple. Il existe une série {X} de nombres aléatoires obéissant à une certaine statistique. La statistique est non gaussienne car les valeurs possibles de X appartiennent à l'intervalle [0,∞]. Le point X = 0, en général, peut ne pas appartenir à la population générale. Le nombre de membres de la série {X} est N, ce qui est suffisamment grand pour donner une certaine crédibilité à la distribution basée sur les données disponibles et d'autres paramètres statistiques :

µ=M(X) est la valeur moyenne de la série {X}

D=M(X*X) - la variance de la série {X}

σ =√D - skew de la série {X}

Puisque la série disponible est bornée, tous ses éléments appartiennent à l'intervalle fini [Xmin,Xmax], Xmin>=0.

Nous construisons une moyenne mobile Y avec la période M sur la série disponible {X}. La méthode de calcul de la moyenne peut être arbitraire. Le résultat est une nouvelle série {Y}, dont le nombre de membres est évidemment N-M+1. L'ensemble des séries {Y} appartient également à un intervalle fini. On le désigne par [Ymin, Ymax].

La question est de savoir comment calculer Ymin et Ymax à partir des statistiques et des paramètres de la série {Y} ? J'écrirai à la fin à quoi cela peut servir.

La première étape consiste à construire une distribution analytique de la série {X}. Dans le livre de Bulashev, je n'ai trouvé qu'une seule fonction de distribution, qui a pour aire de définition [0,∞] la distribution lognormale. Je ne vais pas en dire du mal, mais ça ne me convenait pas.

Comme les statistiques de mes séries (et de nombreuses autres) sont telles que la densité de probabilité p(X) à X→0 et X→∞ tend vers 0, j'ai supposé la forme générale suivante pour p(X) :

p(X)=A*(X^a)*exp(-B*(X^b)), où a>0 et b>0

Par conséquent, la fonction de distribution intégrale est définie comme suit : F(X)= ∫ p(ξ) dξ. Ici et ailleurs, les limites d'intégration de 0 à X sont implicites. Malheureusement, l'éditeur local ne laisse pas les indices supérieurs et inférieurs sur le site. Il faut le tordre. Cela a l'air désordonné, mais on ne peut rien y faire. ξ est juste une variable d'intégration.

Pour pouvoir en faire quelque chose, il faut prendre cette intégrale sous forme analytique. En intégrant les parties et en utilisant la valeur limite p(0)=0, on peut voir que

∫ (ξ^a)*exp(-B*(ξ^b)) dξ = -1/(B*b) * (X^(a-b+1))*exp(-B*(X^b)) + (a-b+1)/(B*b) *∫ (ξ^(a-b))*exp(-B*(ξ^b)) dξ

C'est-à-dire que l'indice a de la valeur X diminue chaque fois de b. Si après k étapes cet exposant devient égal à b-1, l'intégrale est réduite à celle du tableau. Par conséquent, nous pouvons formuler la condition d'intégralité de manière explicite :

a - k*b = b - 1, ou a = (k+1)*b - 1, où k>0 est un nombre entier.

Cependant, comme nous devons encore calculer la moyenne et la variance, cette intégrabilité n'est pas suffisante. Voyons ce qu'il faut faire pour calculer explicitement tous les moments centraux de cette distribution. Évidemment µ = ∫X*p(X) dX (en intégrant ici à ∞). Calculons µ en fonction de µ(X), en supposant que dans l'intégrale la limite supérieure est variable.

µ(X) = ∫ ξ ξ*A*(ξ^a)*exp(-B*(ξ^b)) dξ = ∫ A*(ξ^(a+1))*exp(-B*(ξ^b)) dξ

C'est-à-dire qu'il s'agit d'une intégrale du même type avec l'exposant a1=a+1. Pour l'intégrabilité, a1 doit satisfaire la même condition :

a1 = (k1+1)*b - 1, où k1>0 est un nombre entier.

En comparant cela avec la condition pour a, on obtient : b = 1/( k1 - k). En notant n = k1 - k, on obtient finalement une forme admissible du paramètre b : b = 1/n, où n>0 est un nombre entier. Notez également que la relation 0<n<=k doit être satisfaite.

En gardant tout cela à l'esprit, nous pouvons obtenir sous forme explicite non seulement la fonction de distribution intégrale F(X), mais aussi tous les moments centraux de la distribution :

F(X) = 1 - exp(-Z)*∑ (Z^i)/i !

Ml(X) = (k+n*l)!/(k!*(B^(n*l)) *{ 1 - exp(-Z)*∑ (Z^i)/i ! }, où Z = B*(X^(1/n)) .

La constante A apparaissant dans la fonction p(X) est calculée à partir de la condition de normalisation et prise en compte dans ces expressions. Le signe de sommation ∑ dans la ligne supérieure implique la sommation sur l'indice i de 0 à k, et dans la ligne inférieure - sur i de 0 à k+n*l . La valeur Ml est le l-ième moment central (ne pas confondre l et 1).

Notons que toutes les fonctions obtenues tournent à 0 lorsque X=0, et ont les bornes suivantes lorsque X→∞ :

F(X→∞) = 1 (condition de normalisation) et Ml(X→∞) = (k+n*l)!/(k!*(B^(n*l))).

On obtient donc :

µ = M(X) = M1(X) = (k+n)!/(k!*(B^n))

D = M(X*X) = M2(X) = (k+2*n)!/(k!*(B^(2*n))

Maintenant que tout est là pour un bonheur complet, nous pouvons revenir à la série originale. La fonction de distribution finale résultante p(X) contient trois paramètres qui peuvent être utilisés pour garantir que p(X) reproduit au mieux les statistiques de la série {X} - B, k, n.

Vous pourriez, bien sûr, les trouver par MNC, mais c'est ennuyeux. J'ai simplifié les choses pour ma série. D'après les formules ci-dessus, on peut voir que

D/µ^2 = (k+2*n)!*k!/((k+n) !)^2

Ainsi, la valeur de D/µ^2 est indépendante de B. Puisque D et µ sont connus pour la série {X}, nous devons juste choisir une paire (n,k) qui donnerait la valeur la plus proche. Je viens de construire un tableau des valeurs possibles des paires (n,k), et je n'ai trouvé que 4 valeurs convenables : (2,3), (3,8), (4,16) et (5,26). La valeur de B est maintenant déterminée de façon élémentaire à partir des expressions pour D ou µ.

Il est intéressant de noter que les valeurs (n,k) des deux premières paires (je n'ai pas vérifié les autres) ont donné une excellente reproductibilité de la courbe de distribution expérimentale p(X). En tout cas, pour moi, cette qualité est excellente.

Une question intéressante m'est venue en cours de route. Peut-être quelqu'un peut-il m'éclairer sur la raison pour laquelle une fonction de distribution aussi simple et pratique, avec de bonnes propriétés, n'est pas utilisée en statistique ? Et si elle est utilisée, pourquoi ne fait-elle pas l'objet d'un article ? Je n'ai jamais vu personne essayer d'approximer une distribution incrémentale autre que la lognormale.

 

La troisième étape du ballet marlésien implique le calcul de certaines limites X1 et X2.

La construction de la série Y = ∑ X est associée au calcul de la moyenne de M valeurs de X. Il est raisonnable de supposer que Ymin (un minimum théorique) peut être obtenu si M des plus petites valeurs de X tombent dans la moyenne.

Sur l'axe OX, M des plus petites valeurs de la valeur X occupent l'intervalle [0, X1] et M des plus grandes valeurs de la valeur X occupent l'intervalle [X2, ∞]. Il s'agit en fait de la définition des valeurs X1 et X2 .

Puisqu'il y a N éléments dans la série {X} au total, F(X1) = M/N et 1 - F(X2) = M/N .

La fonction F(X) est connue sous forme analytique, donc les équations ci-dessus pour la détermination de X1 et X2 sont des équations analytiques, bien que transcendantales. Toute méthode d'itération numérique peut être appliquée pour les résoudre. Puisque, comme on peut le voir sur le graphique ci-dessous, la fonction F(X) est monotone, on peut rapidement arriver aux valeurs de F(X1) et F(X2) en partant du point d'inflexion en utilisant la méthode de descente du gradient. Lorsque le calcul est effectué avec la précision maximale permise par le MQL, 13-14 étapes et moins d'une seconde de temps ont été suffisantes pour obtenir les valeurs de X1 et X2 . Le temps était pratiquement le même pour les paires (2,3) et (3,8). Pourtant, le MQL est une bonne chose. (Quel matcad .... J)

J'espère qu'il est clair où se trouve p(X) et où se trouve F(X).

Fig.1.

Il serait également intéressant d'examiner la dépendance de X1 et X2 par rapport à M, ou plutôt par rapport au rapport M/N. Mais nous allons mettre cela de côté pour le moment car il ne reste plus beaucoup de temps. Notons seulement qu'à la limite, lorsque M→N, X1→∞ et X2→0 doivent se vérifier. Et nous allons nous occuper de la définition de l'objectif final de toute cette histoire, les valeurs Ymin et Ymax.

En fait, maintenant, c'est très simple. L'intervalle [0, X1] donne la position de M moins X et [X2, ∞] donne la position de M plus X. Notre tâche est de déterminer les deux valeurs moyennes sur ceux-ci. Si l'algorithme de calcul de la moyenne n'est pas trivial, le problème doit être résolu séparément pour chaque cas particulier. Si elle correspond à une MA simple, nous pouvons utiliser les formules :

Ymin = M(X1)/F(X1) et Ymax = (µ - M(X2))/(1 - F(X2)).

Ces formules ont une simple "signification physique", je ne vais donc pas entrer dans une explication. Je vais plutôt présenter le graphique des dépendances Ymin et Ymax sur les valeurs Х1 et Х2. Il montre Ymin en rouge et Ymax en bleu. La ligne horizontale en turquoise indique la valeur de µ.

Comme on pouvait s'y attendre, Ymin à X1→∞ et Ymax à X2→0 tendent tous deux vers µ, l'un par le bas et l'autre par le haut.

Figure 2.

Les deux correspondent à M→N, ce qui est parfaitement clair d'après le graphique de dépendance de X1 et X2 par rapport à la valeur de M. Ne l'ai-je pas déjà donné ? Si, tu l'as fait. C'est le tout premier des graphiques. Et des deux courbes, vous devriez utiliser la courbe F(X). Mais vous ne devez pas déterminer F par X, mais inversement, vous devez déterminer X par F. En faisant cela, vous devez également examiner les équations pour X1 et X2 et vous rappeler que si M→N, alors M/N→1.

Il s'avère donc que lorsque M/N augmente avec M, X1 augmente (et Ymin augmente avec lui) et X2 diminue (Ymax diminue avec lui). Mais c'est toujours Ymin<X1 et Ymax>X2 .

Dans mes calculs j'ai obtenu que 1 - 3 - 5 valeurs de la série {X}, en fonction de la valeur de N, peuvent dépasser la borne supérieure de X2 (la borne inférieure dans ce sens n'a aucun intérêt). En même temps, la valeur de Ymax n'est jamais dépassée. Ce qui est, en général, compréhensible : le cas où toutes les M valeurs de X sont les plus grandes est exceptionnel. Quant aux valeurs de la série {Y}, la probabilité qu'elles dépassent X2 est encore plus faible. Sans parler de Ymax.

Nous avons donc deux estimations de la gamme de valeurs {Y}, une dure et une douce. Nous pouvons utiliser l'un ou l'autre, en fonction des exigences du problème.

PS

Désolé. Je ne peux pas insérer d'images. Pas dans n'importe quel format. Le site doit être défaillant.

 

Et enfin, pourquoi tout cela est nécessaire.

Pendant que j'y étais, j'ai vu plusieurs possibilités d'utiliser tout cela.

1. Normalisation de tous les indicateurs TA connus, en particulier - les oscillateurs. Quelqu'un a-t-il prêté attention au fait que les oscillateurs ne peuvent être utilisés que dans une plage étroite de leurs périodes de lissage ? Lorsque la période diminue, elle commence à osciller d'avant en arrière, et lorsqu'elle augmente, l'amplitude diminue tellement qu'elle ne parvient pas à atteindre les niveaux. Exemple de RSI favori ci-dessous. Deux variations pour les deux périodes 14 et 30. Si vous vous fiez à la seconde, vous risquez de ne pas faire de commerce du tout. Les niveaux 70/30 sont très rarement atteints. Ou bien ces niveaux doivent être optimisés à nouveau pour chaque période.

Fig.3.

Les indicateurs TA ne dépendent pratiquement pas du t/f, d'après ce que je comprends, c'est une particularité de leurs statistiques. Mais ici, si le problème du lissage était résolu, on pourrait peut-être en tirer quelque chose de nouveau. Avec une telle procédure de normalisation stochastique, je pense que c'est tout à fait possible.

2. Mon problème personnel était que la diffusion de la série dépend fortement de N. Comment cela pourrait-il être autrement, Hurst a-t-il souffert pour rien ? :-))

Je peux maintenant tout ramener à une norme universelle, dans laquelle ni le passage à un autre t/f, ni la modification de la période de lissage n'affecteront la plage des valeurs de la série. Cela permet d'utiliser les mêmes niveaux d'entrée/sortie pour toutes les autres valeurs de paramètres. Dans ces conditions, l'optimisation prend tout son sens. En optimisant sur un t/f, je peux ensuite vérifier la rentabilité de la stratégie sur un autre. S'il persiste, cela signifie que la stratégie fonctionne vraiment. Si ce n'est pas le cas, elle est rejetée.

Peut-être que cela sera utile à quelqu'un d'autre.

3. Jusqu'à présent, personne n'a réussi à normaliser directement le graphique des prix. Mais ce serait bien de le faire. Nous ne nous intéressons pas à la valeur absolue mais à ses fluctuations. Peut-être parviendrons-nous à le faire de cette manière. Ceux qui le souhaitent peuvent l'essayer.

4. Dans les réseaux neuronaux, auxquels je ne connais rien, il est nécessaire de normaliser les données. Le dépassement des limites de la zone conditionnée entraîne la perte de la neuromouse.

Peut-être que ce mode de normalisation s'avérera plus utile dans certains cas que ce qui est actuellement utilisé.

C'est tout. La critique est acceptée sous toutes ses formes.

PS

Je n'ai volontairement pas posté de code ou d'échantillons de code. L'algorithme n'est pas décrit en détail, mais très détaillé. Il est facile à comprendre. Si vous le voulez, bien sûr.

J'encourage la communauté à suivre mon exemple.

Les raisons sont les suivantes.

Ce gâteau n'est pas prêt à être consommé. Il ne s'agit pas d'une solution définitive, mais d'une méthode. Toute utilisation de cette méthode dans des tâches privées les laissera toujours comme des tâches privées. Ceux qui, sans prendre la peine de le comprendre et de l'utiliser utilement pour eux-mêmes, se précipiteront pour utiliser les solutions des autres, seront induits en erreur, auront perdu du temps et peut-être de l'argent.

Pour utiliser cette méthode correctement, vous devez

1. Formulez ce qu'est votre série {X}.

2. Formez-la correctement avec une procédure appropriée.

Examinez ses statistiques, calculez les paramètres statistiques.

Explorez la correspondance des statistiques de cette série sur différents t/fs.

5. Trouvez la paire statistique appropriée k,n.

6. Calculer le paramètre B.

7. Construisez une fonction de distribution modèle p(X) et comparez-la à la fonction expérimentale. L'utilisation ultérieure de cette méthode ne sera correcte que si l'ajustement du modèle et de l'expérience est satisfaisant. Et pour cela, il est nécessaire d'avoir un critère d'estimation.

8. Enfin, il est également nécessaire de pouvoir utiliser correctement les Ymin et Ymax obtenus. Ce n'est pas aussi facile qu'il n'y paraît. :-)

Alors, chers collègues programmeurs, ne vous contentez pas d'éviter d'encourager la gratuité, mais donnez aussi aux autres une chance, une opportunité de faire preuve d'initiative et de trouver quelque chose par eux-mêmes.

Un programmeur n'est pas celui qui programme tout ce qui lui tombe sous la main.

Tout comme un homme n'est pas quelqu'un qui boit tout ce qui brûle et mange... tout ce qui bouge.

 
Nous allons nous pencher sur la question, merci, et veuillez télécharger les photos et les coller à l'aide de la fonction "Joindre un fichier".
 

Oui, bien sûr, mais ça s'appelle "par la porte de derrière". J'espère que c'est une mesure temporaire. Dès qu'il fonctionnera correctement, je mettrai les photos à leur place.

PS

Hélas, même cela ne fait pas recette.

Modérateurs, HOOOOOOOOOOOOOOOOOOOOO !!! Réparez le site, s'il vous plaît. Pas de photo à joindre, pas de fichier ...

 

à Yurixx

Etonnant, au lieu de simplement regarder la dispersion de la série de moyennes mobiles résultante, nous sommes tranquillement parvenus à une estimation théorique, et par descente de gradient, basée sur une distribution non prouvée. C'est théoriquement cool !

Bon, je n'y crois pas encore, après un voyage d'affaires dans la glorieuse ville de Kurgan, je vais le relire. :о)))

PS: Je me suis souvenu d'un cas de ma vie quasi-scientifique. Je suis arrivé chez mon patron avec un long rouleau de formules dérivées. Après avoir vérifié, il a dit qu'il n'y avait pas d'erreurs, mais que cela pourrait être plus simple. À cette remarque, j'ai fièrement répondu "nous ne cherchons pas la facilité", ce à quoi il a immédiatement répondu "c'est pourquoi vous ne la trouvez pas".

 
grasn:

à Yurixx

Etonnant, au lieu de simplement regarder la dispersion de la série de moyennes mobiles résultante, nous sommes tranquillement parvenus à une estimation théorique, et par descente de gradient, basée sur une distribution non prouvée. C'est théoriquement cool !

À mon avis, c'est plus simple que cela. Un petit morceau de code qui calcule les coefficients de normalisation en fonction de t/f et des paramètres de calcul de la moyenne est intégré dans l'indicateur ou le conseiller init(). Ça marche. Comment le faire dans le Championnat si le Conseiller Expert n'est pas sur votre ordinateur et que l'historique est chargé sur le volume inconnu ?

Mais c'est une question triviale. J'ai une question plus sérieuse. Devez-vous recalculer ces rapports chaque fois que vous changez un symbole, un t/f, etc., à la main ou en utilisant Matkad :-) ? ? Tu n'en as pas marre ? Ou bien créer une base de données pour tous les symboles, t/f, paramètres de lissage, etc ? ? :-)

Il y a un autre point, le plus important. Mais si vous ne l'avez pas remarqué, peu importe. :-)))

Au fait, la "distribution non prouvée", étant donné qu'en forex on ne connaît aucune distribution de quelque valeur que ce soit (on sait seulement qu'elle est non normale) est ridicule. C'est une bonne blague.