M. Belkhayate Et Le Filtre De Gauss - Forex Forum

Welcome Guest ( Log In | Register )

 
> M. Belkhayate Et Le Filtre De Gauss, Piste 3
dieupip
post Nov 11 2005, 19:56
Post


Intro

La troisième piste indiquée par Mostafa Belkhayate lors de sa conférence au salon AT est un indicateur basé sur la formule de Gauss qui prend en compte les accélérations du marché. La courbe résultat n'est donc pas une moyenne mobile même si ca y ressemble. Cet indicateur n'est pas nouveau mais il sert pour la suite des articles.

La courbe s'applique directement sur le cours et on différencie les baisses/montée de la courbe par deux couleurs différentes. La courbe "colle" au cours sans se laisser berner par les corrections même si celle-ci traverse la courbe (même avec un sourire sournois).

Non, mon pseudo ne reflète pas un trait de caractère...

Le principe est de jouer à Dieu : prendre les points bas minimum et hauts maximum des tendances. Seul Dieu est capable de prendre les top et bottom absolus, ca me fait penser qu'il va falloir que je m'explique sur mon pseudo : je ne me prends pas pour dieu, loin de là mais justement quelquepart entre Dieu et le pip, l'unité de mesure la plus petite (non je ne connaissais pas l'existance du dixième de pip sur oanda qui s'appelle d'ailleurs pipette alors dieupipette ca l'aurait pas fait !!!). J'ai pris ce pseudo au retour d'un voyage en Egypte donc j'étais bersé par les pharaons et les dieux à l'époque. Bref retournons à nos moutons.

Nos moutons

Au niveau du trading il suffit donc de rentrer long ou short suivant le changement de couleur de la courbe. Cela ne suffit pas, il faut utiliser d'autres filtres dont je parlerai après.

Voici ce que ca donne sur différentes périodes de calcul en daily sur EURUSD :

Sur 100 jours :



C'est beaucoup trop lent on rate des tendances qui peuvent être profitables.

Sur 20 jours :



C'est trop court : on a plein de faux signaux, la courbe passe trop rapidement du bleu au rouge et inversement.

Sur 50 jours :



C'est le compromis qui semble plus utilisable. Je n'ai pas encore testé sur d'autre périodes autour de 50 pour optimiser l'indic, cela viendra.

Voici maintenant quelques pistes d'étude :

-trouver la période collant le plus au cours

-ajouter des filtres (dans un prochain post ici je vais en ajouter un, proposé par M. Belkhayate)

Il n'y a pas de conclusion, tout dépend des contributions de chacun mataf_wink.gif

@ suivre...

This post has been edited by dieupip: Nov 11 2005, 20:07
Attached thumbnail(s)
Attached Image
Attached Image
Attached Image
 
jctrader
post Nov 11 2005, 22:30
Post


Ca fait très moyenne mobile adaptative . J'attends le post sur les filtres ..et les backtests ...

Merci .

Jean-Charles
Sac
post Nov 12 2005, 10:36
Post


ben oui

c'est exactement ca JC.

Il existe toute une batterie de MM "filtré" plus ou moins ancienne : seon technique de Kalman, de Jurik, de Hull. Le gauss qui n'est pas du tout de elkayate en fait parti


même quand le produit est dans une configuration favorable, il produit de faux signaux non négligeable. D'où la nécessité d'ajouter d'autres filtres etc. C'est ce que fait belkayate avec sans doute plus ou moins de réussite sur les support.

En tout cas, ca nous permet de travailler sur e suivi de tendance ce qui est bien (merci Dieupip).

This post has been edited by Sac: Nov 12 2005, 10:40
Attached thumbnail(s)
Attached Image
 
dieupip
post Nov 13 2005, 23:30
Post


Voilà un graph avec :
-le filtre de gauss periode 40 sur prix typique (H+L+C)/3
-l'indic timer de M. Belkhayate periode 20 sur (H+L)/2 (par défaut)
Il est calculé à partir des déviations standards de Bollinger et l'ATR
On utilise que l'historique, la ligne au point 0 de l'indic n'a pas été expliqué par Mostafa
-les bollingers periodes 20 sur prix typique (H+L+C)/3

Une idée proposée par Mosatafa :

Acheter quand filtre gauss est bleu et timer est vert
Vendre quand filtre gauss est rouge et timer est rouge

Je rajoute : attendre un rétrécissement des bollinger puis un écartement pour prendre position.



Je ne suis pas encore capable de le programmer sous TradeStation, je m'y mets très bientôt !

This post has been edited by dieupip: Nov 13 2005, 23:42
Attached thumbnail(s)
Attached Image
 
