Overblog
Suivre ce blog Administration + Créer mon blog
15 février 2012 3 15 /02 /février /2012 15:25

Pour finir avec le Fisher Transform ,voici la version normale.

 

 

CODE PRT

////////////////////////////////////////////////////////////

 

///////FISHER TRANSFORM NORNAL V2
//////By sohocool 15/02/2011

////variable P = période canal donchian -défaut = 11,22,33,44,55 etc pour journalier.
/////////////////P1 = période du filtre exponentielle de stochastique --défaut entre 3 et 5.
////////////////P2= période du filtre exponentielle de fisher --défaut entre 3 et 5.

/////////////A1 = choix du prix : close , median price, typical price -----défaut =medianprice

a1= customclose

b1= highest[p](a1)
b2=lowest[p](a1)

if barindex > p+2 then
 
 
 vb=(a1-b2)/(b1-b2)
 
 
 v1 =exponentialaverage[p1](2*(vb - 0.5))
 
 
 f1 =exponentialaverage[p2]( 0.50*log((1+v1)/(1-v1) ))
 
endif


return f1 as "Fisher" , f1[1] as "trigger",0 as"Zero"

 ///////////////////////////////////////fin ////end

 

FTSE-MIB-FISHERV2.png

Partager cet article
Repost0
Published by SOHOCOOL - dans John Ehlers
12 février 2012 7 12 /02 /février /2012 18:39

Bonsoir à tous,

 

Je vous propose la version V2 du Fisher Transform.

 

Maintenant on peut modifier :

 

-La période de la stochastique .

 

-La période du filtre moyenne exponetielle de la stochastique.

 

-La période du filtre moyenne exponentielle de la fonction fisher.

 

-Les niveaux bas et haut sont réglables "automatiquement."

 

Autre lien pour le Fisher Transform :

 

http://www.mesasoftware.com/Seminars/TradeStation%20World%2004.pdf

 

 

Bons trades à tous .

 

 

Code Prorealtime :

 

///////FISHER TRANSFORM HISTO V2
//////By sohocool 18/11/2011
////variable P = période canal donchian -défaut = 11,22,33,44,55 etc pour journalier.
/////////////////P1 = période du filtre exponentielle de stochastique --défaut entre 3 et 5.
////////////////P2= période du filtre exponentielle de fisher --défaut entre 3 et 5.
////////////////Nb = niveau bas -- défaut 20,25,30,33 etc......
/////////////A1 = choix du prix : close , median price, typical price -----défaut =medianprice

a1= customclose

b1= highest[p](a1)
b2=lowest[p](a1)

if barindex > p+2 then
 
 
 
 vb=(a1-b2)/(b1-b2)
 
 
 
 
 v1 =exponentialaverage[p1](2*(vb - 0.5))
 
 
 f1 =exponentialaverage[p2]( 0.50*log((1+v1)/(1-v1) ))
 
endif

 


if f1 >=f1[1] then
 hh= 100
else
 hh=0
endif

if f1 < f1[1] then
 hh1= 100
else
 hh1=0
endif

sto = exponentialaverage[p1](100*vb)

return hh coloured(0,255,0) as "Histo up",hh1 coloured(255,0,0) as "Histo down",sto coloured(0,0,255) as "Stochastique",nb as "Niveau bas",100-nb as "Niveau haut",50 as "50 %"

 

///////////////////////////////////////////FIN ////////////END

 

ARCELORFISV201.png

 

 

 

 

 

 

 

Partager cet article
Repost0
Published by SOHOCOOL - dans John Ehlers
3 janvier 2012 2 03 /01 /janvier /2012 14:34

Bonjour à tous ,

Bonne Année 2012,

 

J'ai progammé l'histogramme ,avec la valeur 100,pour pouvoir mettre

 

un pourcentage indicateur à l'interieur.

 

Vu que la base de calcul du Ehlers Fisher Transform est une stochastique(vb),

 

pour la version V1 ,on va mettre la stochastique filtrée par une moyenne

 

