Syntax
Public function DirectionalMovementSystem(ByVal Data As DataBase, ByVal OHLCV As Recordset, ByVal Period As Integer) As RecordSet
Overview
The Directional Movement System contains six indicators; ADX, DI+, DI-, DX, TRSum, and ADXR.
Interpretation
The ADX (Average Directional Movement Index) is an indicator of how much the market is trending, either up or down: the higher the ADX line, the more the market is trending and the more suitable it becomes for a trend-following system. This indicator consists of two lines: DI+ and DI-, the first one being a measure of uptrend and the second one a measure of downtrend.
The standard Directional Movement System draws a 14 period DI+ and a 14 period DI- in the same chart panel. ADX is also sometimes shown in the same chart panel.
A buy signal is given when DI+ crosses over DI-, a sell signal is given when DI- crosses over DI+.
Class: Oscillator
Properties
Return Type | Returns object of type Recordset |
Default Field Name(s) | DirectionalMovementSystem |
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) 'DirectionalMovementSystem Dim _indRecord As New VTLGeneral.RecordSet() Dim osc As New VTLGeneral.Oscillator() _indRecord = osc.DirectionalMovementSystem(DB,m_Recordset,14) 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