dieupip
post Nov 13 2005, 23:56
Post


Autre exemple ou le filtre de gauss dure plusieurs jours :


Attached thumbnail(s)
Attached Image
 
Soltrade
post Nov 14 2005, 12:25
Post


CITATION(Sac @ Nov 12 2005, 10:36)
ben oui

c'est exactement ca JC.

Il existe toute une batterie de MM "filtré"  plus ou moins ancienne : seon technique de Kalman, de Jurik, de Hull. Le gauss qui n'est pas du tout de elkayate en fait parti


même quand le produit est dans une configuration favorable, il produit de faux signaux non négligeable. D'où la nécessité d'ajouter d'autres filtres etc. C'est ce que fait belkayate avec sans doute plus ou moins de réussite sur les support.

En tout cas, ca nous permet de travailler sur e suivi de tendance ce qui est bien (merci Dieupip).
[snapback]2090[/snapback]




bonjour

est il possible de poster le code esay de language des divers etudes

par avance merci
dieupip
post Nov 14 2005, 13:40
Post


J'attends la réponse de Mostafa.
dieupip
post Nov 14 2005, 14:03
Post


Je peux tout publier sauf le centre de gravité qui va venir dans un prochain article.

Voici le filtre de gauss :

CODE

[LegacyColorValue = true];


Inputs:
    prix(Close),
    periode(32),
    np(2),
    Coul_asc(Blue),
    Coul_desc(Red),
    Coul_Norm(Green),
    Shift(1);

Var: Bam_G_V (0);

Bam_G_V = G_Filter(prix, periode, np);

Plot1(Bam_G_V, "BAM G FILTER");

if Bam_G_V > Bam_G_V[1] then
 SetPlotColor[Shift]( 1, Coul_asc )
else if Bam_G_V < Bam_G_V[1] then
 SetPlotColor[Shift]( 1, Coul_desc )
else
 SetPlotColor[Shift]( 1, Coul_Norm );


et le Belkhayate timer :

CODE

//  Belkhayate Timer}
//  Settings:
//    "B Indicateur : Histo
//    "B Timer : Point
//

