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

    Data Registrazione
    Feb 2013
    Località
    Verona/Vicenza
    Messaggi
    154

    plottaggio evolventi paraboliche sul grafico

    Salve a tutti!

    Stavo provando a trasporre in Easyscript una macro che avevo fatto con excel per il tracciamento delle evolventi paraboliche di Cantore.
    Le evolventi paraboliche, così come ampiamente illustrato da Corrado Cantore, possono rappresentare graficamente un andamento più aderente alla realtà rispetto alle trendline classiche.

    Anni fa avevo fatto un foglio excel con una macro che mi tracciava sul grafico proprio queste curve.
    Lo sviluppo della macro parte dall'individuazione dei 3 punti dai quali far passare la parabola, per i quali necessitano le coordinate x e y.
    La coordinata X è rappresentata dal numero della barra sul grafico, la coordinata Y dal valore del minimo per la prima parabola e dal valore del massimo per la seconda parabola.

    Non essendo possibile in excel catturare le coordinate del puntatore su un grafico (se non con parecchie linee di codice), nè con Easyscript, dobbiamo fare il tutto un po' artigianalmente....
    Con il puntatore ci si sposta sul grafico fino ad individuare la barra dalla quale fare passare la parabola e ci si segna il numero della barra corrispondete.
    Questo per i 3 punti della prima parabola e per gli ulteriori 3 punti della seconda parabola.
    Il programma, a questo punto, conteggia quante barre sono presenti sul grafico e da questo numero sottrae il numero rilevato con il puntatore sul grafico al fine di individuare il numero di elemento corrispondente nei vettori LOW e HIGH (ricordiamo infatti che nei vettori la numerazione è al contrario!!!!).
    Una volta impostati i riferimenti X, va a leggere i corrispondenti valori LOW o HIGH per determinare le coordinate Y di ciascun punto.

    Questo il primo pezzo di codice:

    # evolventi paraboliche
    
    #x1,x2,x3 sono le coordinate x dei 3 punti considerati della parabolica 1
    #xx1,xx2,xx3 sono le coordinate x dei 3 punti considerati della parabolica 2
    #praticamente mi sposto con il puntatore sul grafico e leggo il numero della barra da cui voglio fare
    #passare la parabolica 
    
    INPUTS: @X1(1),@X2(1),@X3(1),@XX1(1),@XX2(1),@XX3(1)
    
    #conta le barre presenti sul grafico
    
    SET conta = BARLOOP(1,1,ADD,1,NAN,NAN)
    set contacorretto = conta + 1
    
    #imposta il valore corretto della x della barra per considerare il fatto che l'indicizzazione del vettore è al contrario
    set numbar1 = contacorretto - @X1
    set numbar2 = contacorretto - @X2
    set numbar3 = contacorretto - @X3
    set numbar4 = contacorretto - @XX1
    set numbar5 = contacorretto - @XX2
    set numbar6 = contacorretto - @XX3
    
    #imposta la coordinata y della barra considerata pari al valore di chiusura
    set Y1 = REF(LOW, numbar1)
    set Y2 = REF(LOW, numbar2)
    set Y3 = REF(LOW, numbar3)
    set YY1 = REF(LOW, numbar4)
    set YY2 = REF(LOW, numbar5)
    set YY3 = REF(LOW, numbar6)
    
    #svolgimento dei determinanti della matrice per la soluzione del sistema di 3 equazioni

    Qui nascono i primi problemi:

    1) non ho una funzione nativa per il conteggio delle barre sul grafico! Su suggerimento di Smash e Maxmax68 ho provato ad utilizzare le funzioni BARLOOP o LASTIF ma il dato che ottengo non è corretto in quanto da prove effettuate su un timeframe day mi conteggia una barra in meno, nel timeframe a 5 minuti me lo conteggia corretto....

    2)così come scritto il codice sopra riportato, viene generato un errore al momento della verifica di correttezza della sintassi del tipo: Error: REF() function reference periods outside of allowed range

    Suggerimenti per andare avanti con questo progettino???

    Questo è quello che avevo fatto con excel:

    Clicca sull'immagine per ingrandirla

