TrendDetect… Le code…

TrendDetect… le code !!

Vous avez surement lu cet article !!

Et bien voilà… après reflexion, j’ai décidé de vous faire partager à titre gratuit les quelques lignes de programmation ProRealTime, que j’ai écrites ces derniers mois. J’espère qu’elles seront utiles au plus grand nombre.

Si vous utilisez ProRealTime, “en direct”, alors n’hésitez pas à envoyer un email à ‘info@prorealtime.com’ pour demander l’activation gratuite des indicateur suivants.

GNT-Indic-TrendDetect(F)

GNT-Indic-TrendDetect(S)

N’oubliez pas de préciser votre identifiant ProRealTime et aussi bien évidemment de mentionner que je vous ai donné le droit d’accès sur www.trading-automatique.fr

Si vous utilisez ProRealTime à travers un courtier, alors il va faudra copier/coller le code ci dessous et aussi paramétrer les variables comme indiqué. Surement un peu de travail, mais vous verrez que ce travail sera bien récompensé.

Si vous avez des difficultés de mise en place, ou de paramétrage,  ou alors des idées et astuces, venez sur le forum du TrendDetect pour trouver/proposer des solutions.

GNT-Indic-TrendDetect(F)

Le code

Voici donc le code !! Le copier/coller peut ne pas être aussi éfficace que prévu. Alors si vous avez des messages d’erreur, prenez le temps d’effacer les espaces en trop, probablement ajoutés lors du collage.

// Grégoire Tardy 01.01.2011
// tardy.trade@gmail.com
// Système de detection de tendance sur la base d’une limite
// haute et d’une limite basse dont les miveaux sont des
// déclencheurs de changement de tendance
// Une définition de prix
// Une limite inférieure et une limite supérieure
// La position du prix par rapport à la limite définit la tendance
// La limite opposée sert de support ou résistance par palier

// Définition des variables

Per = Per
m = m
Filtre  = Filtre
Sens = Sens
NTZ = NTZ
Sbuf = Sbuf
SStp = SStp
SObj = SObj

// Initialisation des variables

Once LimitUp = Undefined
Once LimitDw = Undefined
Once TrdDetect = Undefined

LimitMid = Undefined
LimitHigh = Undefined
LimitLow = Undefined
LimitObj = Undefined
LimitStp = Undefined
InUp = Undefined
InDw =  Undefined
InMid = Undefined

// Calcul des paramètres

If Filtre = 0 Then
 TrdCCI = CCI[Round(50)](MedianPrice)
Else
 TrdCCI = CCI[Round(50*Filtre)](MedianPrice)
EndIf

// Calcul Trend

LimitUp=    average[Per,m](High)
LimitDw=   average[Per,m](Low)

If Close > (LimitUp[1]) AND TrdCCI > 0 Then
 MyTrend = 1
 TrendCol = 1
 
ElsIf Close < LimitDw[1] AND TrdCCI <= 0Then
 MyTrend = -1
 TrendCol = -1
 
EndIf

If MyTrend = MyTrend[1] Then
 
 If MyTrend = 1 Then
  
  If LimitDw < LimitDw[1] Then
   
   LimitDw = LimitDw[1]
  Endif
  
  If LimitDw < TrdDetect[1] Then
   
   LimitDw = TrdDetect[1]
  EndIf
  
  TrdDetect = LimitDw
  
  If (TrdDetect – TrdDetect[1]) < Sens Then
   TrdDetect = TrdDetect[1]
  EndIF
  
  LimitDw = TrdDetect
  
  If  Close < LimitDw[1]  OR TrdCCI < 0 Then
   
   TrendCol = -1
  Else
   TrendCol = 1
   
  EndIf
  
 Endif
 
 If MyTrend = -1 Then
  
  If LimitUp > LimitUp[1]  Then
   
   LimitUp = LimitUp[1]
  Endif
  
  If LimitUp > TrdDetect[1] Then
   
   LimitUp = TrdDetect[1]
  EndIf
  
  TrdDetect = LimitUp
  
  If (TrdDetect[1] – TrdDetect) < Sens Then
   TrdDetect = TrdDetect[1]
  EndIF
  
  LimitUp = TrdDetect
  
  If  Close > LimitUp[1]  OR TrdCCI > 0 Then
   
   TrendCol = 1
   
  Else
   TrendCol = -1
   
  EndIf
  
 Endif
