Search code examples
vb.netta-lib

TA-Lib using TA_INTEGER_DEFAULT and TA_REAL_DEFAULT in VB.NET 2010


VB.NET 2010 below is working. But I need to use default values as stated in TA-Lib documentation: TA_INTEGER_DEFAULT or TA_REAL_DEFAULT for optional parameters. How I can use that in coding? Currently I assign values manually (need to know what are the values).

Public Sub CalcMACD()
        ' CALCULATE allocationSize
        Dim lookback As Integer = TicTacTec.TA.Library.Core.MacdLookback(optInFastPeriod, optInSlowPeriod, optInSignalPeriod)
        Dim temp As Integer = Math.Max(lookback, startIdx)
        If (temp > endIdx) Then
            allocationSize = 0                    ' No output
        Else
            allocationSize = endIdx - temp + 1
        End If

        optInFastPeriod = 12                                 ' Set optional values <==== HOW TO USE TA_INTEGER_DEFAULT
        optInSlowPeriod = 26                                 ' Set optional values <==== HOW TO USE TA_INTEGER_DEFAULT
        optInSignalPeriod = 9                                ' Set optional values <==== HOW TO USE TA_INTEGER_DEFAULT

        Dim outMACD As Double()                                                       ' Declare output variable type
        ReDim outMACD(allocationSize)
        Dim outMACDSignal As Double()                                                 ' Declare output variable type
        ReDim outMACDSignal(allocationSize)
        Dim outMACDHist As Double()                                                   ' Declare output variable type
        ReDim outMACDHist(allocationSize)

        ' the calculation
        Dim res As TicTacTec.TA.Library.Core.RetCode = TicTacTec.TA.Library.Core.Macd(startIdx, endIdx, openPrice, optInFastPeriod, optInSlowPeriod, optInSignalPeriod, outBegIdx, outNBElement, outMACD, outMACDSignal, outMACDHist)


        ' Add result column to Datagridview
        ' #1 add column to Datagridview1
        DataGridView1.ColumnCount = DataGridView1.ColumnCount + 3
        Dim columnID As Integer = DataGridView1.ColumnCount - 3
        ' #2 define column header
        DataGridView1.Columns(columnID).HeaderText = "MACD"
        DataGridView1.Columns(columnID + 1).HeaderText = "MACD Signal"
        DataGridView1.Columns(columnID + 2).HeaderText = "MACD Histogram"
        '#3 insert values to column
        For i As Integer = startIdx To endIdx
            DataGridView1(columnID, i).Value = outMACD(i)
            DataGridView1(columnID + 1, i).Value = outMACDSignal(i)
            DataGridView1(columnID + 2, i).Value = outMACDHist(i)
        Next
End Sub

Solution

  • Public Sub CalcMACD(Optional ByVal optInFastPeriod As Integer = TA_INTEGER_DEFAULT, Optional ByVal optInSlowPeriod As Integer = TA_INTEGER_DEFAULT, Optional ByVal optInSignalPeriod As Integer = TA_INTEGER_DEFAULT)
    
        ' CALCULATE allocationSize
        Dim allocationSize As Integer = 0
        Dim lookback As Integer = TicTacTec.TA.Library.Core.MacdLookback(optInFastPeriod, optInSlowPeriod, optInSignalPeriod)
    
        Dim temp As Integer = Math.Max(lookback, startIdx)
        If (temp < endIdx) Then
            allocationSize = endIdx - temp + 1
        End If
    
        ' Declare output variables
        Dim outMACD(allocationSize) As Double
        Dim outMACDSignal(allocationSize) As Double                                              
        Dim outMACDHist(allocationSize) As Double
    
        ' the calculation
        Dim res As TicTacTec.TA.Library.Core.RetCode = TicTacTec.TA.Library.Core.Macd(startIdx, endIdx, openPrice, optInFastPeriod, optInSlowPeriod, optInSignalPeriod, outBegIdx, outNBElement, outMACD, outMACDSignal, outMACDHist)
    
        ' Add result column to Datagridview
        ' #1 add column to Datagridview1
        DataGridView1.ColumnCount = DataGridView1.ColumnCount + 3
        Dim columnID As Integer = DataGridView1.ColumnCount - 3
        ' #2 define column header
        DataGridView1.Columns(columnID).HeaderText = "MACD"
        DataGridView1.Columns(columnID + 1).HeaderText = "MACD Signal"
        DataGridView1.Columns(columnID + 2).HeaderText = "MACD Histogram"
        '#3 insert values to column
        For i As Integer = startIdx To endIdx
            DataGridView1(columnID, i).Value = outMACD(i)
            DataGridView1(columnID + 1, i).Value = outMACDSignal(i)
            DataGridView1(columnID + 2, i).Value = outMACDHist(i)
        Next
    End Sub