Results 1 to 3 of 3
  1. #1
    hnp2500
    Guest

    Default help about wrting custom indicators

    Hi
    I have a general question:
    Is there any manual on how to develop a custom indicator using any existing indicator in vtl?
    How can i access to source code of existing developed indicators in vtl such as macd?
    regards
    Hooshang

  2. #2
    Administrator Hassan-HS's Avatar
    Join Date
    Jun 2013
    Posts
    795

    Smile On-Array Functions

    Welcome



    Definitely you can develop your own indicator using:
    1- VTL client in this case you have to use the on array functions
    2- VTL server in this case you have to use the technical analysis system development kit (TASDK) functions.

    Examples:


    The following samples calculate MACD based on custom array and print the result of record 50 :
    1-
    VTL client - MacdOnArray



    Code:
     Public Sub main()
            Dim HighAry ()
             Dim LowAry ()
    
             Dim OpenAry ()
             Dim CloseAry ()
             Dim result()
            Dim SignalPeriod
             Dim FastEMA
             Dim SlowEMA
             Dim Signal
    
     SignalPeriod = 9
     FastEMA = 12
             SlowEMA = 26
     CopyHigh 0, 1, Bars (0), HighAry
             CopyLow 0, 1, Bars (0), LowAry
             CopyOpen 0, 1, Bars (0), OpenAry
             CopyClose 0, 1, Bars (0), CloseAry
    
             MACDOnArray OpenAry, HighAry, LowAry, CloseAry, CInt (SignalPeriod), CInt (FastEMA), CInt (SlowEMA), Result, Signal
             MsgBox "The indicator value of the record 50 : " & Result(50)
    
      End Sub



    2- VTL Server - MACD


    Code:
    
     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)
     
             'MACD indicator
             Dim _indRecord As New VTLGeneral.RecordSet()
             Dim osc As New VTLGeneral.Oscillator()
     
            _indRecord = osc.MACD(DB,m_Recordset,5)      _indRecord = osc.MACD(DB,m_Recordset,5)
        
    
      output = CSTR(_indRecord.getValue(_indRecord.getName(1), 50) )
    
          GUI.MsgDialog(output)
     
    
      End Sub

  3. #3
    b_morar
    Guest

    Default

    Dear Sir,


    Please update us if every thing is clear now or not, and let me know if you need any further assistance.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •