# Formula 公式对象

Formula

公式对象,每个公式都和该对象与之对应。Formula对象提供了通过VBA系统与公式系统交互的方法,用户可以通过两种途径与FORMULA对象交互:

  1. 通过自定义函数,系统会每个周期调用自定义函数,然后通过传送的FORMULA对象交互
  2. 通过图表查询,调用图表上已经计算好的公式数据。 金字塔的公式有两种执行模式,即序列计算和逐周期计算两种模式,详情参考 工作模式
属性
属性 说明
Name 公式名称,只读
注意:如果频繁调用该属性,请注意使用完毕后释放返回值
MaxPrice 公式数据的最高值,读写
MinPrice 公式数据的最低值,读写
Type 公式性质,只读属性
0主图
1副图
2主图叠加
Cascade 示公式是否是叠加显示的,只读属性
TitleTop 代表标题数据栏的高位于窗格的位置,以窗格坐标为单位。左右位置与窗格相同
TitleHeight 标题数据栏高度
DataSize 公式数据总周期数量
LineCount 公式线数
WorkMode 公式执行模式
0逐周期执行
1序列模式执行
特定范围
IndexData 返回当前数据区基于0的数据序列。只有在特定情况下此属性才有效,例如当一个公式自定义函数被调用时
IsLastBa 是否最后一个周期,是返回1,否则为0,失败为-1。只有在特定情况下此属性才有效,例如当一个公式自定义函数被调用时
方法
方法 说明
ParentGrid 得到与该公式对象所对应的窗格对象
GetBufData 得到指定名称指定周期的公式线数据
GetBufDateData 得到指定周期在K线上对应的日期数据
GetBufDataByIndex 得到指定序号指定周期的公式线数据
GetPosFromDate 得到指定日期时间的数据的基于0索引的序号
VarData 取或设置公式线序列数组数据
VarStartIndex 得到指定公式线数组变量有效数值起始位置
GetParameter 得到公式指标参数值
SetParameter 设置公式指标参数值
SetParameterByName 设置指定名称的参数值
SaveParameterVal 保存指定框架指定窗格里的公式参数
SaveAsFormula 当前公式对象另存为
GetLineName 得到指定基于0索引下的公式线名称。注意:如果频繁调用该属性,请注意使用完毕后释放返回值
IsLineName 判断指定公式线名称是否存在。存在返回1,否则返回0 。例如: IsLineName("MA1")判断当前对象中是否含有名称为MA1的公式线
GetStringPtr 将公式字符串变量地址转换为字符串,该函数一般用在PEL与VBA自定义函数的参数转换中
ShowLine 设置窗格指标线是否显示,例如:ShowLine("ma1",0),设置ma1不显示,其余越大线越宽
ColorLine 设置窗格指标线颜色,例如:olorLine("ma1",RGB(0,0,255)),设置ma1指标线为蓝色
示例
Sub Test()

    '该示例将把技术分析主图上的MA指标前两条线输出到EXCEL中,使用前请注意将K线主图打开,并显示MA指标
    ' 得到框架名称为"Technic",窗格名称为"Main"的窗格对象
    Set Grid = Technic.GetGridByName("Main")
    Set Formula = Grid.GetFormulaByIndex(1) '得到主图窗格第一个指标公式(默认为MA均线指标) 

    '创建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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22