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
Oui... je ne sais pas à quel point je suis distrait. Grâce à votre conseil opportun, les nombres de TB_TotalCount et VACount deviennent corrects et absolument raisonnables. Mais mes objectifs de trouver les VA High/Low ont toujours des problèmes, mon PC s'est encore planté avec cette partie du codage. J'essaie à nouveau de comprendre pourquoi maintenant.
Merci beaucoup Mladen ! Votre conseil me donne un sourire partiel après toute une nuit blanche.
Salut Mladen,
Juste pour vous informer que j'ai finalement résolu le reste de mon problème. J'essaie de l'améliorer encore.
Bien que vous m'ayez donné si peu d'aide que possible dans ce cas, j'ai découvert que c'est parfois la meilleure méthode pour enseigner à ceux qui apprennent debout sur leur pied.
Je te remercie profondément du fond du cœur, Mladen !
Je te souhaite de beaux jours à venir,
fareastol
Salut Mladen,
Je réussis à utiliser le momentum relatif et absolu
Merci beaucoup pour votre aide, maintenant je dois lisser le momentum pour le rsx.
Zilliq
Ps : Si cela peut aider quelqu'un :
//Momentum relatif à la clôture
ind1= close-close[1]
// Momentum absolu
ind2=abs(ind1)
ind3=wilderAverage[rs](ind1)
ind4=wilderAverage[rs](ind2)
ind3=(50*(ind3+ind4))/ind4
return ind3 as "RSI",0, 30, 70, 100Zilliq
Jetez un coup d'œil à ce post : https://www.mql5.com/en/forum/178733/page36
Vous avez un exemple de la façon dont il (le lissage) peut être fait ici.
Merci Mladen, je vais voir ça
Bonne journée et mille fois merci pour votre aide et votre travail.
Zilliq
Eh bien, si j'ai bien compris dans votre indicateur rsi smoother 2, vous changez juste la moyenne wilder par la fonction ismooth.
Et tu "ismooth" le momentum relatif et absolu.
Je fais la même chose avec la moyenne de Hull mais le résultat n'est pas le même que celui que vous voyez sur ma photo.
Avez-vous une idée de la raison, ou ai-je fait une erreur ?
Merci Mladen
Et le code RSI14 et RSIsmoother 45
//Momentum relatif à la clôture
ind1= close-close[1]
// Momentum absolu
ind2=abs(ind1)
// Momentum relatif lissé avec la moyenne de Hull
v =(2*moyenne pondérée[rond(rs/2)](ind1))-moyenne pondérée[rs](ind1)
ind3 = moyenne pondérée [Round(Sqrt(rs))](v)
// Lissage de l'élan absolu avec la moyenne de Hull
v2 =(2*moyenne pondérée[round(rs/2)](ind2))-moyenne pondérée[rs](ind2)
ind4 = moyenne pondérée [Round(Sqrt(rs))](v2)
ind5=(50*(ind3+ind4))/ind4
return ind5 as "RSI smooth"
Je remplace la moyenne wilder par une T3 Tillson sur les deux (momentum relatif et absolu), avec le même problème
C'est simplement le résultat de l'utilisation de différentes méthodes de lissage. Un lissage différent donnera des résultats différents
Si vous voulez des résultats comparables au rsi posté sur le fil rsi, vous devez utiliser le type de lissage utilisé dans cet indicateur.
Merci Mladen pour votre réponse
C'est étrange qu'un lissage du momentum relatif et absolu donne un tel résultat avec quelques exagérations avec la moyenne de Hull et le T3.
Pouvez-vous expliquer avec une formule mathématique (si possible) comment fonctionne le lissage de la fonction ismooth de MT4 pour obtenir un RSI lisse comparable au RSI s'il vous plaît et je le coderai ensuite
Merci beaucoup et bonne journée
Zilliq
Votre code MT4 et mon interprétation :
//momentum relatif
double mom = iMA(NULL,0,1,0,MODE_SMA,Price,i)-iMA(NULL,0,1,0,MODE_SMA,Price,i+1) ;
//moment absolu
double moa = MathAbs(mom) ;
//Momentum relatif lisse avec la fonction "ismooth".
double tmom = iSmooth(mom,Length,SmoothSpeed,i,0) ;
//Mouvement absolu lisse avec la fonction "ismooth".
double tmoa = iSmooth(moa,Length,SmoothSpeed,i,1) ;
si (tmoa != 0)
//Et le rapport 50*(RM+AM)(AM)
rsi = MathMax(MathMin((tmom/tmoa+1.0)*50.0,100.00),0.00) ;
sinon rsi = 50 ;
Zilliq
Vous avez le code source de celui-ci dans cet indicateur. Il suffit de le convertir en prorealtime
Ouch pas vraiment facile pour moi d'interpréter la fonction ismooth (MT4 est tellement compliqué comparé à PRT)
J'essaie de traduire le code MT4 en code mathématique pour le coder ensuite sur l'outillage.
S'il vous plaît, pouvez-vous confirmer mon interprétation des différentes lignes en dessous de chaque ligne avant que je ne les code sur PRT.
Merci beaucoup Mladen
Zilliq
double iSmooth(double price,int length, double speed, int r, int instanceNo=0)
{
if (ArrayRange(workSmooth,0)!=Bars) ArrayResize(workSmooth,Bars) ; instanceNo *= 5 ; r = Bars-r-1 ;
if(r<=2) { workSmooth[r] = prix ; workSmooth[r] = prix ; workSmooth[r] = prix ; return(price) ; }
//
//
//
//
//
_______________________________________________________________________
double bêta = 0,45*(longueur-1,0)/(0,45*(longueur-1,0)+2,0) ;
bêta = 0,45*(longueur-1,0)/(0,45*(longueur-1,0)+2,0)
_______________________________________________________________________
double alpha = MathPow(beta,speed) ;
alpha = beta^speed
_______________________________________________________________________
workSmooth[r] = prix+alpha*(workSmooth[r-1]-prix) ;
Filt0 = prix+alpha*(Filt0[1]-prix) ;
_______________________________________________________________________
workSmooth[r] = (prix - workSmooth[r])*(1-alpha)+alpha*workSmooth[r-1] ;
Filt1 = (prix - Filt0 )*(1-alpha)+alpha*Filt1[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r] ;
Filt2 = Filt0 + Filt1
_______________________________________________________________________
workSmooth[r] = (workSmooth[r] - workSmooth[r-1])*MathPow(1.0-alpha,2) + MathPow(alpha,2)*workSmooth[r-1] ;
Filt3=Filt2-Filt4[1]*(1-alpha)*(1-alpha)+alpha*alpha*Filt3[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r-1] ;
Filt4=Filt3+Filt4[1]
_______________________________________________________________________
return(workSmooth[r]) ;
return Filt4
Ouch pas vraiment facile pour moi d'interpréter la fonction ismooth (MT4 est tellement compliqué comparé à PRT)
J'essaie de traduire le code MT4 en code mathématique pour le coder ensuite sur PRT
S'il vous plaît, pouvez-vous confirmer mon interprétation des différentes lignes en dessous de chaque ligne avant de la coder sur PRT
Merci beaucoup Mladen
Zilliq
double iSmooth(double price,int length, double speed, int r, int instanceNo=0)
{
if (ArrayRange(workSmooth,0)!=Bars) ArrayResize(workSmooth,Bars) ; instanceNo *= 5 ; r = Bars-r-1 ;
if(r<=2) { workSmooth[r] = prix ; workSmooth[r] = prix ; workSmooth[r] = prix ; return(price) ; }
//
//
//
//
//
_______________________________________________________________________
double bêta = 0,45*(longueur-1,0)/(0,45*(longueur-1,0)+2,0) ;
bêta = 0,45*(longueur-1,0)/(0,45*(longueur-1,0)+2,0)
_______________________________________________________________________
double alpha = MathPow(beta,speed) ;
alpha = beta^speed
_______________________________________________________________________
workSmooth[r] = prix+alpha*(workSmooth[r-1]-prix) ;
Filt0 = prix+alpha*(Filt0[1]-prix) ;
_______________________________________________________________________
workSmooth[r] = (prix - workSmooth[r])*(1-alpha)+alpha*workSmooth[r-1] ;
Filt1 = (prix - Filt0 )*(1-alpha)+alpha*Filt1[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r] ;
Filt2 = Filt0 + Filt1
_______________________________________________________________________
workSmooth[r] = (workSmooth[r] - workSmooth[r-1])*MathPow(1.0-alpha,2) + MathPow(alpha,2)*workSmooth[r-1] ;
Filt3=Filt2-Filt4[1]*(1-alpha)*(1-alpha)+alpha*alpha*Filt3[1]
_______________________________________________________________________
workSmooth[r] = workSmooth[r] + workSmooth[r-1] ;
Filt4=Filt3+Filt4[1]
_______________________________________________________________________
return(workSmooth[r]) ;
retourner Filt4D'après ce que je vois, ça devrait être ça, mais n'oubliez pas que je n'ai jamais travaillé avec prorealtime.