Else
 
 If MyTrend = 1 Then
  
  TrdDetect =  LimitDw
  
  If TrdDetect < TrdDetect[1] Then
   TrdDetect = TrdDetect[1]
  EndIF
  
 EndIf
 
 If MyTrend = -1 Then
  TrdDetect = LimitUp
  
  If TrdDetect > TrdDetect[1] Then
   TrdDetect = TrdDetect[1]
  EndIF
  
 EndIf
EndIf

///////////////////////////
/// CalCul du NTZ
///////////////////////////

If NTZ = 1 Then
 
 LimitMid = MedianPrice
 LimitHigh = High
 LimitLow = Low
 
 If MyTrend  = 1 Then
  
  If LimitMid < LimitMid[1] Then
   
   LimitMid = LimitMid[1]
   LimitHigh = LimitHigh[1]
   LimitLow = LimitLow[1]
  EndIf
  
  LimitStp = TrdDetect  – (SStp *  (LimitHigh – LimitLow))
  If LimitStp < LimitStp[1] Then
   LimitStp = LimitStp[1]
  EndIf
  StopCol = 1
  
  InUp = TrdDetect + ((LimitHigh – LimitLow) *0.6180 * SBuf)
  InDw =  TrdDetect + ((LimitHigh – LimitLow) *0.3820 * SBuf)
  InMid = TrdDetect + (Abs(InUp – InDw) *0.50)
  
  If InUp < InUp[1] Then
   InUp = InUp[1]
  EndIf
  
  If InDw < InDw[1] Then
   InDw = InDw[1]
  EndIf
  
  If InMid < InMid[1] Then
   InMid = InMid[1]
  EndIf
  
  Col = 1
 EndIf
 
 If MyTrend  = -1 Then
  
  If LimitMid > LimitMid[1] Then
   
   LimitMid = LimitMid[1]
   LimitHigh = LimitHigh[1]
   LimitLow = LimitLow[1]
   
  EndIf
  
  LimitStp = TrdDetect + (SStp * (LimitHigh – LimitLow))
  If LimitStp > LimitStp[1] Then
   LimitStp = LimitStp[1]
  EndIf
  StopCol = -1
  
  InUp = TrdDetect – ((LimitHigh – LimitLow) *0.618 * SBuf )
  InDw =  TrdDetect – ((LimitHigh – LimitLow) *0.382 * SBuf )
  InMid = TrdDetect – (Abs(InUp – InDw) *0.50)
  
  If InMid > InMid[1] Then
   InMid = InMid[1]
  EndIf
  
  Col = -1
 EndIf
 
 If MyTrend  MyTrend [1] Then
  
  If MyTrend  = 1 Then
   
   LimitObj = TrdDetect + ( SObj * (LimitHigh[1] – TrdDetect[1]))
   LimitStp = TrdDetect  – ( SStp * (LimitHigh – LimitLow))
   StopCol = 1
   
   InUp = TrdDetect + ((LimitHigh – LimitLow) *0.618 * SBuf)
   InDw =  TrdDetect + ((LimitHigh – LimitLow) *0.382 * SBuf)
   InMid = TrdDetect + (Abs(InUp – InDw) *0.50)
   
   
  ElsIf MyTrend  = -1 Then
   
   LimitObj =TrdDetect  – ( SObj * (LimitHigh[1] – TrdDetect[1]))
   LimitStp = TrdDetect  + (SStp * (LimitHigh – LimitLow))
   StopCol = -1
   
   InUp = TrdDetect – ((LimitHigh – LimitLow) *0.618 * SBuf)
   InDw =  TrdDetect – ((LimitHigh – LimitLow) *0.382 * SBuf)
   InMid = TrdDetect – (Abs(InUp – InDw) *0.50)
   
  EndIf
 EndIf
 
Else
 LimitMid = Undefined
 LimitHigh = Undefined
 LimitLow = Undefined
 LimitStp = Undefined
 LimitObj = Undefined
 InMid =Undefined
 InUp = Undefined
 InDw = Undefined
 
 
EndIf

// Validation des résultats

TrdDetect = TrdDetect
LimitMid = LimitMid
LimitHigh = LimitHigh
LimitLow = LimitLow
LimitObj = LimitObj
LimitStp = LimitStp
InUp = InUp
InDw =  InDw
InMid = InMid

// Retour des résultats

