Syntax
Public function BollingerBands(ByRef Data As Database, ByRef Source As Field, ByVal Periods As Integer, ByVal StandardDeviations As Long, ByVal MAType As Integer) As RecordSet
Overview
Bollinger Bands are similar in comparison to moving average envelopes. Bollinger Bands are calculated using standard deviations instead of shifting bands by a fixed percentage.
Interpretation
Bollinger Bands (as with most bands) can be imposed over an actual price or another indicator. When prices rise above the upper band or fall below the lower band, a change in direction may occur when the price penetrates the band after a small reversal from the opposite direction.
Note
StandardDeviations is an integer specifying the value to use in the standard deviations calculation. MAType is an integer specifying the moving average type to be used (Simple = 1, Exponential = 2, TimeSeries = 3, Variable = 4, Triangular = 5, Weighted = 6, VIDYA = 7).
Class: Bands
Parameters
Return Type |
Return object of type Recordset |
Default Field Name(s) |
BollingerBandsTop, BollingerBandsBottom |
Sample
Public Sub main()
'Variables
Dim _symbolInfo As VTLGeneral.CSymbol=ClientCode.GetSymbolByName("GOLD")
Dim DB As New VTLGeneral.Database()
Dim rsOHLCV As New VTLGeneral.RecordSet()
Dim RecordCount As Integer
Dim m_Recordset As VTLGeneral.RecordSet
Dim _historyData As object()
Dim output As String
Dim Record As Integer
Dim m_Date As VTLGeneral.Field
Dim m_Open As VTLGeneral.Field
Dim m_High As VTLGeneral.Field
Dim m_Low As VTLGeneral.Field
Dim m_Close As VTLGeneral.Field
Dim j As Integer = 0
Dim i As Integer = 0
Dim _recordCount As Integer =100
m_Recordset = DB.CreateRecord
m_Open = New VTLGeneral.Field
m_High = New VTLGeneral.Field
m_Low = New VTLGeneral.Field
m_Close = New VTLGeneral.Field
DB.RecordCount = _recordCount
RecordCount = _recordCount
'Initialize Recordsets
m_Open.initialize(_recordCount-1, "Open")
m_High.initialize(_recordCount-1, "High")
m_Low.initialize(_recordCount-1, "Low")
m_Close.initialize(_recordCount-1, "Close")
'load high, low ,open and data
_historyData = ClientCode.GetChartHistory(_symbolInfo.ID, VTLGeneral.ENUM_PERIOD.Day,VTLGeneral.ENUM_HISTORY_TYPE.HIS_HIGH, _recordCount)
For i = 0 To _recordCount-1
m_High.setValue(i,_historyData(i))
Next
_historyData = ClientCode.GetChartHistory(_symbolInfo.ID, VTLGeneral.ENUM_PERIOD.Day,VTLGeneral.ENUM_HISTORY_TYPE.HIS_LOW, _recordCount)
For i = 0 To _recordCount-1
m_Low.setValue(i,_historyData(i))
Next
_historyData = ClientCode.GetChartHistory(_symbolInfo.ID, VTLGeneral.ENUM_PERIOD.Day,VTLGeneral.ENUM_HISTORY_TYPE.HIS_OPEN, _recordCount)
For i = 0 To _recordCount-1
m_Open.setValue(i,_historyData(i))
Next
_historyData = ClientCode.GetChartHistory(_symbolInfo.ID, VTLGeneral.ENUM_PERIOD.Day,VTLGeneral.ENUM_HISTORY_TYPE.HIS_CLOSE, _recordCount)
For i = 0 To _recordCount-1
m_Close.setValue(i,_historyData(i))
Next
m_Recordset.addField(m_Open)
m_Recordset.addField(m_High)
m_Recordset.addField(m_Low)
m_Recordset.addField(m_Close)
'BollingerBands indicator
Dim _indRecord As New VTLGeneral.RecordSet()
Dim bnd As New VTLGeneral.Bands()
_indRecord = bnd.BollingerBands(DB,m_Open,14,2,1)
For i = 0 To DB.getRecordCount-1
output = output & CSTR(_indRecord.getValue("BollingerBandsMedian", i) ) & vbcrlf
Next
GUI.MsgDialog(output)
End Sub
See Also
Back to VTL Server Script Index
|