Nome: evolventiexcel.JPG
Visite: 22
Dimensione: 187.7 KB
ID: 12656

    Grazie a tutti!!!

    Beppe

  2. #2

    Data Registrazione
    Mar 2011
    Messaggi
    715
    ciao,
    leggo con molto interesse quanto hai scritto anche perchè non ero a conoscenza di questo studio.

    Provo ad iniziare ad aiutarti.
    Non mi sembra ci sia ancora un "barcount" su EasyScript...anche se dopo questo posto sicuramente lo inseriranno.

    Però puoi intanto proseguire utilizzando la funzione countif.
    Conta per quante barre è successa una condizione.
    Se tu come condizione ne inserisci una che è sempre vera dalla prima barra del grafico sino all'ultima dovresti avere il numero delle barre progressive e cioè ad esempio High > Low

    Mentre non riesco ad aiutarti per il problema del REF

  3. #3

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Citazione Originariamente Scritto da masterci Visualizza Messaggio
    Salve a tutti!

    Stavo provando a trasporre in Easyscript una macro che avevo fatto con excel per il tracciamento delle evolventi paraboliche di Cantore.
    Le evolventi paraboliche, così come ampiamente illustrato da Corrado Cantore, possono rappresentare graficamente un andamento più aderente alla realtà rispetto alle trendline classiche.

    Anni fa avevo fatto un foglio excel con una macro che mi tracciava sul grafico proprio queste curve.
    Lo sviluppo della macro parte dall'individuazione dei 3 punti dai quali far passare la parabola, per i quali necessitano le coordinate x e y.
    La coordinata X è rappresentata dal numero della barra sul grafico, la coordinata Y dal valore del minimo per la prima parabola e dal valore del massimo per la seconda parabola.

    Non essendo possibile in excel catturare le coordinate del puntatore su un grafico (se non con parecchie linee di codice), nè con Easyscript, dobbiamo fare il tutto un po' artigianalmente....
    Con il puntatore ci si sposta sul grafico fino ad individuare la barra dalla quale fare passare la parabola e ci si segna il numero della barra corrispondete.
    Questo per i 3 punti della prima parabola e per gli ulteriori 3 punti della seconda parabola.
    Il programma, a questo punto, conteggia quante barre sono presenti sul grafico e da questo numero sottrae il numero rilevato con il puntatore sul grafico al fine di individuare il numero di elemento corrispondente nei vettori LOW e HIGH (ricordiamo infatti che nei vettori la numerazione è al contrario!!!!).
    Una volta impostati i riferimenti X, va a leggere i corrispondenti valori LOW o HIGH per determinare le coordinate Y di ciascun punto.

    Questo il primo pezzo di codice:

    # evolventi paraboliche
    
    #x1,x2,x3 sono le coordinate x dei 3 punti considerati della parabolica 1
    #xx1,xx2,xx3 sono le coordinate x dei 3 punti considerati della parabolica 2
    #praticamente mi sposto con il puntatore sul grafico e leggo il numero della barra da cui voglio fare
    #passare la parabolica 
    
    INPUTS: @X1(1),@X2(1),@X3(1),@XX1(1),@XX2(1),@XX3(1)
    
    #conta le barre presenti sul grafico
    
    SET conta = BARLOOP(1,1,ADD,1,NAN,NAN)
    set contacorretto = conta + 1
    
    #imposta il valore corretto della x della barra per considerare il fatto che l'indicizzazione del vettore è al contrario
    set numbar1 = contacorretto - @X1
    set numbar2 = contacorretto - @X2
    set numbar3 = contacorretto - @X3
    set numbar4 = contacorretto - @XX1
    set numbar5 = contacorretto - @XX2
    set numbar6 = contacorretto - @XX3
    
    #imposta la coordinata y della barra considerata pari al valore di chiusura
    set Y1 = REF(LOW, numbar1)
    set Y2 = REF(LOW, numbar2)
    set Y3 = REF(LOW, numbar3)
    set YY1 = REF(LOW, numbar4)
    set YY2 = REF(LOW, numbar5)
    set YY3 = REF(LOW, numbar6)
    
    #svolgimento dei determinanti della matrice per la soluzione del sistema di 3 equazioni

    Qui nascono i primi problemi:

    1) non ho una funzione nativa per il conteggio delle barre sul grafico! Su suggerimento di Smash e Maxmax68 ho provato ad utilizzare le funzioni BARLOOP o LASTIF ma il dato che ottengo non è corretto in quanto da prove effettuate su un timeframe day mi conteggia una barra in meno, nel timeframe a 5 minuti me lo conteggia corretto....

    2)così come scritto il codice sopra riportato, viene generato un errore al momento della verifica di correttezza della sintassi del tipo: Error: REF() function reference periods outside of allowed range

    Suggerimenti per andare avanti con questo progettino???

    Questo è quello che avevo fatto con excel:

    Clicca sull'immagine per ingrandirla

