Indicatore Pidi_Trend

Collapse
X
 
  • Ora
  • Show
Clear All
new posts
  • lucaweb76
    Senior Member
    • Nov 2010
    • 105

    #16
    Ciao Massimo,
    ti descrivo la procedura che applico.
    Vado dentro new easyscript poi indicator copio e incollo questo:

    # Ampiezza Strike
    INPUTS: @AmpStrike(0.5)
    # Ampiezza Fascia Pidi
    INPUTS: @AmpPidi(0.22)
    # Ampiezza Frontiera della direzione
    INPUTS: @AmpFdD(0.22)

    # Calcolo dei Pivot Points
    SET AP = (YESTERDAYHIGH() + YESTERDAYLOW() + YESTERDAYCLOSE()) / 3
    SET Sup1 = (AP * 2) - YESTERDAYHIGH()
    SET Res1 = (AP * 2) - YESTERDAYLOW()
    SET Sup2 = AP - (Res1 - Sup1)
    SET Res2 = (AP - Sup1) + Res1
    #SET Res3 = Res2 + (YESTERDAYHIGH() - YESTERDAYLOW())
    #SET Sup3 = Sup2 - (YESTERDAYHIGH() - YESTERDAYLOW())
    # Calcolo Frontiere della direzione
    SET FdDUp = TODAYOPEN() + @AmpFdD
    SET FdDDown = TODAYOPEN() - @AmpFdD

    # Calcolo dei 2 livelli di Strike Up
    SET StrikeUp1 = DIV(TODAYOPEN() * 100, 50) / 2 + @AmpStrike
    SET StrikeUp2 = StrikeUp1 + @AmpStrike

    # Calcolo dei 2 livelli di Strike Down
    SET CondDown = MOD(TODAYOPEN() * 100, 50) = 0
    SET StrikeDown1 = IF(CondDown, DIV(TODAYOPEN() * 100, 50) / 2 - @AmpStrike, DIV(TODAYOPEN() * 100, 50) / 2)
    SET StrikeDown2 = StrikeDown1 - @AmpStrike
    # Calcola SogliaPidiUp
    SET c1 = IF(StrikeUp1 < Res2, StrikeUp1, Res2 )
    SET c2 = IF(StrikeUp1 < Res1, Res1, c1)
    SET c3 = IF(StrikeUp1 < Res1, StrikeUp1, Res1 )
    SET c4 = IF(StrikeUp1 < AP, AP, c3)
    SET SogliaPidiUp = IF(TODAYOPEN() > AP, c2 , c4)
    # Calcola SogliaPidiDown
    SET c5 = IF(StrikeDown1 > Sup2, StrikeDown1, Sup2 )
    SET c6 = IF(StrikeDown1 > Sup1, Sup1, c5)
    SET c7 = IF(StrikeDown1 > Sup1, StrikeDown1, Sup1 )
    SET c8 = IF(StrikeDown1 > AP, AP, c7)
    SET SogliaPidiDown = IF(TODAYOPEN() < AP, c6 , c8)
    # Calcola Punti di non ritorno
    SET PNRUp = SogliaPidiUp + @AmpPidi
    SET PNRDown = SogliaPidiDown - @AmpPidi

    SET PLOT1 = TODAYOPEN()
    SET PLOT2 = FdDUp
    SET PLOT3 = FdDDown
    SET PLOT4 = PNRUp
    SET PLOT5 = PNRDown
    SET PLOT6 = SogliaPidiUp
    SET PLOT7 = SogliaPidiDown

    SET PLOTCOLOR1 = COLOR_SILVER
    SET PLOTCOLOR2 = COLOR_GREEN
    SET PLOTCOLOR3 = COLOR_RED
    SET PLOTCOLOR4 = COLOR_GREEN
    SET PLOTCOLOR5 = COLOR_RED
    SET PLOTCOLOR6 = COLOR_YELLOW
    SET PLOTCOLOR7 = COLOR_YELLOW

    Comment

    • Smash
      Senior Member

      • Feb 2012
      • 351

      #17
      Originariamente Scritto da lucaweb76
      Ciao Massimo,
      ti descrivo la procedura che applico.
      Vado dentro new easyscript poi indicator copio e incollo questo:

      # Ampiezza Strike
      INPUTS: @AmpStrike(0.5)
      # Ampiezza Fascia Pidi
      INPUTS: @AmpPidi(0.22)
      # Ampiezza Frontiera della direzione
      INPUTS: @AmpFdD(0.22)

      # Calcolo dei Pivot Points
      SET AP = (YESTERDAYHIGH() + YESTERDAYLOW() + YESTERDAYCLOSE()) / 3
      SET Sup1 = (AP * 2) - YESTERDAYHIGH()
      SET Res1 = (AP * 2) - YESTERDAYLOW()
      SET Sup2 = AP - (Res1 - Sup1)
      SET Res2 = (AP - Sup1) + Res1
      #SET Res3 = Res2 + (YESTERDAYHIGH() - YESTERDAYLOW())
      #SET Sup3 = Sup2 - (YESTERDAYHIGH() - YESTERDAYLOW())
      # Calcolo Frontiere della direzione
      SET FdDUp = TODAYOPEN() + @AmpFdD
      SET FdDDown = TODAYOPEN() - @AmpFdD

      # Calcolo dei 2 livelli di Strike Up
      SET StrikeUp1 = DIV(TODAYOPEN() * 100, 50) / 2 + @AmpStrike
      SET StrikeUp2 = StrikeUp1 + @AmpStrike

      # Calcolo dei 2 livelli di Strike Down
      SET CondDown = MOD(TODAYOPEN() * 100, 50) = 0
      SET StrikeDown1 = IF(CondDown, DIV(TODAYOPEN() * 100, 50) / 2 - @AmpStrike, DIV(TODAYOPEN() * 100, 50) / 2)
      SET StrikeDown2 = StrikeDown1 - @AmpStrike
      # Calcola SogliaPidiUp
      SET c1 = IF(StrikeUp1 < Res2, StrikeUp1, Res2 )
      SET c2 = IF(StrikeUp1 < Res1, Res1, c1)
      SET c3 = IF(StrikeUp1 < Res1, StrikeUp1, Res1 )
      SET c4 = IF(StrikeUp1 < AP, AP, c3)
      SET SogliaPidiUp = IF(TODAYOPEN() > AP, c2 , c4)
      # Calcola SogliaPidiDown
      SET c5 = IF(StrikeDown1 > Sup2, StrikeDown1, Sup2 )
      SET c6 = IF(StrikeDown1 > Sup1, Sup1, c5)
      SET c7 = IF(StrikeDown1 > Sup1, StrikeDown1, Sup1 )
      SET c8 = IF(StrikeDown1 > AP, AP, c7)
      SET SogliaPidiDown = IF(TODAYOPEN() < AP, c6 , c8)
      # Calcola Punti di non ritorno
      SET PNRUp = SogliaPidiUp + @AmpPidi
      SET PNRDown = SogliaPidiDown - @AmpPidi

      SET PLOT1 = TODAYOPEN()
      SET PLOT2 = FdDUp
      SET PLOT3 = FdDDown
      SET PLOT4 = PNRUp
      SET PLOT5 = PNRDown
      SET PLOT6 = SogliaPidiUp
      SET PLOT7 = SogliaPidiDown

      SET PLOTCOLOR1 = COLOR_SILVER
      SET PLOTCOLOR2 = COLOR_GREEN
      SET PLOTCOLOR3 = COLOR_RED
      SET PLOTCOLOR4 = COLOR_GREEN
      SET PLOTCOLOR5 = COLOR_RED
      SET PLOTCOLOR6 = COLOR_YELLOW
      SET PLOTCOLOR7 = COLOR_YELLOW
      Ciao,
      forse hai installata una release precedente di beeTrader?
      Qual è il messaggio di errore che ti viene fuori?

      Comment

      • maxmax68
        Senior Member

        • Sep 2013
        • 186

        #18
        Originariamente Scritto da Smash
        Ciao Massimo,
        scusa ma leggo soltanto adesso.

        Per il calcolo degli strike

        Codice:
        # Calcolo dei 2 livelli di Strike Up
        SET StrikeUp1 = DIV(TODAYOPEN() * 100, 50) / 2 + @AmpStrike
        SET StrikeUp2 = StrikeUp1 + @AmpStrike
          
        # Calcolo dei 2 livelli di Strike Down
        SET CondDown = MOD(TODAYOPEN() * 100, 50) = 0
        SET StrikeDown1 = IF(CondDown, DIV(TODAYOPEN() * 100, 50) / 2 - @AmpStrike, DIV(TODAYOPEN() * 100, 50) / 2)
        SET StrikeDown2 = StrikeDown1 - @AmpStrike
        per il Bund si è dovuto moltiplicare il TODAYOPEN per 100 in modo tale da togliere tutti i decimali (il Bund ne ha 2, ma se un altro future o azione ad esempio ne avesse 4 allora andava moltiplicato per 10000), altrimenti beeTrader approssima all\'unità e sballa il risultato della divisione.

        In seguito quel 50 che si divide a TODAYOPEN() * 100 è un multiplo della distanza @AmpStrike :
        è @AmpStrike * 100 in questo caso sul Bund; sarebbe stato @AmpStrike * 10000 per un altro sottostante a 4 cifre decimali.

        Ed infine quel 2 che si è usato per dividere il DIV(TODAYOPEN() * 100, 50)
        in realtà sarebbe pari a 1 / @AmpStrike

        Quindi per avere un codice corretto per un future diverso dal Bund andrebbero fatte alcune piccole modifiche.
        Ma siccome per il momento si era detto che le Fasce di Pidi si usavano solo sul Bund, io l\'avevo scritto così!

        Ciao Smash,
        grazie per la spiegazione.

        Saluti
        Massimo

        Comment

        • lucaweb76
          Senior Member
          • Nov 2010
          • 105

          #19
          Ciao Smash,
          veramente ho l\'ultima versione di Beetrader.
          L\'indicatore va copiato e incollato senza aggiungere niente?
          perchè mi dice che ci sono errori.
          devo aggiungere qualcosa dentr output?
          grazie
          Luca

          Comment

          • Smash
            Senior Member

            • Feb 2012
            • 351

            #20
            Originariamente Scritto da lucaweb76
            Ciao Smash,
            veramente ho l\'ultima versione di Beetrader.
            L\'indicatore va copiato e incollato senza aggiungere niente?
            perchè mi dice che ci sono errori.
            devo aggiungere qualcosa dentr output?
            grazie
            Luca
            Ciao,
            a me copiando ed incollando semplicemente non mi da\' errori!
            Potresti allegare una schermata con l\'errore oppure trascrivere il messaggio di errore?

            Comment

            • Andrea Cagalli
              Senior Member
              • Oct 2010
              • 3995

              #21
              Originariamente Scritto da lucaweb76
              Ciao Smash,
              veramente ho l\'ultima versione di Beetrader.
              L\'indicatore va copiato e incollato senza aggiungere niente?
              perchè mi dice che ci sono errori.
              devo aggiungere qualcosa dentr output?
              grazie
              Luca
              Ciao Luca,
              mandami una mail che vediamo perchè non riesci
              andrea.cagalli@playoptions.it

              Ciao Ciao
              Manuale beeTrader

              Comment

              • lucaweb76
                Senior Member
                • Nov 2010
                • 105

                #22
                Originariamente Scritto da lucaweb76
                Ciao Smash,
                veramente ho l\'ultima versione di Beetrader.
                L\'indicatore va copiato e incollato senza aggiungere niente?
                perchè mi dice che ci sono errori.
                devo aggiungere qualcosa dentr output?
                grazie
                Luca
                certamente ecco l\'immagine

                grazie
                File Allegati

                Comment

                • lucaweb76
                  Senior Member
                  • Nov 2010
                  • 105

                  #23
                  Tutto ok era colpa della versione di beetrader.
                  grazie

                  Comment

                  • CIVT
                    Senior Member
                    • Dec 2009
                    • 813

                    #24
                    Originariamente Scritto da Smash
                    Ciao Massimo,
                    scusa ma leggo soltanto adesso.

                    Per il calcolo degli strike

                    Codice:
                    # Calcolo dei 2 livelli di Strike Up
                    SET StrikeUp1 = DIV(TODAYOPEN() * 100, 50) / 2 + @AmpStrike
                    SET StrikeUp2 = StrikeUp1 + @AmpStrike
                      
                    # Calcolo dei 2 livelli di Strike Down
                    SET CondDown = MOD(TODAYOPEN() * 100, 50) = 0
                    SET StrikeDown1 = IF(CondDown, DIV(TODAYOPEN() * 100, 50) / 2 - @AmpStrike, DIV(TODAYOPEN() * 100, 50) / 2)
                    SET StrikeDown2 = StrikeDown1 - @AmpStrike
                    per il Bund si è dovuto moltiplicare il TODAYOPEN per 100 in modo tale da togliere tutti i decimali (il Bund ne ha 2, ma se un altro future o azione ad esempio ne avesse 4 allora andava moltiplicato per 10000), altrimenti beeTrader approssima all\'unità e sballa il risultato della divisione.

                    In seguito quel 50 che si divide a TODAYOPEN() * 100 è un multiplo della distanza @AmpStrike :
                    è @AmpStrike * 100 in questo caso sul Bund; sarebbe stato @AmpStrike * 10000 per un altro sottostante a 4 cifre decimali.

                    Ed infine quel 2 che si è usato per dividere il DIV(TODAYOPEN() * 100, 50)
                    in realtà sarebbe pari a 1 / @AmpStrike

                    Quindi per avere un codice corretto per un future diverso dal Bund andrebbero fatte alcune piccole modifiche.
                    Ma siccome per il momento si era detto che le Fasce di Pidi si usavano solo sul Bund, io l\'avevo scritto così!
                    Ciao smash ho provato a seguire le tue indicazioni ma come al solito mi sono bloccato! Che calcoli si debbono fare quando il sottostante è un valore intero come lo STOXX50???? Pensavo che fosse semplice calcolarlo con la funzione CEIL ma a quanto pare mi sbagliavo quindi ho provato a convertire il tutto con la matematica ma sono una capra a quanto pare...

                    In base alla tua spiegazione ho modificato così il codice ma da errore sul DIV

                    Codice:
                    INPUTS: @AmpStrike(25)
                    
                    # Calcolo dei 2 livelli di Strike Up
                    SET StrikeUp1 = DIV(TODAYOPEN() * 1, 2500) / 2 + @AmpStrike
                    SET StrikeUp2 = StrikeUp1 + @AmpStrike
                       
                    # Calcolo dei 2 livelli di Strike Down
                    SET CondDown = MOD(TODAYOPEN() * 1, 2500) = 0
                    SET StrikeDown1 = IF(CondDown, DIV(TODAYOPEN() * 1, 2500) / 2 - @AmpStrike, DIV(TODAYOPEN() * 1, 2500) / 2)
                    SET StrikeDown2 = StrikeDown1 - @AmpStrike
                    
                    SET PLOT1 = StrikeUp1
                    SET PLOT2 = StrikeUp2
                    SET PLOT3 = StrikeDown1
                    SET PLOT4 = StrikeDown2
                    Grazie!

                    Comment

                    • Smash
                      Senior Member

                      • Feb 2012
                      • 351

                      #25
                      Originariamente Scritto da CIVT
                      Ciao smash ho provato a seguire le tue indicazioni ma come al solito mi sono bloccato! Che calcoli si debbono fare quando il sottostante è un valore intero come lo STOXX50???? Pensavo che fosse semplice calcolarlo con la funzione CEIL ma a quanto pare mi sbagliavo quindi ho provato a convertire il tutto con la matematica ma sono una capra a quanto pare...

                      In base alla tua spiegazione ho modificato così il codice ma da errore sul DIV

                      Codice:
                      INPUTS: @AmpStrike(25)
                      
                      # Calcolo dei 2 livelli di Strike Up
                      SET StrikeUp1 = DIV(TODAYOPEN() * 1, 2500) / 2 + @AmpStrike
                      SET StrikeUp2 = StrikeUp1 + @AmpStrike
                         
                      # Calcolo dei 2 livelli di Strike Down
                      SET CondDown = MOD(TODAYOPEN() * 1, 2500) = 0
                      SET StrikeDown1 = IF(CondDown, DIV(TODAYOPEN() * 1, 2500) / 2 - @AmpStrike, DIV(TODAYOPEN() * 1, 2500) / 2)
                      SET StrikeDown2 = StrikeDown1 - @AmpStrike
                      
                      SET PLOT1 = StrikeUp1
                      SET PLOT2 = StrikeUp2
                      SET PLOT3 = StrikeDown1
                      SET PLOT4 = StrikeDown2
                      Grazie!

                      Ciao CIVT,

                      eccoti il codice adattabile a qualsiasi tipo di sottostante:

                      Codice:
                      INPUTS: @AmpStrike(0.5), @MultDec(100)
                      
                      # Calcolo dei 2 livelli di Strike Up
                      SET StrikeUp1 = DIV(TODAYOPEN() * @MultDec, (@AmpStrike * @MultDec) ) / (1 / @AmpStrike) + @AmpStrike
                      SET StrikeUp2 = StrikeUp1 + @AmpStrike
                      # Calcolo dei 2 livelli di Strike Down
                      SET CondDown = MOD(TODAYOPEN() * @MultDec, @AmpStrike * @MultDec) = 0
                      SET StrikeDown1 = IF(CondDown, DIV(TODAYOPEN() * @MultDec, @AmpStrike * @MultDec) / (1 / @AmpStrike) - @AmpStrike, DIV(TODAYOPEN() * @MultDec, @AmpStrike * @MultDec) / (1 / @AmpStrike) )
                      SET StrikeDown2 = StrikeDown1 - @AmpStrike
                      
                      SET PLOT1 = StrikeUp1
                      SET PLOT2 = StrikeUp2
                      SET PLOT3 = StrikeDown1
                      SET PLOT4 = StrikeDown2
                      Nell\'esempio (che è riferito al Bund) si sono utilizzati come inputs:
                      @AmpStrike(0.5)
                      distanza tra uno strike ed il precedente / successivo

                      @MultDec(100)
                      moltiplicatore da usare per ottenere il prezzo del sottostante privo di cifre decimali


                      Per l\'Eurostoxx50 basterà utilizzare come valori di INPUTS:
                      @AmpStrike(25), @MultDec(1)

                      Comment

                      • CIVT
                        Senior Member
                        • Dec 2009
                        • 813

                        #26
                        Originariamente Scritto da Smash
                        Ciao CIVT,

                        eccoti il codice adattabile a qualsiasi tipo di sottostante:

                        Codice:
                        INPUTS: @AmpStrike(0.5), @MultDec(100)
                        
                        # Calcolo dei 2 livelli di Strike Up
                        SET StrikeUp1 = DIV(TODAYOPEN() * @MultDec, (@AmpStrike * @MultDec) ) / (1 / @AmpStrike) + @AmpStrike
                        SET StrikeUp2 = StrikeUp1 + @AmpStrike
                        # Calcolo dei 2 livelli di Strike Down
                        SET CondDown = MOD(TODAYOPEN() * @MultDec, @AmpStrike * @MultDec) = 0
                        SET StrikeDown1 = IF(CondDown, DIV(TODAYOPEN() * @MultDec, @AmpStrike * @MultDec) / (1 / @AmpStrike) - @AmpStrike, DIV(TODAYOPEN() * @MultDec, @AmpStrike * @MultDec) / (1 / @AmpStrike) )
                        SET StrikeDown2 = StrikeDown1 - @AmpStrike
                        
                        SET PLOT1 = StrikeUp1
                        SET PLOT2 = StrikeUp2
                        SET PLOT3 = StrikeDown1
                        SET PLOT4 = StrikeDown2
                        Nell\'esempio (che è riferito al Bund) si sono utilizzati come inputs:
                        @AmpStrike(0.5)
                        distanza tra uno strike ed il precedente / successivo

                        @MultDec(100)
                        moltiplicatore da usare per ottenere il prezzo del sottostante privo di cifre decimali


                        Per l\'Eurostoxx50 basterà utilizzare come valori di INPUTS:
                        @AmpStrike(25), @MultDec(1)
                        Ammetto che con le mie bassissime capacità matematiche non ci sarei mai arrivato!!! Ma come arrivi a questi calcoli? Segui una logica o altro? Complimenti davvero sei bravissimo!

                        Comment

                        • Smash
                          Senior Member

                          • Feb 2012
                          • 351

                          #27
                          Originariamente Scritto da CIVT
                          Ammetto che con le mie bassissime capacità matematiche non ci sarei mai arrivato!!! Ma come arrivi a questi calcoli? Segui una logica o altro? Complimenti davvero sei bravissimo!
                          Grazie !!!

                          Ci arrivo utilizzando logica, ragionamenti e una buona dose di pazienza!

                          Comment

                          • pidi10
                            Senior Member
                            • Apr 2008
                            • 4076

                            #28
                            Tiziano

                            tu stai sperimentando l\'intelligenza artificiale.
                            Ma qui questo thread dimostra che c\'é anche l\'intelligenza del Forum.

                            Io che ho elaborato l\'idea iniziale non sapevo nulla che qualcuno si era messo a programmarla per renderla disponibile a tutti.

                            Il Forum è un terreno di coltura per far crescere idee.

                            Le idee cresciute poi sono patrimonio di tutti!

                            Basta seminare!

                            Una via che non mi sarei mai aspettato di scoprire.

                            Comment

                            • Cagalli Tiziano
                              Senior Member
                              • Dec 2007
                              • 11252

                              #29
                              Originariamente Scritto da pidi10
                              Tiziano

                              tu stai sperimentando l\'intelligenza artificiale.
                              Ma qui questo thread dimostra che c\'é anche l\'intelligenza del Forum.

                              Io che ho elaborato l\'idea iniziale non sapevo nulla che qualcuno si era messo a programmarla per renderla disponibile a tutti.

                              Il Forum è un terreno di coltura per far crescere idee.

                              Le idee cresciute poi sono patrimonio di tutti!

                              Basta seminare!

                              Una via che non mi sarei mai aspettato di scoprire.

                              Si vede che sei giovane!

                              Io ho passato un buon decennio nel forum di Tradestation e lì abbiamo creato grandissime cose.
                              C\'era la cultura del condividere, del costruire, della analisi, poi si è spenta piano piano ed è iniziato il ciclo di quelli che vogliono tutto fatto ma solo copiando e quando scoprono qualche cosa la tengono per loro... e così sono 6 anni che non scrivo più nulla.

                              Ora c\'è questo forum e sono sicuro che ci sono delle potenzialità enormi, aspetto di avere la versione N°1 di beeTrader e poi sono certo che con una buona dose di pubblicità anche gli utilizzatori di beeTrader si saranno in grado di fare cose magiche.

                              Le grandi categorie di trader sono due a mio avviso:
                              gli avidi, quelli che vogliono solo il numero su cui puntare
                              i tecnici, questi invece vogliono prima il risultato con la prova del 9 e poi si mette a mercato.

                              Per questo motivo ti ho chiesto di scrivere il tuo post nella sezione di beeTrader, per darlo in pasto ai tecnici!
                              Sono stati bravi eh?!
                              ..se corri dietro a due lepri, non ne prendi nemmeno una.

                              Comment

                              • pidi10
                                Senior Member
                                • Apr 2008
                                • 4076

                                #30
                                Per chiarire meglio il concetto di intelligenza del Forum in paragone con l\'intelligenza artificiale io sarei il livello di informazione "senior" che, nell\'algoritmo, viene cancellata in quanto può contenere un errore che non deve essere ereditato dal livello junior-.
                                Last edited by pidi10; 31-01-14, 22:06.

                                Comment

                                Working...