Cari amici,
ho provato ad implementare l'MFI (Money Flux Index) secondo l'algoritmo spiegato ad es. in http://www.investopedia.com/terms/m/mfi.asp.
L'indice è giusto, stando ad un paio di comparazioni con titoli esaminati su prophet.net.
La procedura è riportata sotto: il problema è che è lentissima, probabilmente a causa dell'uso degli arrays. C'è qualcuno che ha un'idea migliore? C'è modo di snellire il tutto?
Grazie anticipate.
Function Main()
Dim typicalPrice As Numeric() = 10
Dim moneyFlow As Numeric() = 10
Dim moneyRatio As Numeric
Dim positiveMoneyFlow As Numeric = 0
Dim negativeMoneyFlow As Numeric = 0
Dim Index as Numeric = 0
Dim MFI As Numeric
'calculation of the typical price for each period
For Index = Period to 0 Step - 1
typicalPrice(Index) = ((Close( - Index) + High( - Index) + Low( - Index)) / 3)
Next
'calculation of the money Flow for each period
For Index = Period to 0 Step - 1
moneyFlow(Index) = typicalPrice(Index) * Volume( - Index)
Next
'calculation of Money Ratio
For Index = 0 to (Period - 1)
If typicalPrice(Index) > typicalPrice(Index + 1) then
positiveMoneyFlow = positiveMoneyFlow + moneyFlow(Index)
else
negativeMoneyFlow = negativeMoneyFlow + moneyFlow(Index)
endif
next
moneyRatio = positiveMoneyFlow / negativeMoneyFlow
'finally the MFI
MFI = 100 - (100 / (1 + moneyRatio))
'la parola chiave return in un indicatore deve sempre tornare un valore numerico..
Return MFI
EndFunction