Author |
Topic  |
|
kairen
Nuovo Utente
13 Posts |
Posted - 04 April 2004 : 15:31:25
|
Mi serve calcolare il coefficiente di correlazione su due serie di dati
Potere aiutarmi: Ho messo tra apici quello che vorrei fare ma attualmente non sono in grado di
'Property Data1 as Numeric() Property Data1 as Numeric Endproperty
'Property Data2 as Numeric() Property Data2 as Numeric Endproperty
Property Periodo as Numeric Default (14) Range (1, 400) Endproperty
Function Main() Dim Ix as Numeric 'Sommatoria Dati Serie 1 Dim SumD1 as Numeric = 0 'Sommatoria Dati al quadrato Serie 1 Dim SumD12 as Numeric = 0 'Sommatoria Dati Serie 2 Dim SumD2 as Numeric = 0 'Sommatoria Dati al Quadrato Serie 2 Dim SumD22 as Numeric = 0 'Sommatoria Dati Serie1*Serie2 Dim SumD1D2 as Numeric = 0 'Variabili di Comodo Dim Num as Numeric = 0 Dim Den as Numeric = 1 Dim Ret as Numeric
For Ix = 0 to Periodo - 1 Step 1 ' ' Come posso fare per calcolarle ???? ' 'SumD1 = SumD1 + Value(Data1,Ix) 'SumD2 = SumD2 + Value(Data2,Ix) 'SumD12 = SumD12 + Exp(2*log(Value(Data1, Ix))) 'SumD22 = SumD12 + Exp(2*log(Value(Data2, Ix))) 'SumD1D2 = SumD1D2 + Value(Data1,Ix)*Value(Data2,Ix) Next Ix
Num = (SumD1D2 - ((1 / Periodo) * SumD1 * SumD2)) Den = (Sumd12 - (1 / Periodo) * exp(2 * log(SumD12)) * SumD22 - (1 / Periodo) * exp(2 * log(SumD12))) Den = Exp(0.5 * log(Den)) Ret = Num / Den Return Exp(2 * log(Ret)) Endfunction
grazie anticipatamente a chi pu? darmi una mano
Kairen Luca G.
Modificato da - kairen il 04 Aprile 2004 15:33:04 |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 04 April 2004 : 16:34:39
|
Una Property non pu? essere un array.
Quindi non puoi scrivere una cosa del genere:
Property Data1 as Numeric()
Che tipo di dati dovrebbero rappresentare Data1 e Data2? indicatori? uno dei valori fondamentali? apertura, chiusura, massimo, minimo ecc..?
La soluzione ? gestire Data1 e Data2 all'interno della funzione Main magari assegnado loro dei valori diversi a seconda del valore di una Property utilizzando nella funzione Main ad esempio un "Select case":
Property Tipo As Numeric List (Tipo1, 1) List (Tipo2, 2) List (Tipo3, 3) Default (1) EndProperty
Function Main() dim Data1 as Numeric() dim Data2 as Numeric() Select Case Tipo case 1 Data1 = Open Data2 = Close case 2
case 3 endselect
EndFunction
|
 |
|
kairen
Nuovo Utente
13 Posts |
Posted - 04 April 2004 : 16:44:14
|
Volevo dare la massima autonomia possibile all'indicatore ad esempio assegnando Data1 alla chiusura e Data2 a uno degli indicatori (ad esempio il Roc) , in modo che la funzione sia il massimo possibile autonoma. Ad esempio voi per il vostro indicatore moveav riuscite a passare un'array di dati in imput (ad esempio moveav(h+c/2, 20, s) ) ? possibile fare lo stesso per la mia funzione
grazie ancora Kairen
Modificato da - kairen il 04 Aprile 2004 16:46:17 |
 |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 04 April 2004 : 18:51:15
|
Per ora non ? possibile farlo. Devi riuscire a risolvere come suggerito. Non c'? altro modo. Una Property infatti pu? solo essere un valore e non un'espressione o un array.
|
 |
|
kairen
Nuovo Utente
13 Posts |
Posted - 04 April 2004 : 23:54:07
|
Scusa se rompo ancora un pochettino, ma ... A me effettivamente non mi serve creare un indicatore, ma una funzione di servizio da utilizzare poi, per la creazione di indicatori e/o trading system. Per questo mi servirebbe la max flessibilit? possibile, anche se poi le serie di dati le devo caricare io. Anche questo non ? possibile farlo? Ad esempio una stupidissima funzione che mi calcola la radice quadrata di un numero invece di dover scrivere ogni volta exp(0.5*log(n))
Grazie ancora Kairen
|
 |
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 05 April 2004 : 11:25:23
|
Certo, questo lo puoi fare.
Esempio:
Function Main() Dim l as Numeric l = pippo(close, rsi(close, 14)) Endfunction
Function pippo(Data1 as Numeric(), Data2 as Numeric()) as Numeric ......... ......... ......... Endfunction
|
 |
|
|
Topic  |
|