Leider funtioniert das nicht weil die Fehlermeldung Anweisung ausserhalb des Typeblocks bezüglich
if difference kommt. Wie bekomme ich diese Fehler in ordnung? Gäbe es noch eine Variante womit ich weniger Variablen bräuchte also das ganze esthetischer wäre? Es handelt sich um eine Intervallschachtelung um zu herauszufinden bei welchem sigma die differenz 0 ist. Eben das Resultat ist dann dieses sigma bei dem die Differenz 0 ist.
Function ImVola(S As Double, K As Double, _
T As Double, r As Double, TargetPrice As Double, _
Optional PutCall As String = "CALL")
Application.Volatile
Dim x1 As Double, x2 As Double
Dim differenz As Double, sigma As Double
x1 = 0
x2 = 20
Do While differenz <> 0
sigma = (x2 - x1 / 2)
differenz = (BlackScholes(S, K, T, r, sigma, [PutCall as String="call"])) - TargetPrice
If differenz > 0 Then x2 As sigma
If differenz < 0 Then x1 As sigma
Next
ImVola = sigma
End Function
Vielen Dank im voraus ;) |