exponentielle de période = 5 (soit exponentialaverage[5](100*vb).

 

CODE PROREALTIME :

 

///////////FISHER TRASFORM HITOGRAM_V1

//////By sohocool 18/11/2011

////variable P = periode canal donchian -défaut = 10


a1= customclose


b1= highest[p](a1)

b2=lowest[p](a1)


if barindex > p+2 then

vb=(a1-b2)/(b1-b2)

v1 =0.66*((vb )- 0.5)   + 0.67*v1[1]

f1 = 0.5*log((1+v1)/(1-v1) )+0.5*f1[1]

endif





if f1 >=f1[1] then

hh= 100

else

hh=0

endif


if f1 < f1[1] then

hh1= 100

else

hh1=0

endif


sto = exponentialaverage[5](100*vb)


return hh coloured(0,255,0) as "histo up",hh1 coloured(255,0,0) as "histo down",sto coloured(0,0,255) as "Stochastique",20 as "20",80 as "80"


/////////////////////fin ///end //code

 

 

USD-histo_v1.png

 CAC-40-histov1.png


Partager cet article
Repost0
Published by SOHOCOOL - dans John Ehlers
28 décembre 2011 3 28 /12 /décembre /2011 20:07

Bonsoir,

 

Je vous propose une version Fisher transform Histogramme ,pour PRT.

 

 

La couleur de l'Histogramme est déterminé par le croissement de la

 

 

ligne Fisher et de la ligne Trigger (Fisher[1]).

 

 

La lecture est facile ,quand l'histogramme est :

 

Vert = achat

 

Rouge = vente.

 

 

L'avantage quand nous avons programmé l'histogramme ,90% de la

 

programmation du Back-test est faite.

 

 

Bons trades.

 

 

Lien PDF Fisher Transform :

 

http://www.mesasoftware.com/Papers/USING%20THE%20FISHER%20TRANSFORM.pdf

 

Code Prorealtime :

 

 

///////////FISHER TRASFORM HITOGRAM
//////By sohocool 18/11/2011
////variable P = periode canal donchian -défaut = 10

 

////a1= prix --- défaut = medianprice (H+L)/2

 

a1= customclose

b1= highest[p](a1)
b2=lowest[p](a1)

if barindex > p+2 then
 
 
 
 vb=(a1-b2)/(b1-b2)
 
 
 
 
 v1 =0.66*((vb )- 0.5)   + 0.67*v1[1]
 
 
 f1 = 0.5*log((1+v1)/(1-v1) )+0.5*f1[1]
 
endif

 


if f1 >=f1[1] then
 hh= 100
else
 hh=0
endif

if f1 < f1[1] then
 hh1= 100
else
 hh1=0
endif


return hh coloured(0,255,0),hh1 coloured(255,0,0)

 

////////////////////////////fin ///end ///code

 

CAC-40-fisher-histo-copie-1.png

 

USD-fisherhisto-copie-1.png

 

 

 

 

Partager cet article
Repost0
Published by SOHOCOOL - dans John Ehlers
22 décembre 2011 4 22 /12 /décembre /2011 19:21

Bonjour à tous,

 

Voici ,la traduction en language PRT du code de Elder's fait par José Silva ,c'est une

 

 interpretation.

 

Le lien : http://trader-online.tk/MSZ/e-w-Elders_AutoEnvelope.html

 

 

Code Prorealtime.

 

 

//////////////////////SOHOCOOL
///////////////////////ELDER 'S AUTO ENVELOPES PROREALTIME
///////////////////////28  AOUT 2011
{Elder's AutoEnvelope by Jose Silva


{Dr A. Elder's AutoEnvelope interpretation v1.0
Differs from the original in that it avoids
the use of the hindsight-based LastValue()
MetaStock function.
www.elder.com/MetaStock/AutoEnvelope.htm

http://www.metastocktools.com }

{ User inputs }
{pds:=Input("EMA periods",1,252,21);
pdsBak:=Input("lookback periods",1,252,42);
x:=Input("use: Open=1, High=2, Low=3, Close=4, WClose=5",1,5,4);
plot:=Input("[1]AutoEnvelope, [2]Long signals, [3]All signals",1,3,1);
delay:=Input("Entry/Exit signals delay",0,5,0);

{ Price field }
{x:=If(x=1,O,If(x=2,H,If(x=3,L,If(x=5,WC(),C))));
    
    { Envelope bands
    Avg:=Mov(x,pds,E);
    hiAvg:=HHV(H,pdsBak);
    loAvg:=LLV(L,pdsBak);
    shift:=
    Mov(If(hiAvg>Avg,hiAvg-Avg,Avg-loAvg),pds,E);
     UpperBand:=Avg+shift;
     LowerBand:=Avg-shift;}
     
     
     ///variable pds = périodes de la moyenne exponentielle (défaut =22)
     ///variable pdsback = période du canal donchian (défaut = 44) (le double).
     
     
     //price field
     
     x = customclose
     { Envelope bands }
     Avg= ExponentialAverage[pds](x)
     hiAvg=Highest[pdsback](high)
     loAvg=Lowest[pdsback](low)
     ////////////////////////////////////////////////////////////////////////////////////
     if hiavg >=avg then
      
      shift= exponentialaverage[pds](hiavg -avg)
     else
      
      shift=exponentialaverage[pds](avg-loavg)
      
     endif
     
     
     ////////////////////////////////////////////////////////////////////////////
     UpperBand=Avg+shift
     LowerBand=Avg-shift
     
     
     /////////////////////////////////////////////////////////////
     
     
     return avg as "exponentielle",upperband as "bande haute",lowerband as" bande basse"

 

////////////////////////////////////////////fin///end ///code

 

CAC-40-elderenveloppe-copie-1.png
     
     
     

 

Partager cet article
Repost0
Published by SOHOCOOL - dans ELDER
27 novembre 2011 7 27 /11 /novembre /2011 22:43

USD-Spot2911.png

Partager cet article
Repost0
Published by SOHOCOOL - dans Donchian
27 novembre 2011 7 27 /11 /novembre /2011 22:39

CAC-40-2911.png

Partager cet article
Repost0
Published by SOHOCOOL - dans Donchian
20 novembre 2011 7 20 /11 /novembre /2011 16:56

Bonjour,

 

Voici une version modifiée et simplifiée ,par rapport à l'originale.

 

En effet la moyenne "rainbow" proposée est très proche de la moyenne pondérée

 

 de périodes 4  ou 5 . 

 

CODE PRT :

 

 //SVE RSI INVERSE FISHER_V1
// VERSION modifiée et simplifiée

//by SOHOCOOL le 18 /11/2011


//Variables :
//weightedperiod = période de moyenne pondérée / par défaut 4 ou 5
//rsiperiod = période du rsi / par défaut = 4
//demaperiod = période de moyenne zero lag (dema) /  par défaut =4
//levelup = niveau haut / par défaut =88
//leveldown = niveau bas / par défaut =12

//calculate rainbow

wma0= weightedaverage[weightedperiod](CUSTOMclose)

//---- calculate rsi from rainbow smoothed price curve

rainrsi = 0.1 * (RSI[rsiperiod](WMA0) - 50)

//---- smooth the rsi with Vervoort zero lag MA

srsi= dema[demaperiod](rainrsi)
//---- do the fish
fish = 50*((Exp(2 * srsi) - 1) / (EXP(2 * srsi) + 1) + 1)

//----

return fish as "SVE Rsi I Fish V1",leveldown as "niveau bas",levelup as "niveau haut"

///////////////FIN DE CODE ///END

 

Gold-SpotSVE.png

 

 S-P-500-INDEXSVE.png

Partager cet article
Repost0
Published by SOHOCOOL - dans John Ehlers
19 novembre 2011 6 19 /11 /novembre /2011 22:12

Bonjour,

 

Je vous propose le code du Rsi Inverse Fisher de Sylvain Vervoort,vu sur Metatrader.

 

Le principe d'utilisation est simple :

 

Quand le Rsi inverse croise à la baisse le niveau haut ,on vend.

 

Quand le Rsi inverse croise à la hausse le niveau bas ,on achète .

 

Bon trades.

 

 

CODE PROREALTIME:

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

//SVE RSI INVERSE FISHER
//by SOHOCOOL le 18 /11/2011


//Variables :
//rsiperiod = période du rsi / par défaut = 4
//emaperiod = période de moyenne zero lag (dema) /  par défaut =4
//levelup = niveau haut / par défaut =88
//leveldown = niveau bas / par défaut =12

//calculate rainbow

wma0= weightedaverage[2](close)

wma1 = weightedaverage[2](wma0)
wma2 = weightedaverage[2](wma1)
wma3= weightedaverage[2](wma2)
wma4 = weightedaverage[2](wma3)
wma5 = weightedaverage[2](wma4)
wma6 = weightedaverage[2](wma5)
wma7 = weightedaverage[2](wma6)
wma8 = weightedaverage[2](wma7)
wma9 = weightedaverage[2](wma8)


rainbow = (5 * wma0 + 4 * wma1 + 3 * wma2 + 2 * wma3 + wma4 + wma5 + wma6+ wma7 + wma8+ wma9) / 20

//---- calculate rsi from rainbow smoothed price curve

rainrsi = 0.1 * (RSI[rsiperiod](rainbow) - 50)

//---- smooth the rsi with Vervoort zero lag MA
ema0 = exponentialaverage[emaperiod](rainrsi)
ema1 = exponentialaverage[emaperiod](ema0)
srsi= 2*ema0- ema1
//---- do the fish
fish = 50*((Exp(2 * srsi) - 1) / (EXP(2 * srsi) + 1) + 1)


//----

return fish as "SVE Rsi I Fisher",leveldown as "niveau bas",levelup as "niveau haut"
///////////////////////FIN DU CODE ////END

 

 

 

 

Code pour Metatrader :

 

http://codebase.mql4.com/7651

 

CAC-40-sve.png

USD-Spotsve.png

Partager cet article
Repost0
Published by SOHOCOOL - dans John Ehlers
29 août 2011 1 29 /08 /août /2011 20:13

Bonsoir à tous,

 

 

Une première remarque :

 

La régession linéaire et la moyenne end-point : c'est la même chose.

 

vous pouvez faire l'essai.

 

 

 

Une deuxième remarque:

 

La régression linéaire est la trajectoire du dernier point (end-point) de la droite

 

de régression linéaire (voir graphe).

 

 

La droite de régression linéaire est un indicateur dynamique c.à.d. ,qu'il se recalcule

 

et se redessine entièrement à chaque bougie.

 

Vous ne pouvez pas le backtester,mais la régression linéaire (end-point) : oui.

 

 

 

Liens utiles :

La droite de régression linéaire voir le code ci-dessous:

http://hk-lisse.over-blog.com/article-31450793.html

 

Metatrader indicateur :

 

http://codebase.mql4.com/4332

 

Explications:

  http://www.trading-school.eu/glossaire-bourse/fiche-Regression-Lineaire-81

 

 

CAC-40-regline.png

Partager cet article
Repost0
Published by SOHOCOOL - dans Sohocool