Return TrdDetect coloured By TrendCol as “Trend Detect(F)”, LimitMid coloured by col as “Median”, LimitHigh  coloured by col as “Limit High”, LimitLow  coloured by col as “Limit Low”, LimitStp coloured by StopCol as “Stop”, InUp as “Buffer Up”, InDw as “Buffer Down”, InMid as “Buffer Mid”

Les variables

Et les variables à mettre en place !

 

 

Le resultat 

Une fois l’indicateur disponible, à vous de choisir le paramétrage et l’affichage qui vous conviendront le mieux. Voici un exemple ci dessous. N’oubliez pas d’ajouter deux remplissages, le premier entre les variables Limit High et Limit Low, et le second entre les variables Buffer Up et BufferDown.

 

GNT-Indic-TrendDetect(S)

Le code

// Grégoire Tardy 01.01.2011
// tardy.trade@gmail.com
// Système de detection de tendance sur la base d’une limite
// haute et d’une limite basse dont les miveaux sont des
// déclencheurs de changement de tendance
// Une définition de prix
// Une limite inférieure et une limite supérieure
// La position du prix par rapport à la limite définit la tendance
// La limite opposée sert de support ou résistance par palier

// Initialisation des variables

Once Buffer = Undefined
Once AxeMedian = Undefined
Once LimitUp = Undefined
Once LimitDw = Undefined
Once TrdDetect = Undefined
Once TrdCCI = Undefined

Once LimitMid = Undefined
Once LimitHigh = Undefined
Once LimitLow = Undefined
Once LimitStp = Undefined
Once LimitObj = Undefined

Once BuffPer =BuffPer
Once BuffCoef = BuffCoef
Once Filtre = Filtre
Once Sens = Sens
Once WChg = WChg
Once NTZ = NTZ
Once SBuf = SBuf
Once SStp = SStp
Once SObj = SObj

// Affectation des variables

Price = CustomClose

// Calcul des paramètres

If Filtre = 0 Then
 TrdCCI = CCI[Round(50)](Close)
Else
 TrdCCI = CCI[Round(50*Filtre)](Close)
EndIf

LimitMid = Price
LimitHigh = High
LimitLow = Low

// Calcul TrendDetect

Buffer = Averagetruerange[BuffPer](Close)

AxeMedian = (Customclose)
LimitUp=    AxeMedian + ( BuffCoef * Buffer)
LimitDw=  AxeMedian – ( BuffCoef * Buffer)

If Close > (LimitUp[1]) AND TrdCCI > 0 Then
 MyTrend = 1
 TrendCol = 1
ElsIf Close < LimitDw[1] AND TrdCCI <= 0Then
 MyTrend = -1
 TrendCol = -1
EndIf

If MyTrend = MyTrend[1] Then
 
 If MyTrend = 1 Then
  
  If LimitDw < LimitDw[1] Then
   
   LimitDw = LimitDw[1]
  Endif
  
  If LimitDw < TrdDetect[1] Then
   
   LimitDw = TrdDetect[1]
  EndIf
  
  TrdDetect = LimitDw
  
  If (TrdDetect – TrdDetect[1]) < Sens Then
   TrdDetect = TrdDetect[1]
  EndIF
  
  LimitDw = TrdDetect
  
  If  Close < LimitDw[1]  OR TrdCCI < 0 Then
   
   TrendCol = -1
   
  Else
   TrendCol = 1
   
  EndIf
  
 Endif
 
 If MyTrend = -1 Then
  
  If LimitUp > LimitUp[1]  Then
   
   LimitUp = LimitUp[1]
  Endif
  
  If LimitUp > TrdDetect[1] Then
   
   LimitUp = TrdDetect[1]
  EndIf
  
  TrdDetect = LimitUp
  
  If (TrdDetect[1] – TrdDetect) < Sens Then
   TrdDetect = TrdDetect[1]
  EndIF
  
  LimitUp = TrdDetect
  
  If  Close > LimitUp[1]  OR TrdCCI > 0 Then
   
   TrendCol = 1
   
  Else
   TrendCol = -1
   
  EndIf
  
  
 Endif
Else
 
 If MyTrend = 1 Then
  
  TrdDetect =  AxeMedian – ( BuffCoef * WChg *  Buffer)
  
  If TrdDetect > TrdDetect[1] Then
   TrdDetect = TrdDetect[1]
  EndIF
  
 EndIf
 
 If MyTrend = -1 Then
  TrdDetect = AxeMedian + ( BuffCoef * WChg * Buffer)
  
  If TrdDetect < TrdDetect[1] Then
   TrdDetect = TrdDetect[1]
  EndIF
  
 EndIf
