Pivot+Volatilità : caccia all'errore.

Collapse
X
 
  • Ora
  • Show
Clear All
new posts
  • maxmax68
    Senior Member

    • Sep 2013
    • 186

    #1

    Pivot+Volatilità : caccia all'errore.

    Salve a tutti,
    sto cercando di modificare il mio indicatore di pivot flessibile.
    Quello che voglio ottenere è che il periodo di barre a sinistra del pivot diventi variabile in base alla volatilità,
    prendendo spunto dal codice di Thalos.

    Lo script editor continua a darmi il seguente messaggio d\'errore:
    Error: Riferimento a un oggetto non impostato su un\'istanza di oggetto
    e non riesco a capire quale sia l\'errore ???
    Qualsiasi suggerimento sarebbe molto gradito.
    Saluti
    Massimo

    Il codice e il seguente :



    #
    # Indicatore Pivot + Volatilità
    #
    INPUTS: @vPrice(LOW), @vRight(5), @vDir(0)
    INPUTS: @MaxLB(60), @MinLB(5)

    SET HistVol=SDV(CLOSE, 30, 1, SIMPLE)+0.000001
    SET YestHistVol = REF(HistVol, 1)
    SET DeltaHistVol = (HistVol - REF(HistVol, 1))/HistVol
    SET EntryLB = BARLOOP (20 , 1, MULTIPLY , (1 + DeltaHistVol) ,@MinLB , @MaxLB )
    SET vLeft = FLOOR(EntryLB)
    SET A = PIVOT_FLESSIBILE (@vPrice , vLeft , @vRight , @vDir)
    SET PLOT1 = A



    con la funzione PIVOT_FLESSIBILE così codificata:




    # PIVOT FLESSIBILE
    #
    # Ritorna il pivot del vettore vPrice
    # minore o maggiore delle vLeft e vRight barre
    # in direzione high o low (vDir 0 o 1)
    #
    Inputs: @vPrice(LOW), @vLeft(10), @vRight(5), @vDir(0)
    # Condizione per individuare il pivot point Low
    # Il vPrice del pivot deve essere <= ai vPrice delle vLeft barre a sinistra
    # e minore del vPrice delle vRight barre a destra
    SET Condition1 = (@vDir = 0) AND (REF(@vPrice, @vRight) <= REF(MIN(@vPrice, @vLeft), @vRight + 1) AND REF(@vPrice, @vRight) < MIN(@vPrice, @vRight))
    # Condizione per individuare il pivot point High
    # L\' vPrice del pivot deve essere >= all\'vPrice delle vLeft barre a sinistra
    # e maggiore degli vPrice delle vRight barre a destra
    SET Condition2 = (@vDir = 1) AND (REF(@vPrice, @vRight) >= REF(MAX(@vPrice, @vLeft), @vRight + 1) AND REF(@vPrice, @vRight) > MAX(@vPrice, @vRight))
    SET Condition = Condition1 OR Condition2
    SET PIVOT_FLESSIBILE = CHANGEIF(Condition, REF(@vPrice, @vRight))
  • Smash
    Senior Member

    • Feb 2012
    • 351

    #2
    Originariamente Scritto da maxmax68
    Salve a tutti,
    sto cercando di modificare il mio indicatore di pivot flessibile.
    Quello che voglio ottenere è che il periodo di barre a sinistra del pivot diventi variabile in base alla volatilità,
    prendendo spunto dal codice di Thalos.

    Lo script editor continua a darmi il seguente messaggio d\'errore:
    Error: Riferimento a un oggetto non impostato su un\'istanza di oggetto
    e non riesco a capire quale sia l\'errore ???
    Qualsiasi suggerimento sarebbe molto gradito.
    Saluti
    Massimo

    Il codice e il seguente :



    #
    # Indicatore Pivot + Volatilità
    #
    INPUTS: @vPrice(LOW), @vRight(5), @vDir(0)
    INPUTS: @MaxLB(60), @MinLB(5)

    SET HistVol=SDV(CLOSE, 30, 1, SIMPLE)+0.000001
    SET YestHistVol = REF(HistVol, 1)
    SET DeltaHistVol = (HistVol - REF(HistVol, 1))/HistVol
    SET EntryLB = BARLOOP (20 , 1, MULTIPLY , (1 + DeltaHistVol) ,@MinLB , @MaxLB )
    SET vLeft = FLOOR(EntryLB)
    SET A = PIVOT_FLESSIBILE (@vPrice , vLeft , @vRight , @vDir)
    SET PLOT1 = A



    con la funzione PIVOT_FLESSIBILE così codificata:




    # PIVOT FLESSIBILE
    #
    # Ritorna il pivot del vettore vPrice
    # minore o maggiore delle vLeft e vRight barre
    # in direzione high o low (vDir 0 o 1)
    #
    Inputs: @vPrice(LOW), @vLeft(10), @vRight(5), @vDir(0)
    # Condizione per individuare il pivot point Low
    # Il vPrice del pivot deve essere <= ai vPrice delle vLeft barre a sinistra
    # e minore del vPrice delle vRight barre a destra
    SET Condition1 = (@vDir = 0) AND (REF(@vPrice, @vRight) <= REF(MIN(@vPrice, @vLeft), @vRight + 1) AND REF(@vPrice, @vRight) < MIN(@vPrice, @vRight))
    # Condizione per individuare il pivot point High
    # L\' vPrice del pivot deve essere >= all\'vPrice delle vLeft barre a sinistra
    # e maggiore degli vPrice delle vRight barre a destra
    SET Condition2 = (@vDir = 1) AND (REF(@vPrice, @vRight) >= REF(MAX(@vPrice, @vLeft), @vRight + 1) AND REF(@vPrice, @vRight) > MAX(@vPrice, @vRight))
    SET Condition = Condition1 OR Condition2
    SET PIVOT_FLESSIBILE = CHANGEIF(Condition, REF(@vPrice, @vRight))


    Ciao Massimo,

    l\'errore è qui:

    Codice:
    SET A = PIVOT_FLESSIBILE (@vPrice , vLeft , @vRight , @vDir)
    in quanto pare che la tua UserFunction PIVOT_FLESSIBILE non possa accettare come argomento nessun vettore creato con l\'istruzione SET.
    Pertanto non può accettare vLeft come argomento!

    Per ovviare al problema, la soluzione più semplice mi sembrerebbe quella di modificare direttamente la funzione PIVOT_FLESSIBILE in questo modo:

    Codice:
    # PIVOT FLESSIBILE
    #
    # Ritorna il pivot del vettore vPrice 
    # minore o maggiore delle vLeft e vRight barre
    # in direzione high o low (vDir 0 o 1)
    #
    Inputs: @vPrice(LOW), @vRight(5), @vDir(0), @MaxLB(60), @MinLB(5)
    
    SET HistVol = SDV(CLOSE, 30, 1, SIMPLE)
    SET YestHistVol = REF(HistVol, 1)
    SET DeltaHistVol = (HistVol - REF(HistVol, 1)) / HistVol
    SET EntryLB = BARLOOP (20, 1, MULTIPLY, (1 + DeltaHistVol), @MinLB, @MaxLB)
    SET vLeft = FLOOR(EntryLB)
    
    
    # Condizione per individuare il pivot point Low
    # Il vPrice del pivot deve essere <= ai vPrice delle vLeft barre a sinistra 
    # e minore del vPrice delle vRight barre a destra 
    SET Condition1 = (@vDir = 0) AND (REF(@vPrice, @vRight) <= REF(MIN(@vPrice, vLeft), @vRight + 1) AND REF(@vPrice, @vRight) < MIN(@vPrice, @vRight)) 
    # Condizione per individuare il pivot point High
    # L\' vPrice del pivot deve essere >= all\'vPrice delle vLeft barre a sinistra 
    # e maggiore degli vPrice delle vRight barre a destra 
    SET Condition2 = (@vDir = 1) AND (REF(@vPrice, @vRight) >= REF(MAX(@vPrice, vLeft), @vRight + 1) AND REF(@vPrice, @vRight) > MAX(@vPrice, @vRight)) 
    SET Condition = Condition1 OR Condition2 
    SET PIVOT_FLESSIBILE = CHANGEIF(Condition, REF(@vPrice, @vRight))

    e di conseguenza l\'indicatore andrebbe scritto in maniera più semplice:

    Codice:
    #
    # Indicatore Pivot + Volatilità 
    #
    INPUTS: @vPrice(LOW), @vRight(5), @vDir(0)
    INPUTS: @MaxLB(60), @MinLB(5)
    
    SET A = PIVOT_FLESSIBILE(@vPrice, @vRight, @vDir, @MaxLB, @MinLB)
    
    SET PLOT1 = A
    Last edited by Smash; 30-10-13, 11:49.

    Comment

    • Smash
      Senior Member

      • Feb 2012
      • 351

      #3
      Dimenticavo:
      mi sembra che sia stato corretto il bug della divisione per zero
      e non serve più aggiungere 0.0000001 !!!

      Comment

      • maxmax68
        Senior Member

        • Sep 2013
        • 186

        #4
        Ciao Smash,
        grazie per la risposta.
        Ma a questo punto non ha neanche più senso scrivere la funzione,
        tanto vale scrivere direttamente un unico codice.
        Max illuminaci, per cortesia.
        Saluti
        Massimo

        Comment

        • Smash
          Senior Member

          • Feb 2012
          • 351

          #5
          Originariamente Scritto da maxmax68
          Ciao Smash,
          grazie per la risposta.
          Ma a questo punto non ha neanche più senso scrivere la funzione,
          tanto vale scrivere direttamente un unico codice.
          Max illuminaci, per cortesia.
          Saluti
          Massimo
          Secondo me invece è proprio la funzione quella più importante!

          Infatti la funzione ti fa i calcoli e la puoi richiamare quando vuoi.
          Se poi vuoi graficare, allora devi per forza scrivere un indicatore.
          Ma se esempio la volessi utilizzare anche in un Trading System, senza la funzione dovresti sempre riscrivere tutto!

          Comment

          • Francario Massimiliano
            Administrator
            • Jul 2008
            • 1033

            #6
            Salve Massimo,
            Originariamente Scritto da maxmax68
            Ciao Smash,
            grazie per la risposta.
            Ma a questo punto non ha neanche più senso scrivere la funzione,
            tanto vale scrivere direttamente un unico codice.
            Max illuminaci, per cortesia.
            Saluti
            Massimo
            confermo quanto detto dal bravo Smash !
            E\' molto più utile avere la funzione che fa tutti i calcoli, in modo da poterla usare in qualunque altro script.

            Max Francario
            Manuale di beeTrader
            Manuale di Fiuto Beta

            Comment

            • Andrea Cagalli
              Senior Member
              • Oct 2010
              • 3995

              #7
              Originariamente Scritto da Smash
              Ciao Massimo,

              l\'errore è qui:

              Codice:
              SET A = PIVOT_FLESSIBILE (@vPrice , vLeft , @vRight , @vDir)
              in quanto pare che la tua UserFunction PIVOT_FLESSIBILE non possa accettare come argomento nessun vettore creato con l\'istruzione SET.
              Pertanto non può accettare vLeft come argomento!

              Per ovviare al problema, la soluzione più semplice mi sembrerebbe quella di modificare direttamente la funzione PIVOT_FLESSIBILE in questo modo:

              Codice:
              # PIVOT FLESSIBILE
              #
              # Ritorna il pivot del vettore vPrice 
              # minore o maggiore delle vLeft e vRight barre
              # in direzione high o low (vDir 0 o 1)
              #
              Inputs: @vPrice(LOW), @vRight(5), @vDir(0), @MaxLB(60), @MinLB(5)
              
              SET HistVol = SDV(CLOSE, 30, 1, SIMPLE)
              SET YestHistVol = REF(HistVol, 1)
              SET DeltaHistVol = (HistVol - REF(HistVol, 1)) / HistVol
              SET EntryLB = BARLOOP (20, 1, MULTIPLY, (1 + DeltaHistVol), @MinLB, @MaxLB)
              SET vLeft = FLOOR(EntryLB)
              
              
              # Condizione per individuare il pivot point Low
              # Il vPrice del pivot deve essere <= ai vPrice delle vLeft barre a sinistra 
              # e minore del vPrice delle vRight barre a destra 
              SET Condition1 = (@vDir = 0) AND (REF(@vPrice, @vRight) <= REF(MIN(@vPrice, vLeft), @vRight + 1) AND REF(@vPrice, @vRight) < MIN(@vPrice, @vRight)) 
              # Condizione per individuare il pivot point High
              # L\' vPrice del pivot deve essere >= all\'vPrice delle vLeft barre a sinistra 
              # e maggiore degli vPrice delle vRight barre a destra 
              SET Condition2 = (@vDir = 1) AND (REF(@vPrice, @vRight) >= REF(MAX(@vPrice, vLeft), @vRight + 1) AND REF(@vPrice, @vRight) > MAX(@vPrice, @vRight)) 
              SET Condition = Condition1 OR Condition2 
              SET PIVOT_FLESSIBILE = CHANGEIF(Condition, REF(@vPrice, @vRight))

              e di conseguenza l\'indicatore andrebbe scritto in maniera più semplice:

              Codice:
              #
              # Indicatore Pivot + Volatilità 
              #
              INPUTS: @vPrice(LOW), @vRight(5), @vDir(0)
              INPUTS: @MaxLB(60), @MinLB(5)
              
              SET A = PIVOT_FLESSIBILE(@vPrice, @vRight, @vDir, @MaxLB, @MinLB)
              
              SET PLOT1 = A
              Smash for President!! Bravissimo!!!
              Manuale beeTrader

              Comment

              • Smash
                Senior Member

                • Feb 2012
                • 351

                #8
                Troppo buoni !!!

                Grazie!

                Comment

                • maxmax68
                  Senior Member

                  • Sep 2013
                  • 186

                  #9
                  Originariamente Scritto da Smash
                  Troppo buoni !!!

                  Grazie!
                  Smash, probabilmente mi sono espresso male.
                  Nello specifico caso, viste le poche righe di codice,
                  tanto vale scrivere un unico script.
                  Nessuno mette in dubbio l\'importanza fondamentale delle funzioni, ed è per questo che ho chiesto lumi a Max.
                  -
                  Per vedere di capire dov\'è il problema con la funzione che avevo scritto originariamente !!!
                  Perché non può ricevere un vettore come argomento ?
                  In attesa di risposta.
                  Saluti
                  Massimo
                  Last edited by maxmax68; 30-10-13, 13:38.

                  Comment

                  • Smash
                    Senior Member

                    • Feb 2012
                    • 351

                    #10
                    Originariamente Scritto da maxmax68
                    Smash, probabilmente mi sono espresso male.
                    Nello specifico caso, viste le poche righe di codice,
                    tanto vale scrivere un unico script.
                    Nessuno mette in dubbio l\'importanza fondamentale delle funzioni, ed è per questo che ho chiesto lumi a Max.
                    -
                    Per vedere di capire dov\'è il problema con la funzione che avevo scritto originariamente !!!
                    Perché non può ricevere un vettore come argomento ?
                    In attesa di risposta.
                    Saluti
                    Massimo

                    La funzione che avevi scritto non può ricevere un vettore solo se il vettore in questione è stato creato nello script dell\'indicatore mediante l\'istruzione SET.

                    Se invece come argomento gli passi, ad esempio, il vettore degli OPEN, allora la funzione che avevi scritto lo accetta!

                    Click image for larger version

