Chaikin Volatility Oscillator
Posted by Mohammad Rahhal, Last modified by Mohammad Rahhal on 27 July 2016 09:16 AM

 

Overview
The Chaikin Volatility Oscillator is a moving average derivative of the Accumulation/Distribution index.

Interpretation
The Chaikin Volatility Oscillator adjusts with respect to volatility, independent of long-term price action.

Note
ROC is a integer specifying the Rate Of Change to use in the Chaikin calculations
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:
Oscillator


Syntax

Public function ChaikinVolatility(ByRef Data As Database, ByRef OHLCV As RecordSet, ByVal Periods As Integer, ByVal ROC As Integer, ByVal MAType As IntegerOptional ByVal FieldAliasName As String = "") As RecordSet

 

Return Type Returns object of type Recordset
Default Field Name(s) ChaikinVolatility


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 =ClientCode.Bars(_symbolInfo.ID,VTLGeneral.ENUM_PERIOD.Day)
        

        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)


        'WeightedMovingAverage indicator 

        Dim _indRecord As New VTLGeneral.RecordSet()

        Dim osc As New VTLGeneral.Oscillator ()

        _indRecord = osc.ChaikinVolatility(DB,m_Recordset,14,1,5)
 

        For i = 0 To DB.getRecordCount-1

                output = output  &  CSTR(_indRecord.getValue(_indRecord.getName(1), i) ) & vbcrlf

        Next
 

        GUI.MsgDialog(output)

 

End Sub

 


See Also


Back to VTL Server Script Index

 

(0 vote(s))
Helpful
Not helpful

Comments (0)
Post a new comment
 
 
Full Name:
Email:
Comments:
CAPTCHA Verification 
 
Please enter the text you see in the image into the textbox below (we use this to prevent automated submissions).

Help Desk Software by Hybrid Solutions