Volume Oscillator
Posted by Mohammad Rahhal, Last modified by Rawan Al Hourani on 20 October 2016 02:25 PM

 

Overview
The Volume Oscillator shows a spread of two different moving averages of volume over a specified period of time.

Interpretation
The Volume Oscillator offers a clear view of whether or not volume is increasing or decreasing.

Note
ShortTerm and LongTerm are both integers specifying the length of time used in the moving average 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). 
PointsOrPercent is an integer specifying Points output for 1 or Percent output for 2
.

Syntax

Public Function VolumeOscillator(ByRef Data As Database, ByRef Volume As Field, ByVal ShortTerm As Integer, ByVal LongTerm As Integer, ByVal MAType As Integer, ByVal PointsOrPercent As Integer, Optional ByVal FieldAliasName As String = "") As RecordSet


Class:
Oscillator

Function VolumeOscillator(Database, Field Volume, int ShortTerm, int LongTerm, int MAType, int PointsOrPercent, string Alias
Return Type Returns object pf type Recordset
Default Field Name(s) VolumeOscillator


Sample

Public Sub main()

        'Variables

        Dim _symbolInfo As VTLGeneral.CSymbol=ClientCode.GetSymbolByName("GOLD")

        Dim DB As New VTLGeneral.Database()

        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, "Open")

        m_High.initialize(_recordCount, "High")

        m_Low.initialize(_recordCount, "Low")

        m_Close.initialize(_recordCount, "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  = 1 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  = 1 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  = 1 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  = 1 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)
 

        'Oscillator indicator

        Dim _indRecord As New VTLGeneral.RecordSet()

        Dim osc As New VTLGeneral.Oscillator ()

        _indRecord = osc.VolumeOscillator(DB,m_High,7,14,1,1,"")
 

        For i = 1 To DB.getRecordCount

                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