Le Bande di Bollinger (che prendono il nome dal suo ideatore) vogliono essere d'aiuto per misurare e sfruttare, nell'operatività quotidiana, un aspetto che molto influisce sull'andamento delle quotazioni: la volatilità.
La volatilità, o variabilità di un titolo, la possiamo definire semplicemente (anche se non del tutto correttamente) come l'escursione media del prezzo in un dato periodo di tempo, e viene definita dalla cosiddetta Deviazione Standard.
Per calcolare le Bande di Bollinger si usa dapprima una media mobile a G giorni (spesso 20) a cui viene aggiunto o sottratto il valore della deviazione standard moltiplicata per un determinato fattore F (spesso intorno a 2).
La banda superiore è quindi ottenuta aggiungendo alla media mobile F volte la deviazione standard.
La banda centrale (se la si vuole visualizzare) è data dalla media mobile.
La banda inferiore è calcolata sottraendo alla media mobile F volte la deviazione standard. La banda, delimitata dalla linea superiore e dalla linea inferiore, formerà una specie di canale dinamico la cui ampiezza aumenta e diminuisce in funzione della volatilità del titolo, racchiudendo così un'alta percentuale delle sue oscillazioni.
Il beneficio più grande che si ricava dall'uso delle Bande di Bollinger sta nell'immediato impatto visivo che permette all'analista di farsi subito un'idea circa la volatilità che è presente sul mercato.
E' risaputo che un periodo di bassa volatilità viene, solitamente, seguito da uno di alta volatilità e forte direzionalità. Un periodo di alta volatilità è, a sua volta, motivo di forte rischio di un improvviso e brusco cambiamento del trend. Necessita, infine, di un periodo di assestamento.
E' risaputo che un periodo di bassa volatilità viene, solitamente, seguito da uno di alta volatilità e forte direzionalità. Un periodo di alta volatilità è, a sua volta, motivo di forte rischio di un improvviso e brusco cambiamento del trend. Necessita, infine, di un periodo di assestamento.
Per poter calcolare le bande di Bollinger prima di tutte serve definire una funzione che calcoli la Deviazione Standard
Function DevSt(ByVal Serie As List(Of Osservazione))
Dim somma As Double Dim count As Double Dim scarti As Double Dim scartiquadrati As Double Dim media As Double Dim varianza As Double Dim deviazionestandard As Double
For i As Integer = i To Serie.Count - 1
somma += Serie(i).Prezzo count += 1 media = somma / count scarti = Serie(i).Prezzo - media scartiquadrati = scarti ^ 2 varianza = scartiquadrati / count
Next
Next
deviazionestandard = Math.Sqrt(varianza)
Return deviazionestandard
End Function
'Calcoliamo ora le bande di Bollinger
Dim BollingerSup As Double
Dim BollingerInf As Double
Dim i As Integer = 0
For i = i To SerieMoving.Count - 1
Dim s As Double = Me.DevSt(SerieMoving)
BollingerSup = SerieMoving(i).Prezzo + (2 * s)
Dim bs As New Osservazione With bs .Prezzo = BollingerSup .Istante = SerieMoving(i).Istante SerieBollingerSup.Add(bs)
End With
End With
BollingerInf = SerieMoving(i).Prezzo - (2 * s)
Dim bi As New Osservazione With bi .Prezzo = BollingerInf .Istante = SerieMoving(i).Istante SerieBollingerInf.Add(bi)
End With Next
End With Next
Per poter calcolare le Running Mean e Moving Mean
Public SS As New List(Of Osservazione)
Public SerieRunning As New List(Of Osservazione) Public SerieMoving As New List(Of Osservazione)
Public SerieRunning As New List(Of Osservazione)
Public PuntiSS As New List(Of Point)
Public PuntiSR As New List(Of Point)
Public PuntiSR As New List(Of Point)
Public PuntiSM As New List(Of Point)
Public k1 As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Questo comando serve per resettare gli oggetti ogni volta che viene premuto button
Me.SS.Clear()
Me.SerieRunning.Clear() Me.SerieMoving.Clear()
Dim RunningMean As Double Dim MovingMean As Double
'Si crea la serie storica random come visto nello script precedente, dopodichè
RunningMean = (RunningMean*SS.Count+prezzoCorrente)/(SS.Count+1)
Dim RunningMean As Double
'Si crea la serie storica random come visto nello script precedente, dopodichè
RunningMean = (RunningMean*SS.Count+prezzoCorrente)/(SS.Count+1)
Dim r As New Osservazione()
With r .Prezzo = RunningMean
.Istante = osservazione.Istante
.X = osservazione.X
.Y = r.Prezzo
Me.SerieRunning.Add(r)
End With
With r
.Istante = osservazione.Istante
.X = osservazione.X
.Y = r.Prezzo
Me.SerieRunning.Add(r)
End With
Me.k1 = NumericUpDown1.Value
MovingMean=
MovingMean+(SS(SS.Count-1).Prezzo/Me.k1)-(SS(SS.Count-Me.k1-1).Prezzo/Me.k1)
MovingMean+(SS(SS.Count-1).Prezzo/Me.k1)-(SS(SS.Count-Me.k1-1).Prezzo/Me.k1)
Dim m As New Osservazione()
With m
With m
.Istante = osservazione.Istante
.X = osservazione.X
.Y = m.Prezzo
Me.SerieMoving.Add(r)
End With
SS.Add(osservazione)
Loop
(...)Me.grafico.Clear(Color.White)
Me.grafico.DrawLines(Pens.Black, Me.PuntiSS.ToArray)Me.grafico.DrawLines(Pens.DarkViolet, Me.PuntiSR.ToArray)
Me.grafico.DrawLines(Pens.Red, Me.PuntiSM.ToArray)
Me.PictureBox1.Image = Me.bitmap
(...)Me.grafico.Clear(Color.White)
Me.grafico.DrawLines(Pens.Black, Me.PuntiSS.ToArray)Me.grafico.DrawLines(Pens.DarkViolet, Me.PuntiSR.ToArray)
Me.grafico.DrawLines(Pens.Red, Me.PuntiSM.ToArray)
Me.PictureBox1.Image = Me.bitmap
Nessun commento:
Posta un commento