pivot 30 minutes

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • #192703 quote
    christophe11560
    Participant
    Senior

    Bonjour à toute la communauté,
    sur la base du code PRT JOINT DU PIVOT HORAIRE INTRADAY, comment peut on l’adapter pour faire un pivot à 30 min?
    Le code joint a été réalisé par robertogozzi et fonctionne correctement.

    En vous remerciant 😉
    christophe

    #192704 quote
    christophe11560
    Participant
    Senior
    //DEFPARAM DrawOnLastBarOnly = true
    Pivot = 1
     
    IF Openhour <> openhour [ 1 ]  THEN
    //
    MyEnd      = (Opendate * 1000000) + (OpenHour * 10000) + (5900)   //YYYYMMDDHHMMSS
    MyPP        = PP
    StartBar    = BarIndex
    //
    myLastHigh  = myHigh
    myLastLow   = myLow
    myLastClose = Close [ 1 ]
    myHigh = High
    myLow = Low
    myopen = open
    ELSE
    myHigh = Max(myHigh, High)
    myLow = Min(myLow, Low)
    ENDIF
     
    // Formule en fonction de la valeur du paramètre Pivot
    IF Pivot = 2 THEN
    // Point pivot : PP= (Hveille + Bveille + Cveille + Ojour) / 4
    PP = (myLastHigh + myLastLow + myLastClose + myopen) / 4
    ELSIF Pivot = 3 THEN
    // Point pivot : PP= (Hveille + Bveille + Ojour) / 3
    PP = (myLastHigh + myLastLow + myopen) / 3
    ELSE
    // Point pivot : PP= (Hveille + Bveille + Cveille) / 3
    PP = (myLastHigh + myLastLow + myLastClose) / 3
     
    ENDIF
     
    Res1 = 2 * PP - myLastLow
    Res2 = PP + myLastHigh - myLastLow
    Res3 = myLastHigh + 2 * (PP - myLastLow)
    Sup1 = 2 * PP - myLastHigh
    Sup2 = PP - myLastHigh + myLastLow
    Sup3 = myLastLow - 2 * (myLastHigh - PP)
    DrawSegment(StartBar,MyPP,DateToBarIndex(MyEnd),MyPP) coloured(0,255,0,255) style(Line, 1)
    Return //pp
    #192707 quote
    JC_Bywan
    Moderator
    Master

    Bonjour, a priori, en modifiant les lignes 4 et 6 comme ceci (à tester):

    //DEFPARAM DrawOnLastBarOnly = true
    Pivot = 1
     
    IF Openhour <> openhour [ 1 ] or openminute=30 THEN
    //
    MyEnd      = (Opendate * 1000000) + (OpenHour * 10000) + 3000*(openminute=30) + (2900)   //YYYYMMDDHHMMSS
    MyPP        = PP
    StartBar    = BarIndex
    //
    myLastHigh  = myHigh
    myLastLow   = myLow
    myLastClose = Close [ 1 ]
    myHigh = High
    myLow = Low
    myopen = open
    ELSE
    myHigh = Max(myHigh, High)
    myLow = Min(myLow, Low)
    ENDIF
     
    // Formule en fonction de la valeur du paramètre Pivot
    IF Pivot = 2 THEN
    // Point pivot : PP= (Hveille + Bveille + Cveille + Ojour) / 4
    PP = (myLastHigh + myLastLow + myLastClose + myopen) / 4
    ELSIF Pivot = 3 THEN
    // Point pivot : PP= (Hveille + Bveille + Ojour) / 3
    PP = (myLastHigh + myLastLow + myopen) / 3
    ELSE
    // Point pivot : PP= (Hveille + Bveille + Cveille) / 3
    PP = (myLastHigh + myLastLow + myLastClose) / 3
     
    ENDIF
     
    Res1 = 2 * PP - myLastLow
    Res2 = PP + myLastHigh - myLastLow
    Res3 = myLastHigh + 2 * (PP - myLastLow)
    Sup1 = 2 * PP - myLastHigh
    Sup2 = PP - myLastHigh + myLastLow
    Sup3 = myLastLow - 2 * (myLastHigh - PP)
    DrawSegment(StartBar,MyPP,DateToBarIndex(MyEnd),MyPP) coloured(0,255,0,255) style(Line, 1)
    Return //pp
    christophe11560 thanked this post
    #192825 quote
    christophe11560
    Participant
    Senior

    Salut,
    Je viens de l’essayer et çà marche nickel. Merci beaucoup 😉
    Peut on faire le même système pour un pivot annuel, mensuel et hebdomadaire?

    Dans l’attente de te lire.

    Christophe.

    #192827 quote
    christophe11560
    Participant
    Senior

    Re,
    Je me posais une autre question,
    Si je veux modifier 30 en 10 min, le code peut il être modifié lignes 4 et 6 comme suit:

    IF Openhour <> openhour [ 1 ] or openminute=10 THEN
    MyEnd = (Opendate * 1000000) + (OpenHour * 10000) + 3000*(openminute=10) + (2900) //YYYYMMDDHHMMSS

    Si ce n’est pas le cas, comment corriger ces lignes et pour comprendre comment les as tu calculé ?

    en te remerciant

    #192850 quote
    JC_Bywan
    Moderator
    Master

    Pour monter en TF, on a ces 2 versions dans la library qui peuvent servir telles quelles ou de base de départ:

    Fibonacci Pivots Points 4 Hours, Daily, Weekly and Monthly

    Fibonacci Pivots Points v2 inc. custom time settings for daily

    christophe11560 thanked this post
    #192855 quote
    JC_Bywan
    Moderator
    Master

    Re,

    Je me posais une autre question,

    Si je veux modifier 30 en 10 min, le code peut il être modifié lignes 4 et 6 comme suit:

    IF Openhour <> openhour [ 1 ] or openminute=10 THEN

    MyEnd = (Opendate * 1000000) + (OpenHour * 10000) + 3000*(openminute=10) + (2900) //YYYYMMDDHHMMSS

    Si ce n’est pas le cas, comment corriger ces lignes et pour comprendre comment les as tu calculé ?

    en te remerciant

    Pour le cas du 10mn, on pourrait faire ainsi par exemple pour ces 2 lignes:

    IF Openhour <> openhour[1] or openminute=10 or openminute=20 or openminute=30 or openminute=40 or openminute=50 THEN

     

    MyEnd = (Opendate * 1000000) + (OpenHour * 10000) + 100*openminute + (900) //YYYYMMDDHHMMSS
    christophe11560 thanked this post
    #192864 quote
    christophe11560
    Participant
    Senior

    Bonjour et merci pour tes retours,
    j’ai également trouvé ces 2 indicateurs.

    Je préfère le code de base de robertogozzi parce que les pivots qu’il a codé sont sous forme de segment et non de ligne. Et on peut également paramétrer le segment, ce qui est pratique.

    Sauf que je ne n’ai pas réussi à paramétrer les lignes 4, 6 et 40 pour tracer ces pivots en unité hebdo, mensuel et annuel.

    Aurais tu une idée à ce sujet?

    😉

    #192865 quote
    christophe11560
    Participant
    Senior

    Re,
    Voudrais tu bien m’expliquer comment sont calculés 3000*(openminute=10) + (2900) //YYYYMMDDHHMMSS dans MyEnd ?

    christophe

    #192921 quote
    JC_Bywan
    Moderator
    Master

    C’était avec =30 (tu as mis =10), ça permettait de multiplier 3000 par 0 ou 1, mais ce n’était pas nécessaire ici, j’étais au milieu d’un autre code où j’avais besoin de faire comme ça pour un autre problème, et parmi toutes les façons de faire ici ça m’a fait penser à celle-ci en premier, mais il suffit de faire plus simple pour le 30mn (à l’image de la version que j’ai mis pour le 10 minutes dans l’autre post):

    MyEnd = (Opendate * 1000000) + (OpenHour * 10000) + 100*openminute + (2900)

    Ok, si tu préfères le graphisme en segments plutôt qu’en lignes renvoyées par return, je comprends que tu préfères ce type de code, mais il faut surtout voir distinctement la façon de calculer d’une part, et le graphisme d’autre part, les codes library étaient surtout cités pour une façon de calculer plus adaptée aux plus grandes unités de temps mensuelles et hebdo que le code ici présent, dont myend sert surtout à un horaire intra et limite le nombre de segments erronés autour du changement de date. Pour plus grande UT, tu devrais donc essayer de mixer “façon de calculer d’autres codes” + “graphismes segments de ton code de départ”.

    christophe11560 thanked this post
    #192966 quote
    christophe11560
    Participant
    Senior

    Bonjour et merci beaucoup pour touts tes retours.

    Peut on écrire ce code comme cela?

    IF Openhour <> openhour[1] or openminute=15 or openminute=25 or openminute=35 or openminute=45 THEN
    MyEnd = (Opendate * 1000000) + (OpenHour * 10000) + 100*openminute + (2900)
    #193025 quote
    JC_Bywan
    Moderator
    Master

    Au sens “erreur de syntaxe” je n’en vois pas, donc oui…

    Par contre, la question posée ainsi, je ne sais pas ce que tu en attends, donc je ne peux pas te dire si ça va faire ce que tu veux. Tout au plus je peux inverser le processus en disant ce que va faire ce qui est écrit et tenter de deviner à quelles attentes ça correspond, et donc te dire qu’écrit comme ceci, tu prends des points de départ irréguliers espacés de soit 15mn soit 10mn partant de l’heure pile, de et quart, de 25mn 35mn 45mn puis heure pile à nouveau, pour des durées de 30mn. Comme ça semble plutôt bizarre ce mélange de départs non réguliers pour des intervalles qui se chevauchent, je vais supposer que ce n’est pas ce que tu voulais.

    #193043 quote
    christophe11560
    Participant
    Senior

    Oui oui tu as raison, j’aurai du l’écrire comme suit pour avoir un multiple de 15 min:

    IF Openhour <> openhour[1] or openminute=15 or openminute=30 or  openminute=45 then
    
    MyEnd = (Opendate * 1000000) + (OpenHour * 10000) + 100*openminute + (2900)

    Est ce plus cohérent dans le fonctionnement du code?

    #193067 quote
    christophe11560
    Participant
    Senior

    Re,
    Je ne veux vraiment pas abuser de ton temps, mais je me rends compte que je ne sais pas lire et pas compris ces lignes de codes que tu m’as écrite ci-dessous.

    Voudrais tu bien me les lire comme tu as fait précédemment pour que je comprenne les enchainements de ce code?

    IF Openhour <> openhour[1] or openminute=10 or openminute=20 or openminute=30 or openminute=40 or openminute=50 THEN
    
    1
    MyEnd = (Opendate * 1000000) + (OpenHour * 10000) + 100*openminute + (2900)

    Bien à toi christophe

    #193068 quote
    christophe11560
    Participant
    Senior

    lire : 900 au lieu de 2900 autant pour moi

    1
    MyEnd = (Opendate * 1000000) + (OpenHour * 10000) + 100*openminute + (900)
Viewing 15 posts - 1 through 15 (of 17 total)
  • You must be logged in to reply to this topic.

pivot 30 minutes


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
Summary

This topic contains 16 replies,
has 2 voices, and was last updated by christophe11560
3 years, 9 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 05/04/2022
Status: Active
Attachments: No files
Logo Logo
Loading...