Name:	Esempio.png
Views:	1
Size:	26.1 KB
ID:	149068
                    Last edited by Smash; 30-10-13, 14:26.

                    Comment

                    • Francario Massimiliano
                      Administrator
                      • Jul 2008
                      • 1033

                      #11
                      Salve Massimo,
                      Originariamente Scritto da maxmax68
                      Smash, probabilmente mi sono espresso male.
                      Nello specifico caso, viste le poche righe di codice,
                      tanto vale scrivere un unico script.
                      Nessuno mette in dubbio l\'importanza fondamentale delle funzioni, ed è per questo che ho chiesto lumi a Max.
                      -
                      Per vedere di capire dov\'è il problema con la funzione che avevo scritto originariamente !!!
                      Perché non può ricevere un vettore come argomento ?
                      In attesa di risposta.
                      Saluti
                      Massimo
                      la possibilità di utilizzare dei vettori come argomenti di funzioni create dagli utenti è in corso di lavorazione.

                      Max Francario
                      Manuale di beeTrader
                      Manuale di Fiuto Beta

                      Comment

                      • maxmax68
                        Senior Member

                        • Sep 2013
                        • 186

                        #12
                        Originariamente Scritto da Francario Massimiliano
                        Salve Massimo,

                        la possibilità di utilizzare dei vettori come argomenti di funzioni create dagli utenti è in corso di lavorazione.

                        Max Francario
                        Ok, aspetteremo le future migliorie, e magari la versione imperativa.
                        Tiziano rileggiti i miei post e vedrai che forse avevo visto lungo.
                        Saluti
                        Massimo

                        Comment

                        • Cagalli Tiziano
                          Senior Member
                          • Dec 2007
                          • 11252

                          #13
                          Originariamente Scritto da maxmax68
                          Ok, aspetteremo le future migliorie, e magari la versione imperativa.
                          Tiziano rileggiti i miei post e vedrai che forse avevo visto lungo.
                          Saluti
                          Massimo
                          Grazie Massimo,
                          tu chiedi delle caratteristiche e noi le mettiamo indipendentemente dal decidere di fare una versione imperativa.

                          Tu hai chiesto una cosa che abbiamo già (ti allego uno stamp), sarà a tua disposizione nella prossima release perchè le richieste degli utenti sono prioritarie.

                          Per chi ha ragione o meno, figurati...non è questa la questione perchè non siamo ne io e nemmeno tu a fare il mercato.

                          Ti dico, a supporto della mia tesi, che gli utenti, ad oggi più di duecento, ci scrivono che sono soddisfatti del prodotto.

                          Chi chiede delle cose in più sei tu ed io ne prendo atto e te le fornisco subito perchè sei un mio Cliente e sono certo che lo apprezzerai.

                          Ma da questo a cambiare il progetto ....
                          File Allegati
                          ..se corri dietro a due lepri, non ne prendi nemmeno una.

                          Comment

                          • maxmax68
                            Senior Member

                            • Sep 2013
                            • 186

                            #14
                            Originariamente Scritto da Cagalli Tiziano
                            Grazie Massimo,
                            tu chiedi delle caratteristiche e noi le mettiamo indipendentemente dal decidere di fare una versione imperativa.

                            Tu hai chiesto una cosa che abbiamo già (ti allego uno stamp), sarà a tua disposizione nella prossima release perchè le richieste degli utenti sono prioritarie.

                            Per chi ha ragione o meno, figurati...non è questa la questione perchè non siamo ne io e nemmeno tu a fare il mercato.

                            Ti dico, a supporto della mia tesi, che gli utenti, ad oggi più di duecento, ci scrivono che sono soddisfatti del prodotto.

                            Chi chiede delle cose in più sei tu ed io ne prendo atto e te le fornisco subito perchè sei un mio Cliente e sono certo che lo apprezzerai.

                            Ma da questo a cambiare il progetto ....
                            Grazie a te Tiziano e al team per la disponibilità, certo che apprezzo, eccome !!!
                            -
                            E certo, ho notato che nel forum è tutto un sbellicarsi di mani per la claque,
                            però purtroppo ho il difetto di usare la lingua per critiche costruttive ...
                            -
                            Saluti
                            Massimo

                            Comment

                            Working...