Capire Excel e integrarlo con VBA (1 Viewer)

ender85

Forumer attivo
Ciao a tutti, mi sto cimentando con excel per costruire i ts.

La mia idea era di costruire una libreria di indicatori/oscillatori in vba da riutilizzare facilemente in altri ts.
Ho un pò di problemi a capire l'utilizzo dei Nomi e di come usare i riferimenti relativi delle funzioni.
Facciamo un esempio: il
True Range (per costruire l'ATR)
A B C D E
|----|----|---|-----|----|
1 |open|high|low|close| TR |

-----------------------------
2 | 20 | 25 | 19 | 22 | ????|
-----------------------------
In E2 se volessi scrivere una formula excel scriverei:
=MAX(B2-C2;ASS(D2-B2);ASS(D2-C2))
Ma io vorrei scrivere una cosa del tipo:
=tr(close,high,low)
e che excel capisca automaticamente di andare a prendere i valori close, high e low nelle celle corrette sulla stessa riga.

Come devo impostare i NOMI sulle celle e come devo dichiarare la funzione per far si che poi funzioni anche sulle altre celle successive?

L'idea finale sarebbe di creare una libreria di funzioni per far diventare excel
una vera piattaforma di trading system senza dover scrivere troppo codice.

Grazie a chi mi risponderà.
 

Pek

Forumer storico
Ciao a tutti, mi sto cimentando con excel per costruire i ts.

La mia idea era di costruire una libreria di indicatori/oscillatori in vba da riutilizzare facilemente in altri ts.
Ho un pò di problemi a capire l'utilizzo dei Nomi e di come usare i riferimenti relativi delle funzioni.
Facciamo un esempio: il
True Range (per costruire l'ATR)
A B C D E
|----|----|---|-----|----|
1 |open|high|low|close| TR |

-----------------------------
2 | 20 | 25 | 19 | 22 | ????|
-----------------------------
In E2 se volessi scrivere una formula excel scriverei:
=MAX(B2-C2;ASS(D2-B2);ASS(D2-C2))
Ma io vorrei scrivere una cosa del tipo:
=tr(close,high,low)
e che excel capisca automaticamente di andare a prendere i valori close, high e low nelle celle corrette sulla stessa riga.

Come devo impostare i NOMI sulle celle e come devo dichiarare la funzione per far si che poi funzioni anche sulle altre celle successive?

L'idea finale sarebbe di creare una libreria di funzioni per far diventare excel
una vera piattaforma di trading system senza dover scrivere troppo codice.

Grazie a chi mi risponderà.

http://office.microsoft.com/it-it/excel/HA010548461040.aspx
 

ender85

Forumer attivo

Grazie Pek dell'interessamento, ma il mio problema è l'uso dei NOMI che non mi è ben chiaro in excel.
Io non voglio passare gli indirizzi delle celle alle funzioni come nel tuo link, io voglio passare riferimenti relativi.

esempio:

=tr(close,high,low)

Voglio che excel capisca automaticamente di andare a prendere i valori close, high e low nelle celle corrette sulla stessa riga.

Come devo impostare i NOMI sulle celle e come devo dichiarare la funzione per far si che poi funzioni anche sulle altre celle successive?

Grazie
 

Pek

Forumer storico
Grazie Pek dell'interessamento, ma il mio problema è l'uso dei NOMI che non mi è ben chiaro in excel.
Io non voglio passare gli indirizzi delle celle alle funzioni come nel tuo link, io voglio passare riferimenti relativi.

esempio:

=tr(close,high,low)

Voglio che excel capisca automaticamente di andare a prendere i valori close, high e low nelle celle corrette sulla stessa riga.

Come devo impostare i NOMI sulle celle e come devo dichiarare la funzione per far si che poi funzioni anche sulle altre celle successive?

Grazie

Non ti seguo
Se scrivi ad esempio close in A1,high in B1,low in C1
poi
in D4 =close+high+low ottiene la somma delle celle A4+B4+C4

Per usare invece una nuova funzione tr() devi definirla in VBA
 

ender85

Forumer attivo
Non ti seguo
Se scrivi ad esempio close in A1,high in B1,low in C1
poi
in D4 =close+high+low ottiene la somma delle celle A4+B4+C4

Per usare invece una nuova funzione tr() devi definirla in VBA
Certo Pek io avevo bisogno di un mano sull'utilizzo dei NOMI in excel.
I Nomi sono la possibilità di assegnare dei nomi relativi agli indirizzi a delle celle o ad un range di celle. Solo che non sò come usarli in VBA!
 

Pek

Forumer storico
Certo Pek io avevo bisogno di un mano sull'utilizzo dei NOMI in excel.
I Nomi sono la possibilità di assegnare dei nomi relativi agli indirizzi a delle celle o ad un range di celle. Solo che non sò come usarli in VBA!

Non so bene come gestire i nomi,mi sono sempre stati antipatici

Secondo me una volta definita una funzione Tr(Close,High,Low) in VBA
è molto più trasparente chiamarla con riferimenti di colonna ad es:
Tr(B1;C1;D1) e trascinarla in basso
 

cammello

Forumer storico
Non so bene come gestire i nomi,mi sono sempre stati antipatici

Secondo me una volta definita una funzione Tr(Close,High,Low) in VBA
è molto più trasparente chiamarla con riferimenti di colonna ad es:
Tr(B1;C1;D1) e trascinarla in basso


però se sposta i valori in altre celle non funziona più.

Seleziona una cella, vai in alto a sinistra dove trovi, per esempio A1 o C4 (è a sx della barra delle formule), scrivici sopra il nome che vuoi dare, p.es Daily_Max.

Poi la chiami come una normale formula funzione, tipo = Daily_Max.
Sul ribbon formule hai il Name Manager, col tasto destro hai il "Name a Range".
Occhio a non usare nomi riservati ;)

C
 

ender85

Forumer attivo
Seleziona una cella, vai in alto a sinistra dove trovi, per esempio A1 o C4 (è a sx della barra delle formule), scrivici sopra il nome che vuoi dare, p.es Daily_Max.

Poi la chiami come una normale formula funzione, tipo = Daily_Max.
Sul ribbon formule hai il Name Manager, col tasto destro hai il "Name a Range".
Occhio a non usare nomi riservati ;)

C

Ok capito, però come faccio a dire di usare il valore contenuto nel range (colonna C) OPEN alla riga 3 quando passo la variabile alla funzione vba?
 

cammello

Forumer storico
Ok capito, però come faccio a dire di usare il valore contenuto nel range (colonna C) OPEN alla riga 3 quando passo la variabile alla funzione vba?

Sub test_name()


MsgBox Range("Daily_Max").Value

End Sub

Oppure crei una variabile
Dim v_Daily_Max as double

v_Dailiy_Max = Range("Daily_Max").Value

ecc ecc
C
 

Users who are viewing this thread

Alto