EndIf

///////////////////////////
/// CalCul du NTZ
///////////////////////////

If NTZ = 1 Then
 
 If MyTrend  = 1 Then
  
  If LimitMid < LimitMid[1] Then
   
   LimitMid = LimitMid[1]
   LimitHigh = LimitHigh[1]
   LimitLow = LimitLow[1]
  EndIf
  
  LimitStp = TrdDetect  – (SStp *  (LimitHigh – LimitLow))
  If LimitStp < LimitStp[1] Then
   LimitStp = LimitStp[1]
  EndIf
  StopCol = 1
  
  InUp = TrdDetect + ((LimitHigh – LimitLow) *0.6180 * SBuf)
  InDw =  TrdDetect + ((LimitHigh – LimitLow) *0.3820 * SBuf)
  InMid = TrdDetect + (Abs(InUp – InDw) *0.50)
  
  If InUp < InUp[1] Then
   InUp = InUp[1]
  EndIf
  
  If InDw < InDw[1] Then
   InDw = InDw[1]
  EndIf
  
  If InMid < InMid[1] Then
   InMid = InMid[1]
  EndIf
  
  Col = 1
 EndIf
 
 If MyTrend  = -1 Then
  
  If LimitMid > LimitMid[1] Then
   
   LimitMid = LimitMid[1]
   LimitHigh = LimitHigh[1]
   LimitLow = LimitLow[1]
   
  EndIf
  
  LimitStp = TrdDetect + (SStp * (LimitHigh – LimitLow))
  If LimitStp > LimitStp[1] Then
   LimitStp = LimitStp[1]
  EndIf
  StopCol = -1
  
  InUp = TrdDetect – ((LimitHigh – LimitLow) *0.618 * SBuf )
  InDw =  TrdDetect – ((LimitHigh – LimitLow) *0.382 * SBuf )
  InMid = TrdDetect – (Abs(InUp – InDw) *0.50)
  
  If InMid > InMid[1] Then
   InMid = InMid[1]
  EndIf
  
  Col = -1
 EndIf
 
 If MyTrend  MyTrend [1] Then
  
  If MyTrend  = 1 Then
   
   LimitObj = TrdDetect + ( SObj * (LimitHigh[1] – TrdDetect[1]))
   LimitStp = TrdDetect  – ( SStp * (LimitHigh – LimitLow))
   StopCol = 1
   
   InUp = TrdDetect + ((LimitHigh – LimitLow) *0.618 * SBuf)
   InDw =  TrdDetect + ((LimitHigh – LimitLow) *0.382 * SBuf)
   InMid = TrdDetect + (Abs(InUp – InDw) *0.50)
   
   
  ElsIf MyTrend  = -1 Then
   
   LimitObj =TrdDetect  – ( SObj * (LimitHigh[1] – TrdDetect[1]))
   LimitStp = TrdDetect  + (SStp * (LimitHigh – LimitLow))
   StopCol = -1
   
   InUp = TrdDetect – ((LimitHigh – LimitLow) *0.618 * SBuf)
   InDw =  TrdDetect – ((LimitHigh – LimitLow) *0.382 * SBuf)
   InMid = TrdDetect – (Abs(InUp – InDw) *0.50)
   
  EndIf
 EndIf
 
Else
 LimitMid = Undefined
 LimitHigh = Undefined
 LimitLow = Undefined
 LimitStp = Undefined
 LimitObj = Undefined
 InMid =Undefined
 InUp = Undefined
 InDw = Undefined
 
 
EndIf

// Validation des résultats

TrdDetect = TrdDetect
LimitMid = LimitMid
LimitHigh = LimitHigh
LimitLow = LimitLow
LimitObj = LimitObj
LimitStp = LimitStp
InUp = InUp
InDw =  InDw
InMid = InMid

// Retour des résultats

Return TrdDetect coloured By TrendCol as “Trend Detect(S)”, LimitMid coloured by col as “Median”, LimitHigh  coloured by col as “Limit High”, LimitLow  coloured by col as “Limit Low”, LimitStp coloured by StopCol as “Stop”, InUp as “Buffer Up”, InDw as “Buffer Down”, InMid as “Buffer Mid”

Les variables

Pour les variables communes avec l’indicateur précédent, merci de vous référer aux écrans ci dessus. Pour les trois autres, les voici.

 

Bons trades à tous !

Grégoire Tardy

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>