Comment garder un signal de tendance en continu avec une moyenne mobile qui fait des Flat ?

 

Bonsoir , j'ai un code de tendance qui se base sur le Kijun , lorsque le kijun est haussier = tendance haussière , et inversement lorsqu'il est baissier .

Le problème , c'est que le Kijun fait des Flat horizontaux par moment , lorsque ça arrive , je n'ai plus de signal de tendance , parce-que la moyenne mobile du Kijun n'est plus inclinée.

J'aimerais que le signal de Tendance haussière , commence lorsque le Kijun est incliné à la hausse et dure non stop , y compris lorsqu'il est horizontal , et qu'il ne devient baissier que lorsque le Kijun décline à la baisse , puis qu'il reste baissier non stop , y compris lorsqu'il est horizontal , jusqu'à ce qu'il redevienne haussier , etc .

Donc il doit toujours afficher une tendance haussière ou baissière , mais jamais neutre .

Voici les 2 codes que j'ai testé sans succès :


for (i=limit; i>=0; i--)
     {

       int iHig=iHighest(NULL,0,MODE_HIGH,26,i);
       int iLo=iLowest(NULL,0,MODE_LOW,26,i);
       double vHig=iHigh(NULL,0,iHig);
       double vLo=iLow(NULL,0,iLo);
       
       int iHig1=iHighest(NULL,0,MODE_HIGH,26,i+1);
       int iLo1=iLowest(NULL,0,MODE_LOW,26,i+1);
       double vHig1=iHigh(NULL,0,iHig1);
       double vLo1=iLow(NULL,0,iLo1);
       
       double HL = (vHig+vLo)/2;
       double HL1 = (vHig1+vLo1)/2;
       
       double Kijun_Bull = HL>HL1;
       double Kijun_Bear = HL<HL1; 
      

       ou


       double Kijun_Bull = iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,i) > iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,i+1);

       double Kijun_Bear = iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,i) < iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,i+1);

      Merci beaucoup pour votre aide , ça fait plusieurs semaines que j'essaie de trouver le code juste en utilisant iBarshift ou Static variables , je désespère .

Dossiers :
GBPUSDM15.png  15 kb
 
Esteban67:

Bonsoir , j'ai un code de tendance qui se base sur le Kijun , lorsque le kijun est haussier = tendance haussière , et inversement lorsqu'il est baissier .

Le problème , c'est que le Kijun fait des Flat horizontaux par moment , lorsque ça arrive , je n'ai plus de signal de tendance , parce-que la moyenne mobile du Kijun n'est plus inclinée.

J'aimerais que le signal de Tendance haussière , commence lorsque le Kijun est incliné à la hausse et dure non stop , y compris lorsqu'il est horizontal , et qu'il ne devient baissier que lorsque le Kijun décline à la baisse , puis qu'il reste baissier non stop , y compris lorsqu'il est horizontal , jusqu'à ce qu'il redevienne haussier , etc .

Donc il doit toujours afficher une tendance haussière ou baissière , mais jamais neutre .

Voici les 2 codes que j'ai testé sans succès :


      

       ou



      Merci beaucoup pour votre aide , ça fait plusieurs semaines que j'essaie de trouver le code juste en utilisant iBarshift ou Static variables , je désespère .

Bonjour  Esteban67 !

Je pense qu'il est assez simple d'implémenter ce dont tu as besoin là. Seulement, pour parler des scénarios horizontaux (Flat horizontaux, comme tu les désignés dans ton expression), tu peux utiliser les exemples ci-dessous (basés sur le RSI, pour que tu compprennes. Et tu n'auras qu'à transposer ce raisonnement sur Kijun pour trouver exactement ce dont tu recherches):


Ceci dit, pour parler par exemple des Flat horizontaux lorsqu'il s'agit du RSI, tu peux dire ceci :

if (Rsi >= 40 && Rsi <= 60)

Voilà ! Cette expression peut traduire une situation où le Rsi se latéralise.  Et tu n'auras qu'à transposer ce raisonnement sur Kijun pour trouver exactement ce dont tu recherches. Merci.


(Par exemple, pour implémenter raisonnement sur Kijun, tu peux ajouter une condition qui vérifie que Kijun soit à la fois orienté à la hausse/baisse et dans le même temps supérieur/inférieur à la nuage, par exemple...)

 
J M #:

Bonjour  Esteban67 !

Je pense qu'il est assez simple d'implémenter ce dont tu as besoin là. Seulement, pour parler des scénarios horizontaux (Flat horizontaux, comme tu les désignés dans ton expression), tu peux utiliser les exemples ci-dessous (basés sur le RSI, pour que tu compprennes. Et tu n'auras qu'à transposer ce raisonnement sur Kijun pour trouver exactement ce dont tu recherches):


Ceci dit, pour parler par exemple des Flat horizontaux lorsqu'il s'agit du RSI, tu peux dire ceci :

if (Rsi >= 40 && Rsi <= 60)

Voilà ! Cette expression peut traduire une situation où le Rsi se latéralise.  Et tu n'auras qu'à transposer ce raisonnement sur Kijun pour trouver exactement ce dont tu recherches. Merci.


(Par exemple, pour implémenter ce raisonnement sur Kijun, tu peux ajouter une condition qui vérifie que Kijun soit à la fois orienté à la hausse et dans le même temps supérieur à la nuage, ou orienté à la baisse et dans le même temps inférieur à la nuage , par exemple...)

 
Merci pour ta réponse JM , mais à la différence du RSI , moi je veux que le Kijun continue de donner une tendance même lorsqu'il est Flat , je veux qu'il donne toujours une tendance haussière ou baissière , même lorsqu'il est horizontal , et je n'arrive pas trouver de code qui garde sa tendance pendant qu'il fait un Flat , mon code donne une tendance uniquement lorsque le Kijun est en phase haussière ou baissière , mais le signal de tendance disparait lorsqu'il est flat .
 
