以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  高级功能研发区  (http://www.weistock.com/bbs/list.asp?boardid=5)
----  求教:会不会出现通过Formula的GetBufData不准的情况  (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=43988)

--  作者:wknjt
--  发布时间:2013/1/2 23:55:21
--  求教:会不会出现通过Formula的GetBufData不准的情况

最近在尝试用Stkindi应用自定义公式,然后通过GetBufData获取对应的信号。但是出现了一个很奇怪的问题。在应用一个简单公式的时候,获取的信号都是准确的,但是应用一个复杂的公式的时候,获取的信号就不准确。目前我正在排查原因。虽然理论上GetBufData应该没问题,但我想问有没有人发现过类似的问题?还有就是是否使用中需要注意什么问题?

还有一个问题,就是前面版主曾经告诉我过,如果需要获取信号需要用新的交易信号Buy Sell等,但我发现有说明文当说这个只能用于逐K线模式下,这就会导致公式运行效率很低。不知道金字塔在开发中为啥这么考虑,而不支持序列模式呢?
我还发现Stkindi得到的Formula是内存中的,跟通过界面获得的HistoryData没有对应关系,导致在GetBufData是,对应的Index不能参考图上的位置信息。我在想是否可以通过History的SaveData来修改界面的HistoryData,来使其一致,然后再做处理是否简单一些?

问的比较杂,期望高手的解惑,万分感谢。


--  作者:王锋
--  发布时间:2013/1/3 0:33:41
--  

不会出现不准的问题,出现问题后,用户应该首先先自己反思一下问题,而不是马山想到是别人的问题。

 

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


--  作者:wknjt
--  发布时间:2013/1/3 2:53:18
--  
 您说的很对,目前我主要也怀疑自定义公式和程序的问题。只是忽然想到这一点,会不会公式中公式线数据过多导致其获取有问题,所以冒昧的上来问了这一句。实在抱歉。
我看了您给出的方法获得一致的公式数据的方法,但这种方式无法修改公式的参数吧?有没有既可以一致又能灵活修改参数的方法呢?类似于Stkindi 的方式?或者有没有途径可以通过VBS修改界面上的公式的参数呢?
还有就是BUY SELL是否确实只能在逐K线模式下运行?
多谢您的指导。


--  作者:王锋
--  发布时间:2013/1/3 9:31:46
--  

SetParameter 方法

重设公式指标参数

SetParameter (Parameter)

Parameter        字符串格式的参数,按公式设计的参数顺序传递,每个参数用逗号分割

例如:

\' 得到框架名称为"Technic",窗格名称为"Main"的窗格对象
Set Grid = Technic.GetGridByName("Main")
Set Formula = Grid.GetFormulaByIndex(1)

Formula.SetParameter("6,23,50") \'将技术分析图表的MA均线公式的参数改掉
Grid.ReInitDataFormula


--  作者:guotx2010
--  发布时间:2013/1/3 10:11:59
--  

受益良多,我以前是用全局变量来给参数赋值的,显然没有楼上的方法好。

 

从我使用stkindi方法的情况看,不会出现信号取不到的问题,建议楼主先在公式中使用显示变量值的方式,直观看看要取的值是否正确显示。

另外,需要本地有该合约的数据才可以的,如果没有,在技术分析图上打开一次该合约就可以了。

 


--  作者:wknjt
--  发布时间:2013/1/3 22:02:46
--  
感谢王锋版主和guotx2010版主,你们的热情帮助让我受益良多。我对自己运用金字塔越来越有信心了,多谢多谢。图片点击可在新窗口打开查看