# 对象分类

  金字塔中可以使用的对象分为VBS内置对象和金字塔的系统对象两部分。其中金字塔的系统对象又可以分为内部对象外部对象,其中内部对象在启动VBA环境时是由系统自动实例化;而外部对象必须在使用时通过CreateObject创建完成实例化,在接口说明中有以下格式的明确标注,则代表其为外部对象:

CreateObject("xxxx.xxxx")

例如:操作Block板块对象

'创建Block外部对象,将对象实例置变量b中
Set b = CreateObject("Stock.Block")

'打开市场指定分类名称的板块
call b.open("上海A股",0)

'显示已打开板块内部数据个数
msgbox b.count()

'不要忘记释放对象,不然会导致内存泄漏
Set b = nothing
1
2
3
4
5
6
7
8
9
10
11

# 如何使用对象

  本节内容将围绕如何操作金字塔的VBA API接口,此接口涉及到对象的属性、方法、事件三大类。操作属性、方法、事件,都必须带上实例化后的对象名。

  • 属性:是对象的特征或数据项,用于描述对象自身具备的状态或特性,
  • 方法:是对象能够执行的操作或动作。
  • 事件:是对象发生的动作或状态变化,通常用于响应某些条件或用户操作。

# 属性操作

  在金字塔VBA接口的属性操作可分为读、写两种形式。这类属性操作本质上等同于获取对象当前的状态、修改对象对应设置;属性操作非常简单类似于PEL的引用,也是通过.进行操作的,即实例化的对象.属性。例如:操作内部对象MarketData的AutoClose自动收盘属性。

'读取AutoClose属性值,这里是将MarketData的AutoClose属性值赋值给AutoCloseValue变量。
AutoCloseValue=MarketData.AutoClose
Application.MsgOut Auto_Close_value

'修改MarketData的AutoClose属性值为15分钟(属性修改,其实就是赋值操作,只是必须明确指定的变量是对象属性)
MarketData.AutoClose=15

'从新读取自动收盘时间,或者直接通过菜单栏的【工具】--【选项】--【行情设置】--【自动收盘】中查看
AutoCloseValue=MarketData.AutoClose
Application.MsgOut AutoCloseValue
1
2
3
4
5
6
7
8
9
10

# 方法操作

  方法操作与属性操作类似,也是通过.进行操作的,即实例化的对象.方法。例如:使用marketdata对象的GetReportCount方法获取指定市场的品种数量。

dim count
' 查询上海期货市场有多少个合约
count=marketdata.GetReportCount("SQ")
Application.MsgOut count
1
2
3
4

  在使用对象方法时,由于需要返回多个返回值时,是在对象方法中以输出参数形式得到的。所以在使用含有输出参数的方法时,应该留意作为输出参数的数据类型。例如:板块对象中的GetTypeBlock方法,它就是将返回值,以输出参数形式提供的,并且其返回值为一个数组类型,所以在使用时,必须提前定义一个数组类型的存储变量。

# 事件操作

  在金字塔VBA事件属于系统过程,我们只能在这个过程内添加需要执行的动作,但是不能修改事件的过程名称或者参数。事件过程的格式:Sub 对象_事件(参数)。在使用时可以在编辑窗口中选择对象、事件列表完成事件过程的生成;之后我们只需要在时间中添加需要触发的动作即可。

事件不支持嵌套使用,即每个事件都是一个独立过程模块。

例如:当启动接收时,执行输出;当然我们也可以执行其他自己想要的动作。

Sub MARKETDATA_StartReceive()
	Application.MsgOut "启动接收!"
End Sub
1
2
3