Esteban67 #:
Merci pour ta réponse JM , mais à la différence du RSI , moi je veux que le Kijun continue de donner une tendance même lorsqu'il est Flat , je veux qu'il donne toujours une tendance haussière ou baissière , même lorsqu'il est horizontal , et je n'arrive pas trouver de code qui garde sa tendance pendant qu'il fait un Flat , mon code donne une tendance uniquement lorsque le Kijun est en phase haussière ou baissière , mais le signal de tendance disparait lorsqu'il est flat .

Mais, c'est justement ce que je t'ai expliqué non !!! Selon toi, quand est-ce que tu considères ta Kijun comme étant plate ?

Voilà pourquoi je t'ai fait ce parallèle avec le Rsi pour te donner une idée sur comment implémenter un scénario que l'on peut qualifier de plat (ou range)...

Lorsque qu'on parle de plat, ça signifie qu'on se retrouve coïncé entre deux bornes (niveaux). Voilà pourquoi par rapport à l'exemple sur le Rsi, on peut dire qu'il est plat lorsqu'il oscille entre les niveaux 40 et 60. Le même raisonnement donc pour la Kijun. Or, le Rsi est un oscillateur et Kijun est une moyenne mobile.


Maintenant, comment savoir si une moyenne mobile (cas de Kijun) est haussière, baissière ou plate ?

1. A l'œil nu, lorsqu'on est devant les graphes, on a juste à observer et à tirer une conclusion.

2. Dans le code, en programmation donc :

a) Pour ce qui est de la moyenne mobile, on ne peut vérifier que si elle est "haussière ou baissière", en comparant la valeur (prix) de la moyenne mobile par rapport à celle de la bougie à l'index correspondant. Ex. : bougie[0] >= mm[0]. Donc, dans un code, on ne peut pas vérifier si une moyenne mobile est "plate" !!! Parce que la valeur (prix) d'une moyenne mobile est calquée sur la valeur évolutive (prix) de l'actif concerné. Or, le prix d'un actif peut littéralement évoluer jusqu'à l'infini. Du coup, seul à l'œil nu qu'on peut apprécier et conclure qu'une moyenne mobile est plate.

b) Maintenant, pour vérifier si une moyenne mobile est plate (disons plutôt si le marché est plat (range)), dans un code, cela n'est facilement faisable qu'en recourant à un oscillateur. Parce que, contrairement à une moyenne mobile, la valeur d'un oscillateur n'évoluent pas infiniment !!! Comme on le sait, la valeur de la plupart des oscillateurs fourche entre les niveaux 0 et 100. C'est ainsi donc qu'on peut se servir des niveaux intermédiaires entre le 0 et le 100 pour se faire une idée si on est baissier (0-40), haussier ( > 60) ou plat (ou neutre ou range) (entre les 40-60).


Bref, concrètement, pour espérer obtenir ce dont tu as besoin, tu dois penser à intégrer un oscillateur (Rsi ou Stochastique) parmi tes conditions à vérifier en plus de la Kijun. Merci

 

Je me sers du Kijun comme tendance et aussi comme support/résistance , ce que ne fait pas un oscillateur , lorsque le Kijun est plat , il devient un support ou résistance , mais je veux qu'il continue de m'indiquer la tendance même en étant plat , et pour compliquer la chose je souhaite intégrer ce code dans un EA , ce qui est plus difficile que de faire un indicateur en histogramme à cause des buffers , IndicatorCounted ou prev_calculated qui ne peuvent pas être intégré dans un EA , donc il ne lit pas dans les chandeliers passés contrairement à un indicateur . 

 
Esteban67 #:

Je me sers du Kijun comme tendance et aussi comme support/résistance , ce que ne fait pas un oscillateur , lorsque le Kijun est plat , il devient un support ou résistance , mais je veux qu'il continue de m'indiquer la tendance même en étant plat , et pour compliquer la chose je souhaite intégrer ce code dans un EA , ce qui est plus difficile que de faire un indicateur en histogramme à cause des buffers , IndicatorCounted ou prev_calculated qui ne peuvent pas être intégré dans un EA , donc il ne lit pas dans les chandeliers passés contrairement à un indicateur . 

Je ne sais pas ce que tu n'arrives pas à comprendre danns mes explications mon frère... Pourtant, je t'ai fait un long test très basique...

Je t'ai posé une question à laquelle tu n'arrives pas à me répondre :

Selon toi, quand est-ce que tu considères ta Kijun comme étant plate ?

 
Le Kijun est plat quand il est horizontal , et c'est à ce moment là que je n'ai plus de signaux de tendance avec mon code , et c'est là tout le problème .
 
Esteban67 #:
Le Kijun est plat quand il est horizontal , et c'est à ce moment là que je n'ai plus de signaux de tendance avec mon code , et c'est là tout le problème .

Tu racontes des choses mon frère !!! Je pense que tu as maintenant compris...

Je t'ai bien fait la différence entre le "l'œil nu" et le "programmatique"...

Là, c'est toi qui observes (l'œil nu) et conclut si ta Kijun est horizontale ou pas...

Maintenant, tu dois savoir dire la même chose dans un codage (langage) que MQL5 comprend (le programmatique) ...

MQL5 ne sait pas ce que signifie être " horizontal "...

Raison: