最近在尝试用Stkindi应用自定义公式,然后通过GetBufData获取对应的信号。但是出现了一个很奇怪的问题。在应用一个简单公式的时候,获取的信号都是准确的,但是应用一个复杂的公式的时候,获取的信号就不准确。目前我正在排查原因。虽然理论上GetBufData应该没问题,但我想问有没有人发现过类似的问题?还有就是是否使用中需要注意什么问题?
还有一个问题,就是前面版主曾经告诉我过,如果需要获取信号需要用新的交易信号Buy Sell等,但我发现有说明文当说这个只能用于逐K线模式下,这就会导致公式运行效率很低。不知道金字塔在开发中为啥这么考虑,而不支持序列模式呢?
我还发现Stkindi得到的Formula是内存中的,跟通过界面获得的HistoryData没有对应关系,导致在GetBufData是,对应的Index不能参考图上的位置信息。我在想是否可以通过History的SaveData来修改界面的HistoryData,来使其一致,然后再做处理是否简单一些?
问的比较杂,期望高手的解惑,万分感谢。
不会出现不准的问题,出现问题后,用户应该首先先自己反思一下问题,而不是马山想到是别人的问题。
Stkindi得到的Formula是与界面上的没有关系的,如果你需要取到跟界面上一致的公式信息,应该使用下面的处理方法:
示例:
Sub Test()
'该示例将把技术分析主图上的MA指标前两条线输出到EXCEL中,使用前请注意将K线主图打开,并显示MA指标
' 得到框架名称为"Technic",窗格名称为"Main"的窗格对象
Set Grid = Technic.GetGridByName("Main")
Set Formula = Grid.GetFormulaByIndex(1)
'创建EXCEL对象
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
'循环遍历得到公式线
for i = 0 to Formula.DataSize-1
'将两条数据线插入到EXCEL第一、二列
objExcel.Cells(i+1,1).Value =Formula.GetBufData("MA1",i)
objExcel.Cells(i+1,2).Value =Formula.GetBufData("MA2",i)
objExcel.Cells(i+1,3).Value =Formula.GetBufDateData(i)
next
End Sub
SetParameter 方法
重设公式指标参数
SetParameter (Parameter)
Parameter 字符串格式的参数,按公式设计的参数顺序传递,每个参数用逗号分割
例如:
' 得到框架名称为"Technic",窗格名称为"Main"的窗格对象
Set Grid = Technic.GetGridByName("Main")
Set Formula = Grid.GetFormulaByIndex(1)
Formula.SetParameter("6,23,50") '将技术分析图表的MA均线公式的参数改掉
Grid.ReInitDataFormula
受益良多,我以前是用全局变量来给参数赋值的,显然没有楼上的方法好。
从我使用stkindi方法的情况看,不会出现信号取不到的问题,建议楼主先在公式中使用显示变量值的方式,直观看看要取的值是否正确显示。
另外,需要本地有该合约的数据才可以的,如果没有,在技术分析图上打开一次该合约就可以了。