Rejoindre la communauté
banner_forum
Devenez membre de la plus grande
communauté francophone sur le Forex
Partagez, échangez et apprenez en gagnant des crédits sur votre compte de trading

CAlgo WWS en pyramide

  • hoebi

    Bonjour à tous :)

    Voilà, j'utilise le WWS depuis pas mal de temps, Welles Wilder Smothing, qui ressemble à la MA avec quelques particularités. Je l'utilisais à la base en High et Low pour ouvrir mes positions achat et vente mais l’inconvénient était de déterminer à quel moment l'arrêter :$

    C'est là que j'ai pensé à la pyramide et hop, un bel élastique sur lequel se fixer comme on peut le voir sur l'image...

    Il n'y a rien de bien compliqué dans la mesure où c'est qu'un simple indicateur mais c'est tellement plus simple de l'avoir en un seul clic :)

    Donc si cela intéresse et si c'est permis sur le forum, je placerai le code source Calgo pour permettre à ceux qui utilisent Ctrader d'en profiter :)

    Bonne journée ;)
    hoebi a joint une image
    G5226GB
  • Lu-K

    Hello!

    Est-ce un indicateur sous licence payante? Si c'est le cas, on ne le permet malheureusement pas sur le forum.
    Si c'est un indicateur libre de droits, tu peux le poster en indiquant l'auteur de ce code ;)

    A+
    Lu-K
  • hoebi

    using System;
    using cAlgo.API;
    using cAlgo.API.Indicators;

    namespace cAlgo.Indicators
    {
    [Indicator(IsOverlay = true)]
    public class WWS_Pyramide : Indicator
    {
    [Output("Haut niveau 5", Color = Colors.Green, LineStyle = LineStyle.DotsRare)]
    public IndicatorDataSeries h5 { get; set; }

    [Output("Haut niveau 4", Color = Colors.Green, LineStyle = LineStyle.DotsRare)]
    public IndicatorDataSeries h4 { get; set; }

    [Output("Haut niveau 3", Color = Colors.Green, LineStyle = LineStyle.DotsRare)]
    public IndicatorDataSeries h3 { get; set; }

    [Output("Haut niveau 2", Color = Colors.Green, LineStyle = LineStyle.DotsRare)]
    public IndicatorDataSeries h2 { get; set; }

    [Output("Haut niveau 1", Color = Colors.Green, LineStyle = LineStyle.DotsRare)]
    public IndicatorDataSeries h1 { get; set; }

    [Output("Haut niveau 0", Color = Colors.DarkGreen, LineStyle = LineStyle.Lines)]
    public IndicatorDataSeries h0 { get; set; }

    [Output("Neutre", Color = Colors.Orange, LineStyle = LineStyle.Lines)]
    public IndicatorDataSeries n0 { get; set; }

    [Output("Bas niveau 0", Color = Colors.DarkRed, LineStyle = LineStyle.Lines)]
    public IndicatorDataSeries b0 { get; set; }

    [Output("Bas niveau 1", Color = Colors.Red, LineStyle = LineStyle.DotsRare)]
    public IndicatorDataSeries b1 { get; set; }

    [Output("Bas niveau 2", Color = Colors.Red, LineStyle = LineStyle.DotsRare)]
    public IndicatorDataSeries b2 { get; set; }

    [Output("Bas niveau 3", Color = Colors.Red, LineStyle = LineStyle.DotsRare)]
    public IndicatorDataSeries b3 { get; set; }

    [Output("Bas niveau 4", Color = Colors.Red, LineStyle = LineStyle.DotsRare)]
    public IndicatorDataSeries b4 { get; set; }

    [Output("Bas niveau 5", Color = Colors.Red, LineStyle = LineStyle.DotsRare)]
    public IndicatorDataSeries b5 { get; set; }

    private WellesWilderSmoothing wwsh;
    private WellesWilderSmoothing wwsn;
    private WellesWilderSmoothing wwsb;


    protected override void Initialize()
    {
    wwsh = Indicators.WellesWilderSmoothing(MarketSeries.High, 10);
    wwsn = Indicators.WellesWilderSmoothing(MarketSeries.Close, 10);
    wwsb = Indicators.WellesWilderSmoothing(MarketSeries.Low, 10);
    }

    public override void Calculate(int index)
    {
    double marcheb = wwsh.Result[index] - wwsb.Result[index];
    double marche = marcheb / 2;


    h5[index] = wwsh.Result[index] + marche * 5;
    h4[index] = wwsh.Result[index] + marche * 4;
    h3[index] = wwsh.Result[index] + marche * 3;
    h2[index] = wwsh.Result[index] + marche * 2;
    h1[index] = wwsh.Result[index] + marche;
    h0[index] = wwsh.Result[index];
    n0[index] = wwsn.Result[index];
    b0[index] = wwsb.Result[index];
    b1[index] = wwsb.Result[index] - marche;
    b2[index] = wwsb.Result[index] - marche * 2;
    b3[index] = wwsb.Result[index] - marche * 3;
    b4[index] = wwsb.Result[index] - marche * 4;
    b5[index] = wwsb.Result[index] - marche * 5;
    }
    }
    }
  • hoebi

    Donc oui, il est libre de droit sachant que c'est moi qui l'ai créé en C# avec l'application CAlgo de Ctrader sur FxPro ;)

    Sinon, pour l'utilisation, je vais malgré tout donner quelques explications. Pour commencer, il utilise la période 10 parce que c'est la plus adaptée. Par la suite, j'envisage de l'adapter à des périodes diverses pour ainsi avoir plus d'options et faire aussi le même type d'indicateur mais avec la MA classique paramétrable en triangulaire, simple,...

    Pour l'utiliser, rien de compliqué. Il faut aller sur CAlgo et créer un nouvel indicateur. Vous copiez ensuite le code et vous l'enregistrez avec le nom que vous voulez. Une fois terminé, vous allez sur CTrader (c'est mieux pour l'utiliser) et vous sélectionnez dans "indicateurs", "personnalisé". Et en un clic, c'est fait :)

    Une fois que la paire touche la ligne haut ou bas (traits longs sur l'image au dessus et en dessous du point neutre, vous placez un ordre d'achat. Si la tendance est Trend, il faut alors miser le point le plus haut et ensuite clôturer. Si c'est en range (l'écart des wws est plus stable), tant qu'il reste au centre du wws haut c'est bon, si il retourne au point neutre, c'est qu'il change de direction ;)

    C'est un peu un belkayate mais au lieu d'avoir des points fixes comme un fibonacci, il y a des points dépendant de la volatilité d'où cet effet élastique beaucoup plus prononcé que sur le belkayate ;)

    Si vous avez des questions, n'hésitez pas :P