0

下面的 VB.NET 2010 正在运行。但我需要使用 TA-Lib 文档中所述的默认值:TA_INTEGER_DEFAULT 或 TA_REAL_DEFAULT 作为可选参数。我如何在编码中使用它?目前我手动分配值(需要知道值是什么)。

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
4

1 回答 1

0
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
于 2016-06-20T01:02:53.073 回答