Inputs:
Prix((h+l)/2),
Periode(20), { Periode pour calculer l'ATR et la DEVIATION STD }
Fac_Keltner(1.5), { Facteur ATR pour les bandes Keltner }
Fac_Bollinger(2),{ Facteur  DEVIATION STD pour les bandes de Bollinger }
AlertLine( 1 ), { Niveau d'alerte /cette version ne gre pas les alertes }
Couleur_Alerte( Blue ),
Couleur_Normale(Red);

Variables:
ATR(0), { Average True Range }
StDev(0), { Deviation Standard }
BBS_Ind(0), { l'indicateur }
alertTextID(-1);
if barnumber = 1 and alertTextID = -1 then
alertTextID = Text_New(date,time,0,"dummy");

//Calcul du Squeeze
ATR = AvgTrueRange(Periode);
StDev = StandardDev(Prix, Periode, 1);
BBS_Ind = (Fac_Bollinger * StDev) / (Fac_Keltner * ATR);

If BBS_Ind < Alertline then
SetPlotColor(1, Couleur_Normale)
else
SetPlotColor(1, Couleur_Alerte);

Plot1(0, "B indicateur");

value2 = LinearRegValue(Prix-((Highest(H, Periode)+Lowest(L, Periode))/2
+
xAverage(c,Periode))/2,Periode,0);
var:color(0); color = yellow;
if value2>0 then
if value2 > value2[1] then
color = green
else
color = darkgreen;

if value2<0 then
if value2 < value2[1] then
color = red
else
color = darkred;

plot3(value2,"B timer",color);


Je n'ai pas le temps aujourd'hui de m'attaquer à la strategy, à vos souris !
dieupip
post Nov 14 2005, 14:29
Post


J'ai oublié la fonction G_Filter nécessaire au filtre de gauss :

CODE

Inputs: Prix(NumericSeries), Periode(NumericSimple), Np(NumericSimple);

variables: aa(0), b(0), w(0), x(0), y(0), y1(0), y2(0), y3(0), y4(0),
       a_1(0), a_12(0), a_13(0), a_14(0), a2(0), a3(0), a4(0), Pi(3.141592654),
       sqrtOf2(1.414213562);

If (Np >= 1) and (Np <= 4) then
begin

    if CurrentBar = 1 then
    begin
    w = 2 * Pi / Periode;
    w = 180 * w / Pi;    
 
    b = (1 - cosine(w)) / (power(sqrtOf2, 2.0/Np) - 1.0);

    aa = -b + squareroot(b*b + 2*b);
    a_1 = 1.0 - aa;
    a_12 = a_1 * a_1;
    a_13 = a_1 * a_1 * a_1;
    a_14 = a_12 * a_12;
    a2 = aa * aa;
    a3 = aa * aa * aa;
    a4 = a2 * a2;
 
    y1 = Prix;
    y2 = y1;
       y3 = y2;
    y4 = y3;
    end;

    x = Prix;

    if (Np = 1) then
 y = aa * x + a_1 * y1
    else if (Np = 2) then
 y = a2 * x + 2 * a_1 * y1 - a_12 * y2
    else if (Np = 3) then
 y = a3 * x + 3 * a_1 * y1 - 3 * a_12 * y2 + a_13 * y3
    else if (Np = 4) then
 y = a4 * x + 4 * a_1 * y1 - 6 * a_12 * y2 + 4 * a_13 * y3 - a_14 * y4;

    y4 = y3;
    y3 = y2;
    y2 = y1;
    y1 = y;  

    G_filter = y;
end
else
    G_filter = 0.0;
Soltrade
post Nov 14 2005, 15:24
Post


CITATION(dieupip @ Nov 14 2005, 14:29)
J'ai oublié la fonction G_Filter nécessaire au filtre de gauss :

[snapback]2187[/snapback]




merci bien

This post has been edited by dieupip: Nov 14 2005, 17:01
neko119
post Oct 9 2008, 2:50
Post


QUOTE (Soltrade @ Nov 14 2005, 15:24) *
merci bien


Dieupip, je suis un veritable novice... pourrais tu me dire comment intégrer ces codes dans MT4. J'imagine dans MT4editor et enregistrer dans les indicateurs. Mais quand je le fais ca ne marche pas.... éventuellement, peux tu poster une version en point ex4?

Ou si quelqu'un d'autre veut s'y coller, je vous serait tout aussi grès ! biggrin.gif

Merci d'avance et merci a toi dieupip pour tes posts, j'ai super envi d'essayer ces outils!

Amicalement

Nicolas
Hugo
post Oct 9 2008, 3:23
Post


Voici le code de la courbe pour MT4 :

"snake.mt4"


Attention, l'extremité est constamment recalculée en fonction de l'évolution des prix. C'est le principe de l'approximation. Outil utilisé en statistiques pour faire des projections, là où nos moyennes mobiles n'indiquent que le passé...

L'avantage de la courbe est qu'elle reste suffisamment insensible aux brutales variations, ce qui nous permet d'évaluer le niveau de retracement avec une bonne précision. On parle alors de ligne de "force" ou encore de "rigidité". Belkhayate l'utilise en analyse STATIQUE sur des UT à faible volatilité type 4H. Moi je m'en sert sur du 5 mns pour faire du scalping... Pour info, la valeur 24 donne une assez bonne projection de la moyenne mobile simple 34.

Hugo



CODE
//+------------------------------------------------------------------+
//|                                                        Snake.mq4 |
//|                                       |
//|                           Bookkeeper, 2006, yuzefovich@gmail.com |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
//----
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
//----
extern int Snake_HalfCycle=24; // Snake_HalfCycle = 4...10 or other
//----
double Snake_Buffer[];
double Snake_Sum, Snake_Weight, Snake_Sum_Minus, Snake_Sum_Plus;
int Snake_FullCycle;
//----
int init()
{
int    draw_begin;
   Snake_FullCycle=Snake_HalfCycle*2+1;
   draw_begin=Snake_FullCycle+1;
   SetIndexDrawBegin(0,draw_begin);
   SetIndexBuffer(0,Snake_Buffer);
   SetIndexStyle(0,DRAW_LINE);
   return(0);
}
//----
int start()
{
int FirstPos, ExtCountedBars=0;
   if(Bars<=150) return(0);
   if(Snake_HalfCycle<3) Snake_HalfCycle=3;
   ExtCountedBars=IndicatorCounted();
   if (ExtCountedBars<0) return(-1);
   if (ExtCountedBars>0) ExtCountedBars--;
   FirstPos=Bars-ExtCountedBars-1;
   if(FirstPos>Bars-Snake_HalfCycle-1) FirstPos=Bars-Snake_HalfCycle-1;
   Snake(FirstPos);
   return(0);
}
//----
void Snake(int Pos)
{
int i;
   if(Pos<=Snake_HalfCycle+1) Pos=Snake_HalfCycle+2;
   Snake_Buffer[Pos]=SnakeFirstCalc(Pos);
   Pos--;
   while(Pos>=Snake_HalfCycle)
   {
      Snake_Buffer[Pos]=SnakeNextCalc(Pos);
      Pos--;
   }
   while(Pos>0)
   {
      Snake_Buffer[Pos]=SnakeFirstCalc(Pos);
      Pos--;
   }
   if(Pos==0)
      Snake_Buffer[0]=iMA(NULL,0,Snake_HalfCycle,0,MODE_LWMA,PRICE_TYPICAL,0);
   return;
}
//----
double SnakePrice(int Shift)
{
   return((2*Close[Shift]+High[Shift]+Low[Shift])/4);
}
//----
double SnakeFirstCalc(int Shift)
{
int i, j, w;
   Snake_Sum=0.0;
   Snake_Weight=0.0;
   if(Shift<Snake_HalfCycle)
   {
      i=0;
      w=Shift+Snake_HalfCycle;
      while(w>=Shift)
      {
         i++;
         Snake_Sum=Snake_Sum+i*SnakePrice(w);
         Snake_Weight=Snake_Weight+i;
         w--;
      }
      while(w>=0)
      {
         i--;
         Snake_Sum=Snake_Sum+i*SnakePrice(w);
         Snake_Weight=Snake_Weight+i;
         w--;
      }
   }
   else
   {
      Snake_Sum_Minus=0.0;
      Snake_Sum_Plus=0.0;
      for(j=Shift-Snake_HalfCycle,i=Shift+Snake_HalfCycle,w=1;
          w<= Snake_HalfCycle;
          j++,i--,w++)
      {
         Snake_Sum=Snake_Sum+w*(SnakePrice(i)+SnakePrice(j));
         Snake_Weight=Snake_Weight+2*w;
         Snake_Sum_Minus=Snake_Sum_Minus+SnakePrice(i);
         Snake_Sum_Plus=Snake_Sum_Plus+SnakePrice(j);
      }
      Snake_Sum=Snake_Sum+( Snake_HalfCycle+1)*SnakePrice(Shift);
      Snake_Weight=Snake_Weight+ Snake_HalfCycle+1;
      Snake_Sum_Minus=Snake_Sum_Minus+SnakePrice(Shift);
   }
   return(Snake_Sum/ Snake_Weight);
}
//----
double SnakeNextCalc(int Shift)
{
   Snake_Sum_Plus=Snake_Sum_Plus+SnakePrice(Shift-Snake_HalfCycle);
   Snake_Sum=Snake_Sum-Snake_Sum_Minus+Snake_Sum_Plus;
   Snake_Sum_Minus=Snake_Sum_Minus-SnakePrice(Shift+Snake_HalfCycle+1)+SnakePrice(Shift);
   Snake_Sum_Plus=Snake_Sum_Plus-SnakePrice(Shift);
   return(Snake_Sum/Snake_Weight);
}
//----
neko119
post Oct 10 2008, 17:14
Post


QUOTE (Hugo @ Oct 9 2008, 3:23) *
Voici le code de la courbe pour MT4 :

"snake.mt4"


Attention, l'extremité est constamment recalculée en fonction de l'évolution des prix. C'est le principe de l'approximation. Outil utilisé en statistiques pour faire des projections, là où nos moyennes mobiles n'indiquent que le passé...


Merci Hugo, ca marche parfaitement comme cela.

Si tu le souhaite, il y a une version du centre de gravité (.ex4) sous http://www.trader-forex.fr/forum/ avec les écarts types (je ne pense pas que ce soit ceux qu'utilise MB).

Tu as déjà était très sympa et je en voudrais pas abuser mais pourrais tu me mettre sur la meme forme le filter et le gauss proposés par dieupip? mataf_siffle.gif

(ou quelqu'un d'autre biensur)

J'ai bien essayé les copié/collé avec différentes manières de procéder mais ca ne marche pas....

Merci d'avance.

Amicalement

Nicolas

This post has been edited by neko119: Oct 10 2008, 17:19

Reply to this topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

> Similar Topics

    Topic Title Replies Topic Starter Views Last Action
No New Posts 4 dieupip 5,254 11th November 2005 - 8:46
Last post by: Sac
No new 101 dieupip 33,702 23rd July 2009 - 11:04
Last post by: damtoul
No new 53 dieupip 30,914 11th June 2009 - 21:52
Last post by: damtoul
No new   17 belkhayate 14,230 11th January 2009 - 0:28
Last post by: NABS
No new   28 Arnaud 10,382 27th June 2007 - 20:15
Last post by: Arnaud


Lo-Fi Version: M. Belkhayate Et Le Filtre De Gauss - Forex Forum