Nome: evolventiexcel.JPG
Visite: 22
Dimensione: 187.7 KB
ID: 12656

    Grazie a tutti!!!

    Beppe

    Ciao Beppe,

    riguardo all'errore sulla funzione REF, potresti aggirare il problema ad esempio in questo modo:

    # evolventi paraboliche
     
    #x1,x2,x3 sono le coordinate x dei 3 punti considerati della parabolica 1
    #xx1,xx2,xx3 sono le coordinate x dei 3 punti considerati della parabolica 2
    #praticamente mi sposto con il puntatore sul grafico e leggo il numero della barra da cui voglio fare
    #passare la parabolica 
     
    INPUTS: @X1(1),@X2(1),@X3(1),@XX1(1),@XX2(1),@XX3(1)
     
    #conta le barre presenti sul grafico
     
    SET conta = BARLOOP(1,1,ADD,1,NAN,NAN)
    set contacorretto = conta + 1
     
    #imposta la coordinata y della barra considerata pari al valore di Low
    SET Y1 = CHANGEIF(contacorretto = @X1, LOW)
    SET Y2 = CHANGEIF(contacorretto = @X2, LOW)
    SET Y3 = CHANGEIF(contacorretto = @X3, LOW)
    SET YY1 = CHANGEIF(contacorretto = @XX1, LOW)
    SET YY2 = CHANGEIF(contacorretto = @XX2, LOW)
    SET YY3 = CHANGEIF(contacorretto = @XX3, LOW)
    Ricordati però che Y1, Y2, Y3, YY1, YY2, YY3 sono sempre dei vettori, e che il valore che ti interessa memorizzare ce l'avresti di sicuro sull'ultimo elemento!

    Potresti spiegare meglio come intendi usare i parametri di INPUT?
    Potrebbe esserci il problema che se da un giorno all'altro la prima barra del tuo grafico cambiasse, allora ogni volta che apri il grafico dovresti riimpostarli tutti a mano ....

  4. #4

    Data Registrazione
    Sep 2013
    Località
    Monza
    Messaggi
    186
    Ciao Beppe,
    in attesa di capire come continua il codice, e cosa devi farci con le coordinate,
    e sempre considerando che stiamo facendo le cose artigianalmente, ovvero input manuale,
    perché per semplificarci la vita non immettiamo manualmente anche i valori Y ???
    Saluti
    Massimo

  5. #5

    Data Registrazione
    Feb 2013
    Località
    Verona/Vicenza
    Messaggi
    154
    Ciao Smash!
    Ho pensato che invece di fare rilevare il valore della coordinata Y come valore HIGH o LOW della candela preferisco inserirlo a mano come facevo con excel.
    Questo sia per dare la possibilità di generare la parabola in qualsiasi punto, sia per non vincolare le due parabole alla costruzione di un canale, sia per superare il problema di codice!!!

    Lo studio delle evolventi paraboliche di Corrado Cantore (secondo me molto interessante) prevede, infatti, la costruzione di canali di prezzo racchiusi tra due parabole, sia la costruzione di singole parabole in sostituzione delle trendline.
    Cantore ha rilevato che una parabola rappresenta molto meglio la tendenza dei prezzi rispetto a una linea retta e ha determinato la variazione di un trend come rottura al ribasso della parabola inferiore o al rialzo della parabola superiore.

    Ecco un esempio:

    Clicca sull'immagine per ingrandirla

