Code Ichimoku personnalisable sur plateforme cTrader

Code Ichimoku personnalisable sur plateforme cTrader

Messagepar Donatien » 14 Mar 2021, 12:55

Bonjour à tous,

Pour les utilisateurs de la plateforme cTrader (je l'utilise personnellement pour mon compte démo avant de passer en réel sur ProRealTime), vous avez dû remarquer que l'indicateur Ichimoku Kinko Hyo fourni par la plateforme ne permet pas de modifier la couleur du Kumo (nuage) indépendamment de la SSA et SSB. Effectivement si vous choisissez par exemple la couleur Orange dans les paramètres de votre SSA, le Kumo "Haussier" sera Orange transparent, bleu ce sera bleu transparent etc..

Un peu frustré de ne pas pouvoir changer les couleurs du nuage indépendamment des lignes (comme sur l'excellent ProRealTime..), je me suis penché sur le code source de l'indicateur, et ai "bidouillé" un truc, mais qui fonctionne très bien!

Avec ce code, vous pourrez donc changer tous les paramètres habituels, les périodes, les couleurs et épaisseur de chaque ligne etc.. mais aussi maintenant celles du nuage indépendament (et l’opacité également !).
Dans les paramètres, j’ai appeler le nuage haussier : « KumoUp » et le nuage baissier : « KumoDown »)

La « bidouille » que j’ai faite dans le code pour y arriver, c’est de dupliquer la SSA et SSB et de les afficher devant le nuage Kumo initital. Ce qui fait que la couleur des SSA et SSB nouvellement créées viennent se superposer devant celles d’origine et couvrir leur couleur… Oui c’est de la bidouille, mais à ma connaissance il n’y avait pas d’autre solution sur cTrader ! (d'ailleurs vous pourrez remarquer cette superposition, si vous jouez avec les épaisseurs de lignes)

Vous pourrez désormais paramétrer votre Ichimoku sur cTrader pour avoir, par exemple, un nuage gris, une SSA Orange et une SSB Bleu (Comme le fait Patrick par exemple! :D ;) ).

En bas de ce post, j'ai joins des captures d’écran ou on peut voir qu’avec ce code, il est possible de modifier maintenant à volonté toutes les couleurs séparément.

N’hésitez pas à me dire si ça vous est utile, si vous avez des suggestions, des remarques ou des améliorations que vous verriez à apporter.
Merci à tous et très bonne journée !

PS: Je ne peux pas joindre le fichier de cet indicateur ".algo" à ce post, il vous faudra donc créer l'indicateur (n'hésitez pas à me demander si vous ne savez pas comment faire, ou envoyez un MP pour avoir le fichier .algo)

Voici le code:
Code: Tout sélectionner
using System;
using cAlgo.API;
using cAlgo.API.Indicators;

namespace cAlgo.Indicators
{
    [Cloud("KumoUp", "KumoDown")]
    [Indicator(IsOverlay = true, AccessRights = AccessRights.None)]
    public class IchimokuKinkoHyoCustom : Indicator
    {
        [Parameter(DefaultValue = 9)]
        public int periodFast { get; set; }

        [Parameter(DefaultValue = 26)]
        public int periodMedium { get; set; }

        [Parameter(DefaultValue = 52)]
        public int periodSlow { get; set; }

        [Parameter(DefaultValue = 26)]
        public int DisplacementChikou { get; set; }

        [Parameter(DefaultValue = 26)]
        public int DisplacementCloud { get; set; }

        [Output("TenkanSen", Color = Colors.Red)]
        public IndicatorDataSeries TenkanSen { get; set; }
        [Output("Kijunsen", Color = Colors.Blue)]
        public IndicatorDataSeries KijunSen { get; set; }
        [Output("ChikouSpan", Color = Colors.Black)]
        public IndicatorDataSeries ChikouSpan { get; set; }

        [Output("KumoUp", LineColor = "7CA9A9A9")]
        public IndicatorDataSeries KumoUp { get; set; }
        [Output("KumoDown", LineColor = "B3000000")]
        public IndicatorDataSeries KumoDown { get; set; }

        [Output("SenkouSpanA", LineColor = "FFFFA500")]
        public IndicatorDataSeries SenkouSpanA { get; set; }
        [Output("SenkouSpanB", LineColor = "FF62BADB")]
        public IndicatorDataSeries SenkouSpanB { get; set; }

        double maxfast, minfast, maxmedium, minmedium, maxslow, minslow;

        public override void Calculate(int index)
        {
            if ((index < periodFast) || (index < periodSlow))
            {
                return;
            }

            maxfast = MarketSeries.High[index];
            minfast = MarketSeries.Low[index];
            maxmedium = MarketSeries.High[index];
            minmedium = MarketSeries.Low[index];
            maxslow = MarketSeries.High[index];
            minslow = MarketSeries.Low[index];

            for (int i = 0; i < periodFast; i++)
            {
                if (maxfast < MarketSeries.High[index - i])
                {
                    maxfast = MarketSeries.High[index - i];
                }
                if (minfast > MarketSeries.Low[index - i])
                {
                    minfast = MarketSeries.Low[index - i];
                }
            }
            for (int i = 0; i < periodMedium; i++)
            {
                if (maxmedium < MarketSeries.High[index - i])
                {
                    maxmedium = MarketSeries.High[index - i];
                }
                if (minmedium > MarketSeries.Low[index - i])
                {
                    minmedium = MarketSeries.Low[index - i];
                }
            }
            for (int i = 0; i < periodSlow; i++)
            {
                if (maxslow < MarketSeries.High[index - i])
                {
                    maxslow = MarketSeries.High[index - i];
                }
                if (minslow > MarketSeries.Low[index - i])
                {
                    minslow = MarketSeries.Low[index - i];
                }
            }
            TenkanSen[index] = (maxfast + minfast) / 2;
            KijunSen[index] = (maxmedium + minmedium) / 2;
            ChikouSpan[index - DisplacementChikou] = MarketSeries.Close[index];

            SenkouSpanA[index + DisplacementCloud] = (TenkanSen[index] + KijunSen[index]) / 2;
            SenkouSpanB[index + DisplacementCloud] = (maxslow + minslow) / 2;

            KumoUp[index + DisplacementCloud] = (TenkanSen[index] + KijunSen[index]) / 2;
            KumoDown[index + DisplacementCloud] = (maxslow + minslow) / 2;
        }
    }
}


Capture d’écran (62).png
Ma config perso: Nuage "haussier" Gris clair, "Baissier" Gris foncé avec SSA orange et SSB bleue

Capture d’écran (63).png
Dans les parametres, toutes les couleurs sont maintenant séparées pour chaque élément.

Capture d’écran (64).png
Exemple: changement du Kumo "haussier" en vert..

Capture d’écran (65).png
Et changement du nuage "baissier" en rouge avec modification de l'opacité.
Toutes les couleurs sont indépendantes!
Avatar de l’utilisateur
Donatien
1
1
 
Messages: 11
Inscription: 22 Fév 2021, 08:56

Re: Code Ichimoku personnalisable sur plateforme cTrader

Messagepar Mulder » 15 Mar 2021, 01:07

salut Donatien.
Merci beaucoup pour ce partage.
Je ne connaissais pas cette plateforme mais si cela peut aider quelqu'un, c'est toujours le bienvenue.
La vérité est ailleurs
Avatar de l’utilisateur
Mulder
7
7
 
Messages: 2249
Inscription: 24 Juil 2020, 00:34


Retourner vers Ressources Ichimoku

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités