Pagina 1 di 2 12 Ultima
  1. #1

    Data Registrazione
    Dec 2009
    Messaggi
    811

    Chiarimento funzione GlobalVar

    Ciao ragazzi, come da manuale ho provato a creare un semplice indicatore che mi riporta la EMA a 30 minuti sul chart a 15 minunti ma a quanto sembra la lettura è corretta solo per l'ultima barra disegnata perché analizzando lo storico non trovo corrispondenza. Cosa stò sbagliando?

    Allego screen che mostra la verifica del valore delle EMA alle 17:30 del 27/08/2014
    Screenshot 2014-08-31 13.24.37.jpg

    Questo è lo script per il chart a 30 minuti
    INPUTS: @price(CLOSE), @periods(14)
    
    
    SET EMA1 = EMA(@price, @periods)
    SetGlobalVar(1, EMA1)
    set PLOT1 = EMA1
    Questo per il chart a 15 minuti dove riporto la EMA a 30 minuti
    SET PLOT1 = GetGlobalVar(1)

  2. #2
    L'avatar di Francario Massimiliano
    Data Registrazione
    Jul 2008
    Messaggi
    730
    Salve,

    Citazione Originariamente Scritto da CIVT Visualizza Messaggio
    Ciao ragazzi, come da manuale ho provato a creare un semplice indicatore che mi riporta la EMA a 30 minuti sul chart a 15 minunti ma a quanto sembra la lettura è corretta solo per l'ultima barra disegnata perché analizzando lo storico non trovo corrispondenza. Cosa stò sbagliando?

    Allego screen che mostra la verifica del valore delle EMA alle 17:30 del 27/08/2014
    Screenshot 2014-08-31 13.24.37.jpg

    ....
    Nell'immagine allegata non noto alcuna anomalia, la curva della EMA a 30 minuti è esattamente uguale nei due chart.
    Le funzioni SetGlobalVar e GetGlobalVar NON trasformano in alcun modo i dati, cioè non applicano alcun raggruppamento o suddivisione per adattare i vettori ai diversi timeframe.

    Max Francario

  3. #3

    Data Registrazione
    Dec 2009
    Messaggi
    811
    Citazione Originariamente Scritto da Francario Massimiliano Visualizza Messaggio
    Salve,



    Nell'immagine allegata non noto alcuna anomalia, la curva della EMA a 30 minuti è esattamente uguale nei due chart.
    Le funzioni SetGlobalVar e GetGlobalVar NON trasformano in alcun modo i dati, cioè non applicano alcun raggruppamento o suddivisione per adattare i vettori ai diversi timeframe.

    Max Francario
    Grazie della risposta MAX, quindi non posso utilizzare questo sistema per fare backtest? Vorrei costruire uno script che mi permette di analizzare i BT utilizzando lo Z-Score di due titoli in overspread....Mi confermi invece che l'ultima barra la posso utilizzare come segnale di ingresso/uscita all'interno di un eventuale script? Se la risposta è affermativa dovrei lanciare due script in parallello per poter utilizzare il GetGlobalVar, eventualmente potresti suggerirmi come fare?

  4. #4
    L'avatar di Francario Massimiliano
    Data Registrazione
    Jul 2008
    Messaggi
    730
    Salve,
    Citazione Originariamente Scritto da CIVT Visualizza Messaggio
    Grazie della risposta MAX, quindi non posso utilizzare questo sistema per fare backtest? Vorrei costruire uno script che mi permette di analizzare i BT utilizzando lo Z-Score di due titoli in overspread....Mi confermi invece che l'ultima barra la posso utilizzare come segnale di ingresso/uscita all'interno di un eventuale script? Se la risposta è affermativa dovrei lanciare due script in parallello per poter utilizzare il GetGlobalVar, eventualmente potresti suggerirmi come fare?
    il backtest con GetGlobalVar funziona perfettamente nel caso si usino 2 chart su strumenti diversi ma con lo stesso timeframe.
    Per il backtest su timeframe diversi, bisogna considerare quanto scritto sopra, e cioè che le funzioni SetGlobalVar e GetGlobalVar non "trasformano" i dati in nessun modo per adattarli ai diversi timeframe. In questi casi, alcune volte è sufficiente usare un numero diverso di periodi nel calcolo degli indicatori per ottenere lo stesso risultato.

    Per esempio, supponendo di avere un Chart a 5 minuti con applicato uno script come questo:
    # MioSegnale a 5 minuti
    MioSegnale = EMA(CLOSE, 10)) > CLOSE
    Se volessimo portare la variabile MioSegnale su un chart a 15 minuti, al posto di usare SetGlobalVar/GetGlobalVar (e dover di conseguenza avere 2 chart aperti), potremmo scrivere semplicemente
    # MioSegnale a 15 minuti
    MioSegnale = EMA(CLOSE, 30) > CLOSE
    ottenendo lo stesso risultato.
    La "traduzione" da un timeframe ad un altro di uno script non sempre è così semplice, ma nella maggior parte dei casi è alla portata di chiunque.

    In ogni caso, usando GetGlobalVar l'ultimo valore è sempre corretto, cioè l'utilizzo di SetGlobalVar/GetGlobalVar è sempre e comunque corretto in una Strategy in beeTrader.

    Le funzioni SetGlobalVar e GetGlobalVar si possono utilizzare per memorizzare più di un dato alla volta, cambiando il valore del parametro ID per distinguere i diversi valori. E' quindi possibile usare anche più di 2 chart contemporaneamente ed avere segnali generati su uno di essi in base ai valori presenti in tutti gli altri.

    Max Francario

  5. #5

    Data Registrazione
    Dec 2009
    Messaggi
    811
    Citazione Originariamente Scritto da Francario Massimiliano Visualizza Messaggio
    Salve,


    il backtest con GetGlobalVar funziona perfettamente nel caso si usino 2 chart su strumenti diversi ma con lo stesso timeframe.
    Per il backtest su timeframe diversi, bisogna considerare quanto scritto sopra, e cioè che le funzioni SetGlobalVar e GetGlobalVar non "trasformano" i dati in nessun modo per adattarli ai diversi timeframe. In questi casi, alcune volte è sufficiente usare un numero diverso di periodi nel calcolo degli indicatori per ottenere lo stesso risultato.

    Per esempio, supponendo di avere un Chart a 5 minuti con applicato uno script come questo:
    # MioSegnale a 5 minuti
    MioSegnale = EMA(CLOSE, 10)) > CLOSE
    Se volessimo portare la variabile MioSegnale su un chart a 15 minuti, al posto di usare SetGlobalVar/GetGlobalVar (e dover di conseguenza avere 2 chart aperti), potremmo scrivere semplicemente
    # MioSegnale a 15 minuti
    MioSegnale = EMA(CLOSE, 30) > CLOSE
    ottenendo lo stesso risultato.
    La "traduzione" da un timeframe ad un altro di uno script non sempre è così semplice, ma nella maggior parte dei casi è alla portata di chiunque.

    In ogni caso, usando GetGlobalVar l'ultimo valore è sempre corretto, cioè l'utilizzo di SetGlobalVar/GetGlobalVar è sempre e comunque corretto in una Strategy in beeTrader.

    Le funzioni SetGlobalVar e GetGlobalVar si possono utilizzare per memorizzare più di un dato alla volta, cambiando il valore del parametro ID per distinguere i diversi valori. E' quindi possibile usare anche più di 2 chart contemporaneamente ed avere segnali generati su uno di essi in base ai valori presenti in tutti gli altri.

    Max Francario
    Grazie Max sei stato molto gentile però mi manca un ultimo passettino per arrivare a calcolare lo Z-score totale in modo corretto perchè vedo che non basta fare la semplice differenza dei due ZS singoli in quanto non mi trovo con il valore ufficiale calcolato!

    Questo è lo ZS totale calcolato per differenza dei due singoli Zs (Zs=2.86)
    ZS chart gvar.jpg

    Mentre questo è il valore ufficiale corretto (Zs=2.19)
    Tool.jpg

    Questo è il codice che ho utilizzato per calcolare lo Z-Score totale se qualcuno è così gentile da dirmi dove sbaglio ringrazio in anticipo...
    INPUTS: @ZsLow(-2), @ZsHigh(2), @zero(0.01)
    
    
    set PLOT1 =  GetGlobalVar(2) - GetGlobalVar(1)
    set plot2 = @ZsLow
    set plot3 = @ZsHigh
    SET PLOT4 = @zero
    p.s. x i matematici: Stando alla definizione di Z-Score ufficiale una alternativa può essere quella di calcolare lo Z-Score totale come la media (credo a 250 periodi) della differenza percentualizzata dei due titoli ed esprimerla in deviazioni standard sul grafico a 1500 barre.
    Ultima modifica di CIVT; 24-09-14 alle 06:15

  6. #6
    L'avatar di Cagalli Tiziano
    Data Registrazione
    Dec 2007
    Località
    Rovigo
    Messaggi
    10,047
    Citazione Originariamente Scritto da CIVT Visualizza Messaggio

    p.s. x i matematici: Stando alla definizione di Z-Score ufficiale una alternativa può essere quella di calcolare lo Z-Score totale come la media (credo a 250 periodi) della differenza percentualizzata dei due titoli ed esprimerla in deviazioni standard sul grafico a 1500 barre.
    Al primo passaggio trovi già la deviazione standard.
    Infatto il primo valore che trovi se diviso per la deviazione standard darà lo Z_Score
    ..se corri dietro a due lepri, non ne prendi nemmeno una.

  7. #7

    Data Registrazione
    Dec 2009
    Messaggi
    811
    Citazione Originariamente Scritto da Cagalli Tiziano Visualizza Messaggio
    Al primo passaggio trovi già la deviazione standard.
    Infatto il primo valore che trovi se diviso per la deviazione standard darà lo Z_Score
    Intendi dire che devo dividere la differenza dei due Z-score per la deviazione standard? Se la risposta è corretta (cosa che dubito) saresti così gentile da dirmi cosa ho sbagliato invece con il codice?

    INPUTS: @price(CLOSE), @periods(250), @deviations(2), @matype(SIMPLE)
    
    
    set ZG= GetGlobalVar(1) - GetGlobalVar(2)
    SET PLOT1 = ZG / StdDev(ZG, @periods, @deviations, @matype)
    set PLOT2 = -2
    set PLOT3 = +2
    SET PLOT4 = 0
    Grazie alle anime pie che vorranno aiutarmi!
    Ultima modifica di CIVT; 25-09-14 alle 08:54

  8. #8
    L'avatar di Francario Massimiliano
    Data Registrazione
    Jul 2008
    Messaggi
    730
    Salve,

    Citazione Originariamente Scritto da CIVT Visualizza Messaggio
    Intendi dire che devo dividere la differenza dei due Z-score per la deviazione standard? Se la risposta è corretta (cosa che dubito) saresti così gentile da dirmi cosa ho sbagliato invece con il codice?

    INPUTS: @price(CLOSE), @periods(250), @deviations(2), @matype(SIMPLE)
    
    
    set ZG= GetGlobalVar(1) - GetGlobalVar(2)
    SET PLOT1 = ZG / StdDev(ZG, @periods, @deviations, @matype)
    set PLOT2 = -2
    set PLOT3 = +2
    SET PLOT4 = 0
    Grazie alle anime pie che vorranno aiutarmi!
    se intende replicare il risultato dello Z-Score che trova nel modulo OverSpread, allora ci sono diversi passaggi da fare.
    Lo Z-Score nel modulo OverSpread è calcolato in questo modo:

    1. Calcolo del prezzo indicizzato dell'asset A
    2. Calcolo del prezzo indicizzato dell'asset B
    3. Calcolo dello spread, cioè risultato del punto 1 meno risultato del punto 2
    4. Calcolo dello Z-Score sul risultato del punto 3

    Max Francario

  9. #9

    Data Registrazione
    Dec 2009
    Messaggi
    811
    Citazione Originariamente Scritto da Francario Massimiliano Visualizza Messaggio
    Salve,



    se intende replicare il risultato dello Z-Score che trova nel modulo OverSpread, allora ci sono diversi passaggi da fare.
    Lo Z-Score nel modulo OverSpread è calcolato in questo modo:

    1. Calcolo del prezzo indicizzato dell'asset A
    2. Calcolo del prezzo indicizzato dell'asset B
    3. Calcolo dello spread, cioè risultato del punto 1 meno risultato del punto 2
    4. Calcolo dello Z-Score sul risultato del punto 3

    Max Francario
    Ma per indicizzare un asset devo percentualizzarlo? Ti mostro quello ce ho fatto vediamo se mi stò avvicinando....

    1. Calcolo del prezzo indicizzato dell'asset A
    INPUTS: @periods(250)
    SET PZERO = REF(CLOSE, @periods)
    SET PERC = (100-CLOSE)/100*100
    SetGlobalVar(1, PERC)
    SET PLOT1 = PERC

    2. Calcolo del prezzo indicizzato dell'asset B
    INPUTS: @periods(250)
    SET PZERO = REF(CLOSE, @periods)
    SET PERC = (100-CLOSE)/100*100
    SetGlobalVar(2, PERC)
    SET PLOT1 = PERC
    3. Calcolo dello spread, cioè risultato del punto 1 meno risultato del punto 2
    4. Calcolo dello Z-Score sul risultato del punto 3
    INPUTS: @price(CLOSE), @periods(250), @deviations(2), @matype(SIMPLE)
    set Diff = GetGlobalVar(2) - GetGlobalVar(1)
    SET PLOT1 = ZScore(Diff, @periods)
    set PLOT2 = -2
    set PLOT3 = +2
    SET PLOT4 = 0
    Credo che manchi ancora qualcosa perchè vedo che non sono ancora sovrapponibile le due curve

    ZS TOTALCattura.jpg

    A questo punto dopo la telefonata a casa chiederei l'aiuto del pubblico!

  10. #10

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Citazione Originariamente Scritto da CIVT Visualizza Messaggio
    Ma per indicizzare un asset devo percentualizzarlo? Ti mostro quello ce ho fatto vediamo se mi stò avvicinando....

    1. Calcolo del prezzo indicizzato dell'asset A
    INPUTS: @periods(250)
    SET PZERO = REF(CLOSE, @periods)
    SET PERC = (100-CLOSE)/100*100
    SetGlobalVar(1, PERC)
    SET PLOT1 = PERC

    2. Calcolo del prezzo indicizzato dell'asset B
    INPUTS: @periods(250)
    SET PZERO = REF(CLOSE, @periods)
    SET PERC = (100-CLOSE)/100*100
    SetGlobalVar(2, PERC)
    SET PLOT1 = PERC
    3. Calcolo dello spread, cioè risultato del punto 1 meno risultato del punto 2
    4. Calcolo dello Z-Score sul risultato del punto 3
    INPUTS: @price(CLOSE), @periods(250), @deviations(2), @matype(SIMPLE)
    set Diff = GetGlobalVar(2) - GetGlobalVar(1)
    SET PLOT1 = ZScore(Diff, @periods)
    set PLOT2 = -2
    set PLOT3 = +2
    SET PLOT4 = 0
    Credo che manchi ancora qualcosa perchè vedo che non sono ancora sovrapponibile le due curve

    ZS TOTALCattura.jpg

    A questo punto dopo la telefonata a casa chiederei l'aiuto del pubblico!

    Ed ecco il pubblico!!!

    Al punto 1 e 2 il vettore PZERO:

    - dovrebbe essere un vettore costante, mentre così come lo hai calcolato è variabile
    - credo che andrebbe determinato 1500 periodi indietro rispetto all'ultimo valore (per cui ti serve un grafico contenente almeno 1500 dati)
    - in più mi sembra che il vettore lo calcoli ma poi non lo utilizzi ...

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