Nome: Cattura.JPG
Visite: 4
Dimensione: 94.1 KB
ID: 12674

    Quella che sembra una linea retta nera in realtà è una parabola molto schiacciata che rappresenta il trend primario.
    Le parabole fucsia e rossa rappresentano un canale.
    Se noti, la parabola rosa passante per i primi 3 massimi decrescenti ha contenuto perfettamente il quarto massimo dove il prezzo è rimbalzato!

    Se avessi tracciato una linea il risultato sarebbe stato questo:

    Clicca sull'immagine per ingrandirla

Nome: Cattura2.jpg
Visite: 4
Dimensione: 133.3 KB
ID: 12675

    Che come vedi è parecchio diverso come risultato!!

    Cerco di spiegarmi per farti capire come funziona la cosa.

    Il concetto si basa sul fatto che per 3 punti passa solo 1 parabola nella forma y=ax^2 + bx + c.
    Sostituendo le coordinate di 3 punti noti si ottiene un sistema lineare di 3 equazioni in 3 incognite che si risolve con il metodo di Cramer (determinante della matrice dei coefficienti, determinate Dx, Dy e Dz quindi x,y,z, ecc.....)

    Le coordinate dei 3 punti noti sono Xn= numero della barra n; Yn= prezzo (a questo punto quello che voglio io) della barra n.
    Io con excel avevo creato un foglio (molto rudimentale!!!) con il grafico che mi interessava.
    Mi spostavo con il mouse sul grafico andando a rilevare le coordinate dei punti notevoli da cui volevo far passare la parabola (se provi con un grafico excel vedi che si apre una finestrella che ti riporta il valore X inteso come numero del punto e il valore Y che è il prezzo).
    Prendevo nota delle coordinate dei 3 punti che riportavo sul foglio stesso e con delle semplici formule facevo risolvere le 3 equazioni per la determinazione dei coefficienti A, B e C che sostituivo nella funzione della parabola.
    A questo punto con una routine in VBA facevo generare tutti i punti della parabola che poi facevo plottare sul grafico!!!

    Guarda è più incasinato a spiegarlo che a farlo!!!!!
    Comunque se vuoi ti mando per email il foglio excel così forse ti è molto più chiaro.......

    L'idea, adesso, è di ricreare la stessa cosa su Beetrade!!!!

    Una cosa che non avevo considerato, ad esempio, è proprio il fatto che il mio era un grafico statico mentre questo è dinamico, quindi se chiudi e riapri la finestra il calcolo è da rifare....

    Mi piace la sfida e sono sicuro che con l'aiuto di tutti la cosa può essere fattibile!!!!

    Beppe

  6. #6

    Data Registrazione
    Feb 2013
    Località
    Verona/Vicenza
    Messaggi
    154
    Max mi hai anticipato di un soffio!!!!!!

  7. #7

    Data Registrazione
    Sep 2013
    Località
    Monza
    Messaggi
    186
    Beppe,
    per cortesia fammi capire quello che vuoi ottenere in beeTrader.
    Solo il plottaggio delle parabole o anche il calcolo dei coefficienti ?
    Inoltre, così ad occhio, detto da uno che di matematica oramai ne ricorda ben poca,
    se lavori con l'input manuale devi plottare sul grafico statico di fine giornata.
    Se lavori su un grafico dinamico, ad ogni nuova barra ti si sposta la X, quindi dovresti reimmettere
    i valori corretti, e bisognerebbe quindi capire come gestire correttamente la cosa.
    Una bella sfida !!!

    Saluti
    Massimo

  8. #8

    Data Registrazione
    Feb 2013
    Località
    Verona/Vicenza
    Messaggi
    154
    Max l'obiettivo è il plottaggio delle parabole! I coefficienti servono per la risoluzione delle equazioni della parabola....
    Il fatto che il grafico sia dinamico, a pensarci bene, non credo che sia un problema perche il numero della barra sul grafico è univoco anche se si aggiungono barre nuove!!!
    Mumble mumble...... sto iniziando a buttare giù qualcosa e vediamo cosa viene fuori!!!!

    Certo che risolvere i determinanti delle matrici a mano, ossia facendo tutti i passaggi, è da tagliarsi le vene!!!!
    Con excel basta la funzione MATR.DETERM().....

    Ma a noi piacciono le sfide e quindi sono sicuro che arriveremo alla fine!!!!!!

  9. #9

    Data Registrazione
    Feb 2013
    Località
    Verona/Vicenza
    Messaggi
    154
    Ho sviluppato i calcoli.....

    Adesso mi serve una mano per plottare la funzione!!!! Voglio i cicli for...next!!!!!!!!!!!!

    # evolventi paraboliche
    
    INPUTS: @X1(1),@Y1(1),@X2(1),@Y2(1),@X3(1),@Y3(1),@XX1(1),@YY1(1),@XX2(1),@YY2(1),@XX3(1),@YY3(1)
    
    
    SET conta = LASTIF(CLOSE < 0)
    SET contacorretto = conta + 1
    
    #SET plot1 = conta
    
    #imposta il valore corretto della x della barra per considerare il fatto che l'indicizzazione del vettore è al contrario
    
    set nb1 = contacorretto - @X1
    set nb2 = contacorretto - @X2
    set nb3 = contacorretto - @X3
    set nb4 = contacorretto - @XX1
    set nb5 = contacorretto - @XX2
    set nb6 = contacorretto - @XX3
    
    #risolvo i determinanti delle matrici
    
    set DETD = SQUARE(@X1) * @X2 + @X1 * SQUARE(@X3) + SQUARE(@X2) * @X3 - @X2 * SQUARE(@X3) - @X3 * SQUARE(@X1) - SQUARE(@X2) * @X1
    SET DETDX = @Y1 * @X2 + @X1 * @Y3 + @Y2 * @X3 - @Y3 * @X2 - @X3 * @Y1 - @Y2 * @X1
    SET DETDY = SQUARE(@X1) * @Y2 + @Y1 * SQUARE(@X3) + SQUARE(@X2) * @Y3 - SQUARE(@X3) * @Y2 - @Y3 * SQUARE(@X1) - SQUARE(@X2) * @Y1
    SET DETDZ = SQUARE(@X1) * @X2 * @Y3 + @X1 * @Y2 * SQUARE(@X3) + @Y1 * SQUARE(@X2) * @X3 - SQUARE(@X3) * @X2 * @Y1 - @X3 * @Y2 * SQUARE(@X1) - @Y3 * SQUARE(@X2) * @X1
    
    #determino i coefficienti dell'equazione
    
    SET A = DETDX / DETD
    SET B = DETDY / DETD
    SET C = DETDZ / DETD
    
    #plotta la funzione y=AX^2+BX+C con X il numero della barra da 1 a n.
    #praticamente mi serve questo:
    #
    # for x = 1 to n     (con n=numero barre)
    #       Y=ax^2+bx+c
    #       plot Y
    # next x
    Risolto questo dovremmo riuscire a plottare la prima parabola!!!
    Anche se non sono convinto del conteggio del numero delle barre perchè secondo me LASTIF usato così non conta giusto!!!
    Provate a eseguire il primo pezzo di codice (solo il conteggio delle barre) su un grafico giornaliero di 10 barre e vedrete che ne conta 9.....

  10. #10

    Data Registrazione
    Jan 2011
    Località
    Genova
    Messaggi
    1,306
    Citazione Originariamente Scritto da masterci Visualizza Messaggio
    Ho sviluppato i calcoli.....

    Adesso mi serve una mano per plottare la funzione!!!! Voglio i cicli for...next!!!!!!!!!!!!

    #plotta la funzione y=AX^2+BX+C con X il numero della barra da 1 a n.
    #praticamente mi serve questo:
    #
    # for x = 1 to n (con n=numero barre)
    # Y=ax^2+bx+c
    # plot Y
    # next x
    non credo proprio invece, devi solo abituarti a ragionare vettorialmente, questo non è un caso in cui occorrono i cicli. Basta che scrivi qualcosa tipo:

    x = BarIndex();

    parab = A*x^2 + B*x + C;

    Plot(parab,"parab",colorBlue, styleOwnScale | styleLine );

    dove BarIndex() rappresenta il tuo vettore contenente il conteggio delle barre che, se ho capito bene, è contacorretto

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.