# Formula 公式对象
Formula
公式对象,每个公式都和该对象与之对应。Formula对象提供了通过VBA系统与公式系统交互的方法,用户可以通过两种途径与FORMULA对象交互:
- 通过自定义函数,系统会每个周期调用自定义函数,然后通过传送的FORMULA对象交互
- 通过图表查询,调用图表上已经计算好的公式数据。 金字塔的公式有两种执行模式,即序列计算和逐周期计算两种模式,详情参考 工作模式
属性
属性 | 说明 |
---|---|
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22