S
scott71550@msn.com
Guest
J'ai un probléme avec mon programme VBA pour calculer le Relative Strenght Index en finance, je base ce programme sur le cour des deux derniers mois de toutes les composantes du cac 40. Ca me calcul le RSI sur les 13 premières actions et ensuite ca bloque. Si quelqu'un peu m'aider, je lui en serais trés reconnaissant. Merci d'avance.
Option Explicit
Sub test()
'Nous donnes les variation relatives du cours.'
Dim a, b, z, variation As Variant
z = 3
For b = 2 To 35
For a = z To 50
variation = cells(a, b) - cells(a - 1, b)
cells(a, b + 80) = variation
Next
Next
End Sub
Sub test2()
Dim a, b, varhausse, nbrvarhausse, mhausse, varbaisse, nbrvarbaisse, mbaisse, RS, RSI, z As Variant
z = 3
For b = 2 To 35
For a = 3 To 41
'Nous donnes les variations haussière relatives du cours.
varhausse = Application.SumIf(range(cells(a, b + 80), cells(a + 9, b + 80)), ">0")
'Nous donnes le nombre de variations haussières du cours.
nbrvarhausse = Application.CountIf(range(cells(a, b + 80), cells(a + 9, b + 80)), ">0")
'Nous donnes la moyenne des hausses du cours
mhausse = varhausse / nbrvarhausse
'Nous donnes les variations baissières relatives du cours.
varbaisse = Abs(Application.SumIf(range(cells(a, b + 80), cells(a + 9, b + 80)), "<0"))
'Nous donnes le nombre de variations baissières du cours.
nbrvarbaisse = Application.CountIf(range(cells(a, b + 80), cells(a + 9, b + 80)), "<0")
'Nous donnes la moyenne des moyennes du cours
mbaisse = varbaisse / nbrvarbaisse
RS = mhausse / mbaisse
RSI = 100 - (100 / (1 + RS))
cells(a + 9, b + 35) = RSI
Next
Next
End Sub
Option Explicit
Sub test()
'Nous donnes les variation relatives du cours.'
Dim a, b, z, variation As Variant
z = 3
For b = 2 To 35
For a = z To 50
variation = cells(a, b) - cells(a - 1, b)
cells(a, b + 80) = variation
Next
Next
End Sub
Sub test2()
Dim a, b, varhausse, nbrvarhausse, mhausse, varbaisse, nbrvarbaisse, mbaisse, RS, RSI, z As Variant
z = 3
For b = 2 To 35
For a = 3 To 41
'Nous donnes les variations haussière relatives du cours.
varhausse = Application.SumIf(range(cells(a, b + 80), cells(a + 9, b + 80)), ">0")
'Nous donnes le nombre de variations haussières du cours.
nbrvarhausse = Application.CountIf(range(cells(a, b + 80), cells(a + 9, b + 80)), ">0")
'Nous donnes la moyenne des hausses du cours
mhausse = varhausse / nbrvarhausse
'Nous donnes les variations baissières relatives du cours.
varbaisse = Abs(Application.SumIf(range(cells(a, b + 80), cells(a + 9, b + 80)), "<0"))
'Nous donnes le nombre de variations baissières du cours.
nbrvarbaisse = Application.CountIf(range(cells(a, b + 80), cells(a + 9, b + 80)), "<0")
'Nous donnes la moyenne des moyennes du cours
mbaisse = varbaisse / nbrvarbaisse
RS = mhausse / mbaisse
RSI = 100 - (100 / (1 + RS))
cells(a + 9, b + 35) = RSI
Next
Next
End Sub