Pagina 1 di 2 12 Ultima
Risultati da 1 a 10 di 14
  1. #1

    Data Registrazione
    Sep 2013
    Località
    Monza
    Messaggi
    186

    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))

  2. #2

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Citazione Originariamente Scritto da maxmax68 Visualizza Messaggio
    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:

    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:

    # 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:

    #
    # 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
    Ultima modifica di Smash; 30-10-13 alle 11:49

  3. #3

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Dimenticavo:
    mi sembra che sia stato corretto il bug della divisione per zero
    e non serve più aggiungere 0.0000001 !!!

  4. #4

    Data Registrazione
    Sep 2013
    Località
    Monza
    Messaggi
    186
    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

  5. #5

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Citazione Originariamente Scritto da maxmax68 Visualizza Messaggio
    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!

  6. #6
    L'avatar di Francario Massimiliano
    Data Registrazione
    Jul 2008
    Messaggi
    1,002
    Salve Massimo,
    Citazione Originariamente Scritto da maxmax68 Visualizza Messaggio
    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

  7. #7
    L'avatar di Andrea Cagalli
    Data Registrazione
    Oct 2010
    Località
    Svizzera
    Messaggi
    3,994
    Citazione Originariamente Scritto da Smash Visualizza Messaggio
    Ciao Massimo,

    l'errore è qui:

    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:

    # 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:

    #
    # 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!!!

  8. #8

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Troppo buoni !!!

    Grazie!

  9. #9

    Data Registrazione
    Sep 2013
    Località
    Monza
    Messaggi
    186
    Citazione Originariamente Scritto da Smash Visualizza Messaggio
    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
    Ultima modifica di maxmax68; 30-10-13 alle 13:38

  10. #10

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Citazione Originariamente Scritto da maxmax68 Visualizza Messaggio
    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!

    Clicca sull'immagine per ingrandirla

Nome: Esempio.png
Visite: 26
Dimensione: 26.1 KB
ID: 12506
    Ultima modifica di Smash; 30-10-13 alle 14:26

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Contattaci

Chiama gli esperti
+39 0425 792923

Chiamaci
Email

Richiedi informazioni via E-MAIL
info@playoptions.it

Scrivici
Nostri Uffici

Vieni a trovarci
45100 Rovigo

Contattaci

Serve Aiuto?

Contattaci per maggiori informazioni.

Denis MorettoSpecialista Finanziario
Contattaci
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.