une stratégie commerciale basée sur la théorie des vagues d'Elliott - page 28
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Dans l'ensemble, j'ai appris beaucoup de choses utiles. :)
Désolé encore pour les réponses tardives. Lorsqu'on fait une approximation d'une trajectoire, on ne peut jamais savoir à quel point une approximation décrit mieux la trajectoire elle-même, si elles sont dans le même intervalle de confiance. Et par conséquent, toutes les approximations qui se situent dans l'intervalle de confiance peuvent être considérées comme équivalentes. En principe, c'est le cas. Pour faire une prévision à partir d'un ensemble d'approximations possibles (en général, aucune approximation ne satisfait aux critères de sélection, car les limites d'erreur sont fixées), il est préférable de choisir la "meilleure", pour ainsi dire. En étudiant l'algorithme, je me suis rendu compte d'une autre particularité : bien que les approximations soient différentes, les prévisions sont les mêmes dans la grande majorité des cas. Je vous rappelle une fois de plus que la trajectoire elle-même n'est pas nécessaire et que je ne la recherche pas. Concernant les canaux - le caractère unique des canaux est lié au "degré de détail" (appelons-le ainsi) des structures étudiées. Ainsi, s'il existe des tendances, nous pouvons identifier les zones de pullback et estimer les probabilités de fin de tendance, de rupture des zones de retournement, etc. Ou simplement pour identifier les zones d'incertitude, quand il est préférable de ne pas entrer sur le marché. En outre, vous devez toujours garder à l'esprit les limites de la taille de l'échantillon, sinon le résultat aura un taux d'incertitude trop élevé.
Bonne chance et bonnes tendances.
J'ai un malentendu concernant le calcul du coefficient de Hurst.
Dans le cas de la régression linéaire, nous avons 2 variantes de calcul de S et R.
Variante 1.
S - nous pouvons le calculer comme la somme des différences d'écart sur toute la longueur de la ligne de régression linéaire.
Cela signifie que :
S=0.0 ;
for (n=0 ; n<Période ; n++) { S+ = MathPow( Close[n] - (a+b*n) , 2) ; }
S=MathSqrt( S / Période ) ;
Et nous pouvons calculer R comme la différence entre l'écart maximal et minimal le long de la ligne entière de la régression linéaire.
C'est-à-dire :
pMax=0,0 ; pMin=0,0 ;
for (n=0 ; n<Période ; n++)
{
dc=Close[n] - (a+b*n) ;
if ( dc > pMax) pMax = dc ;
if ( dc < pMin) pMin = dc
}
R=MathAbs( pMax - pMin) ;
Option 2.
Nous pouvons calculer S par rapport à la dernière barre en utilisant iStdDev( ) à partir de l'ensemble des indicateurs techniques standard. Mais dans ce cas, nous aurons S calculé par rapport à la dernière barre, ce qui est équivalent au calcul de S par rapport à la valeur au milieu d'une ligne de régression linéaire.
Et R - comme la différence entre les valeurs maximale et minimale dans la projection horizontale :
pMax=High[Highest(NULL,0,MODE_HIGH,Period,i)] ;
pMin=Low[Lowest(NULL,0,MODE_Low,Period,i)] ;
ce qui n'est pas tout à fait correct, il serait plus correct d'utiliser MODE_CLOSE si nous utilisons initialement Close.
D'après ce que j'ai compris, c'est la deuxième variante qui est utilisée dans votre cas ? Ou dois-je me tromper ?
Ma question est donc la suivante : quelle variante est la plus correcte pour un calcul plus précis du coefficient de Hurst ?
Merci d'avance pour votre réponse - Alexander.
Merci, Vladislav, je n'avais pas pris ce point en compte. Mais c'est vraiment vrai. Cela signifie qu'en fait, nous n'obtenons pas plusieurs canaux, mais une gamme entière délimitée par des lignes avec l'angle maximum et minimum.
Je ne suis pas sûr de l'incertitude dont vous parlez. Cependant, l'autre chose est claire pour moi. L'échantillon doit définir un canal de régression, et un canal de régression est un canal de tendance. Si nous regroupons à la fois la tendance et le plat dans un échantillon, un tel échantillon ne nous apporterait presque rien d'utile. Nous sommes donc confrontés au problème de la division du marché en phases et, surtout, à celui de l'identification de la tendance et de l'aplatissement dès les premiers stades, c'est-à-dire sur le marché réel. À mon avis, il s'agit d'une tâche très délicate.
Kartinka mne napomnila standartnyj indikator kanalov, vot i spomnil svoju razrabotku kokda iskal filter dlia ods4iota kokda na4inajetsia bolshyjje volny Elliota - po Standart Deviation formule :
Vot kod mojevo indikatora :
//+------------------------------------------------------------------+ //| StdDevChan.mq4 | //| Copyright © 2005, Arunas Pranckevicius | //| irc://irc.omnitel.net/forex | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Arunas Pranckevicius(T-1000), Lithuania" #property link "irc://irc.omnitel.net/forex" #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Red #property indicator_color2 White #property indicator_color3 Blue //---- input parameters extern int PriceBars=350; extern int Shift; extern bool Comments=false; double Support[]; double StdDev[]; double Resistance[]; //---- buffers //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ void SetObject(string ObjName,int ObjType,datetime ObjTime1,double ObjPrice1,datetime ObjTime2=0,double ObjPrice2=0,color ObjColor=Red,int ObjSize=1,int ObjStyle=STYLE_SOLID,datetime ObjTime3=0,double ObjPrice3=0) { if (ObjectFind(ObjName) != -1) ObjectDelete(ObjName); ObjectCreate(ObjName, ObjType, 0,ObjTime1 , ObjPrice1, ObjTime2, ObjPrice2, ObjTime3, ObjPrice3); ObjectSet(ObjName,OBJPROP_COLOR,ObjColor); ObjectSet(ObjName,OBJPROP_STYLE,ObjStyle); ObjectSet(ObjName,OBJPROP_WIDTH,ObjSize); } int init() { //---- indicators IndicatorBuffers(3); SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,Resistance); SetIndexDrawBegin(0,0); SetIndexEmptyValue(0,0); SetIndexShift(0,0); SetIndexLabel(0,"Standart Deviation Support-"); //---- SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,StdDev); SetIndexDrawBegin(1,0); SetIndexEmptyValue(1,0); SetIndexShift(1,0); SetIndexLabel(1,"Standart Deviation"); //---- SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,Support); SetIndexDrawBegin(2,0); SetIndexEmptyValue(2,0); SetIndexShift(2,0); SetIndexLabel(2,"Standart Deviation Resistance+"); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counter,counter2; double DevAvg=0; double DevPlus1=0; double DevMinus1=0; double DevPlusStart=0; double DevMinusStart=0; double DevAvgStart=0; double DevPlusEnd=0; double DevMinusEnd=0; double DevAvgEnd=0; double DevPlus2=0; double DevMinus2=0; double DevAvg1=0; double DevAvg2=0; double PriceDiff; double deviance,Max,Min; int DrawBegin = Shift; int DrawEnd; int counted_bars=IndicatorCounted(); DrawEnd=Bars-counted_bars; if ( DrawEnd < DrawBegin + PriceBars) DrawEnd = DrawBegin + PriceBars; if (Bars < (PriceBars * 2 + Shift)) return(0); for (counter=DrawBegin-1;counter<=DrawEnd;counter++) { deviance=iMA(Symbol(),Period(),PriceBars,0,MODE_SMA,PRICE_MEDIAN,counter); Max=High [Highest (NULL,0,MODE_HIGH,PriceBars,counter)]; Min=Low [Lowest (NULL,0,MODE_LOW,PriceBars,counter)]; //DevAvg=MathPow((Max + Min + deviance) / 3,2); DevAvg=(Max + Min + deviance) / 3; for (counter2=(PriceBars + counter);counter2 >=counter;counter2--) { PriceDiff = (Max + Min + Open[counter2]) / 3; deviance+= MathPow((PriceDiff - DevAvg),2); } // Calculate average deviation deviance = deviance / (PriceBars + 1); DevAvg = MathSqrt(deviance/Point) * Point; // Calculate deviation channel starting/current average deviation prices DevAvg1 = (DevPlus1 + DevMinus1 + (Max + Min + Open[PriceBars + counter]) / 3) / 3; // Calculate deviation channel +/- starting points DevPlus1 = (Min+Max + Open[PriceBars + counter]) / 3 + DevAvg; DevMinus1 = (Min+Max + Open[PriceBars + counter]) / 3 - DevAvg; // Calculate deviation channel current +/- points DevPlus2 = (Max + DevAvg1) / 2 + DevAvg; DevMinus2 = (Min + DevAvg1) / 2 - DevAvg; DevAvg2 = (DevPlus2 + DevMinus2 + (Max + Min + DevAvg1) / 3) / 3; Resistance[counter]=DevMinus2; Support[counter]=DevPlus2; StdDev[counter]=DevAvg2; //if (counter == DrawEnd && Symbol() == "EURUSD" ) Print ("DevMinus2=",DevMinus2," DevPlus2=",DevPlus2," DevAvg2=",DevAvg2); if (counter == DrawBegin) { DevPlusEnd=Resistance[counter]; DevMinusEnd=Support[counter]; DevAvgEnd=StdDev[counter]; // if (Symbol() == "EURUSD" ) Print ("DrawBegin=",DrawBegin," DrawEnd=",DrawEnd," DevMinus2=",DevMinus2," DevPlus2=",DevPlus2," DevAvg2=",DevAvg2); } if (counter == DrawBegin + PriceBars) { DevPlusStart=Resistance[counter]; DevMinusStart=Support[counter]; DevAvgStart=StdDev[counter]; } } //---- if (Comments) Comment(Symbol()," DevAvg=",DevAvg," DevAvgStart=",DevAvgStart," DevAvgEnd=",DevAvgEnd," DevPlusStart=",DevPlusStart," DevPlusEnd=",DevPlusEnd," DevMinusStart=",DevMinusStart," DevMinusEnd=",DevMinusEnd); //Draw channel SetObject(Symbol()+"_StdDev+",OBJ_TREND,Time[PriceBars + Shift],DevPlusStart,Time[Shift],DevPlusEnd,Blue,1,STYLE_SOLID); ObjectSetText(Symbol()+"_StdDev+","Standart Deviation Resistance", 8, "Arial", Green); SetObject(Symbol()+"_StdDev-",OBJ_TREND,Time[PriceBars + Shift],DevMinusStart,Time[Shift],DevMinusEnd,Red,1,STYLE_SOLID); ObjectSetText(Symbol()+"_StdDev-","Standart Deviation Support", 8, "Arial", Green); SetObject(Symbol()+"_StdDevAvg",OBJ_TREND,Time[PriceBars + Shift],DevAvgStart,Time[Shift],DevAvgEnd,White,1,STYLE_SOLID); ObjectSetText(Symbol()+"_StdDevAvg","Standart Deviation Average", 8, "Arial", Green); return(0); } //+------------------------------------------------------------------+La clé ici est la suivante : si l'on compte initialement par Close
2Yurixx En ce qui concerne l'incertitude - si le nombre de degrés de liberté d'un échantillon est insuffisant, sa convergence ne peut être estimée de manière fiable, et vous pouvez donc appliquer à un échantillon divergent des méthodes d'analyse statistique qui ne sont applicables qu'à des échantillons convergents. Par conséquent, le résultat est incertain.
PS Ici, le terme "échantillon" a été utilisé pour signifier une distribution. C'est-à-dire qu'il serait plus correct de dire "le nombre de degrés de liberté d'un échantillon affecte le degré de fiabilité dans la détermination de la convergence d'une distribution valide pour cet échantillon". Les méthodes valables pour des distributions convergentes peuvent être appliquées à des distributions divergentes (ou à des distributions sans fait de convergence connu).
Bonne chance et bonne chance avec les tendances.
Vot po4emu ja dal kod svojevo indikatora - ras4ioty idut po vsem parametram :
Un indicateur intelligent et un graphique probant :-D
J'ai un malentendu sur le calcul du coefficient de Hurst.
Dans le cas d'une régression linéaire, nous avons 2 variantes de calcul de S et R.
Voilà une question intéressante :)
Supposons que nous ayons un canal de régression linéaire, par exemple ascendant, qui satisfasse le critère de convergence RMS. D'une part, si le canal est ascendant, alors le RMS calculé sur les barres incluses dans celui-ci tendra vers 1,0 (car le décalage est évident). D'autre part, si nous calculons RMS par rapport à la ligne de régression (en supprimant ainsi le décalage), alors RMS tendra vers 0,5, car RMS est proche de la distribution normale. Je pense que tout le monde devrait vérifier par lui-même (c'est beaucoup plus intéressant de cette façon).
//+------------------------------------------------------------------+ //| Herst-II.mq4 | //| solandr (обработал напильником Rosh) | //| http://www.metaquotes.ru/forum/6839/page11 | //+------------------------------------------------------------------+ #property copyright "solandr (обработал напильником Rosh)" #property link "http://www.metaquotes.ru/forum/6839/page11" #property show_inputs extern int start_bar=500; extern int end_bar=0; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { double viborka[]; int size_of_array,i; size_of_array=start_bar-end_bar+1; ArrayResize(viborka, size_of_array); for(i=size_of_array-1;i>=0;i--) viborka[i]=Open[i+end_bar]; double S_A=iMAOnArray(viborka,0,size_of_array,0,MODE_SMA,0); Print("Среднее арифметическое выборки = ",DoubleToStr(S_A,8)); double S=iStdDevOnArray(viborka,0,size_of_array,MODE_SMA,0,0); Print("СКО выборки (размах) = ",DoubleToStr(S,8)); double pMax=viborka[ArrayMaximum(viborka)]; double pMin=viborka[ArrayMinimum(viborka)]; double R=pMax-pMin; Print("pMin = ",pMin," pMax = ",pMax, " R = ",R); double Hrst; if( (R>0)&&(S>0)) Hrst = MathLog(R/S)/MathLog(size_of_array*0.5); Print("Хёрст = ",DoubleToStr(Hrst ,8)); return(0); } //+------------------------------------------------------------------+La recherche d'Extremum est basée sur des données brutes, et non sur des positions et des ruptures.
Le critère est donc quelque peu différent :
2006.05.28 14:53:08 Herst EURUSD,M15 : pMin = 1.2691 pMax = 1.2892 R = 0.0201
28 14:53:08 Herst EURUSD,M15 : RMS d'échantillonnage (spread) = 0.00438062
2006.05.28 14:53:08 Herst EURUSD,M15 : Variance d'échantillonnage = 0.00001919
2006.05.28 14:53:08 Herst EURUSD,M15 : Moyenne d'échantillonnage = 1.27924631
2006.05.28 14:53:06 Herst EURUSD,M15 : chargé correctement
2006.05.28 14:52:59 Herst-II EURUSD,M15 : retiré
2006.05.28 14:52:59 Herst-II EURUSD,M15 : Hurst = 0.26196806
2006.05.28 14:52:59 Herst-II EURUSD,M15 : pMin = 1.2696 pMax = 1.2882 R = 0.0186
2006.05.28 14:52:59 Herst-II EURUSD,M15 : Echantillon RMS (spread) = 0.00437625
2006.05.28 14:52:59 Herst-II EURUSD,M15 : Echantillon Mean = 1.27924631
2006.05.28 14:52:59 Herst-II EURUSD,M15 : chargé correctement
2006.05.28 14:52:54 Compilation 'Herst-II'
Merci pour votre réponse complète.