第一范文网 - 专业文章范例文档资料分享平台

金字塔决策交易系统—高级教程(2016修订版)

来源:用户分享 时间:2025/5/24 8:08:23 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

金字塔决策交易系统高级教程

控件的介绍和应用如果有疑问请及时参阅随机附带的VBA编程手册(帮助菜单->VBA编程信息和Microsoft 窗体参考)。

(4)调试VBA 代码

程序设计过程中,经常需要定位错误位置并改之,此过程常称为调试。VBA 中第一类错误为语法错误,如果你打开了代码编辑器的“自动语法检查”,则当你输入了一条错误的语法时,VBA IDE 会即时给出一条提示信息。

第二类错误为运行错误。运行错误是指造成应用程序停止运行的任何错误。有时这是由于错误的拼写,例如对象名字。VBA 不会检查这种类型的错误,除非运行该过程。运行错误也可能是用户的操作所引起的,而用户的操作不是你所能控制和预测的。例如,如果用户不给你编写的函数提供数据,就有可能产生运行错误。对于此类情况,就需要写错误处理代码。最后一种可能出现的错误是逻辑错误。逻辑错误不会显示在IDE,问题在于代码的执行结果和预期的结果不同,这就意味着代码的逻辑或算法出了问题。随着对语言和环境的熟悉,大部分的调试时间可能都用在对逻辑错误的处理上。

本文主要介绍使用Application.MsgOut函数调试的方法,这个函数可以在金字塔下方的消息窗口输出指定的文本,可以对程序进行跟踪判断和调试。举例如下:

Dim i

For i = 1 To 10 Step 1 Application.MsgOuti Next

(5)错误处理

所谓调试,就是对可以预测的问题进行处理并进行纠正的过程。调试只能够发现可以预测的错误,要处理不可预测的和不可避免的错误时,就必须使用错误处理。通过启用错误处理,就可以使应用程序更稳定、更健壮。所谓错误处理程序,就是应用程序中用来捕获和处理错误的实用程序。

若不使用 On Error Resume Next 语句,发生的任何运行时错误都将是致命的,即,显示错误信息并终止运行。 On Error Resume Next 会使程序从紧随产生错误的语句之后的语句继续执行,或是从紧随最近一次调用过程(该过程含有 On Error Resume Next 语句)的语句继续运行。这个语句可以不顾运行时错误,继续执行程序,之后您可以在过程内部建立错误处理例程。在调用另一个过程时,On Error Resume Next 语句变为非活动的。所以,如果希望在例程中进行内部错误处理,则应在每一个调用的例程中执行 On Error Resume Next 语句。

3.4金字塔的对象模型

上一章介绍了VBA 的IDE 环境和VBA 语法,这一章介绍金字塔对象模型,VBA 语法和金字塔对象模型组成了应用金字塔分析 和VBA 进行开发的基础。从某种程度上讲,理解和熟悉金字塔对象模型的过程,也就是使用金字塔和VBA 进行开发的过程。和使用其他程序开发语言和环境一个很大的差别是,金字塔 VBA 开

33

金字塔决策交易系统高级教程

发必须时刻牢记,开发的目的是解决问题,解决问题的关键在于使用已有的功能,补充和开发缺乏或者很难用的功能(例如某些函数),才是我们使用金字塔交易 和VBA 进行开发的目的。这一切的前提就是熟悉金字塔对象模型。另一方面,金字塔对象模型包括了大量的对象、属性和方法,任何人也不可能记住所有的内容,因此,熟悉是指熟悉其结构和组成,对于一个对象的具体方法和属性则没有必要记住,完全可以在开发的时候通过查看帮助菜单->VBA编程信息来获得帮助。在这里我们主要列举11个我们最常用到的内部对象。

3.4.1Application 对象

Application 对象是金字塔对象模型的最上部的对象,代表了金字塔应用程序本身。Application 对象提供了大量属性、方法和事件,用来操作金字塔程序,下面我们挑选一些重要的属性和方法介绍,并随机附带范例。

(1)框架类方法

框架在金字塔中是个很重要的概念,我们操作金字塔软件看盘分析都在框架中进行,金字塔的概念中,框架是整体的一个局部的概念,比如我们常见的K线技术分析图表,就是一个框架,每个框架由若干的窗格组成,有关窗格的对象我们后面还会有介绍,以K线技术分析框架为例,它就是由一个主窗格(K线图)加下面若干个技术分析副图组成。

ActivateFrame 激活或者打开一个指定的框架。 IsActivateFrame 确定一个框架是否激活显示状态。

GetActiveFrameName 得到当前激活的框架名称,若激活窗口不是框架,那么返回空串 ActivateFrameWithCode 以指定代码和周期激活或者打开一个指定的框架。 举例:

'如果没有打开k线技术分析图表框架,就打开 if Application.isActivateFrame(\ Call application.ActivateFrame(\ end if

(2)定时器

如果我们需要金字塔定时每隔一段时间完成某些事情,比如到了某个时间点关闭软件,每隔10秒下委托一笔交易,这就需要定时器了。

举例:

‘VBA引擎开启时运行该事件 Sub Application_VBAStart()

Call Application.SetTimer(0,2*1000) '设置一个0号计时器,间隔2秒执行一次 Call Application.Settimer(9,5*1000) '设置一个9号计时器,间隔5秒执行一次 End Sub

34

金字塔决策交易系统高级教程

'下面的过程是计时器循环体,我让计时器显示每次触发的时间,你看看是不是间隔设定的秒数就触发。 Sub Application_Timer(ID) If ID=0 then

Application.msgout Cdate(time) & \号计时器触发了\ end if If ID=9 then

Application.msgout Cdate(time) & \号计时器触发了\ end if End Sub

特别需要注意的地方:

1、计时器一旦设置,如果不显式销毁,下次启动vba时依然会生效的。 所以,你要记住在Application_VBAEnd事件中使用Killtimer来销毁计时器。

2、Application_VBAStart只能有一个,你不要在多个模块中拥有多个vbastart事件,那样系统就会出错的。

(3)MsgOut

消息窗口显示消息,可以用该函数进行用户消息提示或者进行调试工作。例如 Application.MsgOut(\你好\,将弹出消息窗口显示字符串。

(4)ClearMsg

清除消息窗口的所有显示文本 (5)PostMessage

发送系统消息,发送完毕后直接返回。消息参数一般是系统的菜单命令或者一些系统命令。比如 文件->退出菜单的命令ID是57665,因此只要使用该命令就可以让金字塔退出,示例:

application.PostMessage(57665) 下面是我们常用的一些菜单的ID 退出关闭金字塔 57665 刷新沪深扩展统计数据 33898 停止VBA引擎 32797 打开全局变量数据库 33179 交易菜单->账户窗口 33821 交易菜单->交易状态 33829 交易菜单->登录交易平台 33846 交易菜单->持仓及账户汇总 33956

35

金字塔决策交易系统高级教程

交易菜单->图表程式化交易 33873 交易菜单->后台程式化交易 33228 工具菜单->数据补充 33882 工具菜单->数据->数据管理器 454 工具菜单->手机远程监控 34005 查看菜单->全屏显示 32920 查看菜单->刷新 32883 分析菜单->自定义数据 33478 画线工具栏命令 重置画线 59800 线段 59808

3.4.2Order对象

对象负责定单管理和查询等操作,接收委托服务器发送来的各种帐户持仓信息。该Order对象还支持多帐户的下单模式,用户可以在闪电下单时截获该事件,并处理成自己的操作方式以达到可以实现比如赢损下单的目的。除此之外,该对象还支持多帐户操作。该对象是金字塔程序化交易最常用的对象,重要程序不言而喻。

下面我们主要介绍一些常用的属性和方法,更多的请用户参考 帮助菜单->VBA编程信息->内部对象

主要属性:

(1)Holding2:得到当前指定帐户的持仓品种数量

(2)OrderNum2:得到所有当前有效的未成交合约品种数量

(3)OrderQueue:顺序执行下单成交,即按委托顺序成交报单,可以用于平仓反手,套利等委托动作 主要方法: Account: Account2: Buy: Sell:

得到当前默认帐户信息 得到指定的帐户信息

开多操作 平多操作

开空操作

BuyShort: SellShort:

平空操作 执行撤单操作

取指定索引的指定帐户的合约持仓信息

CancelOrder: HoldingInfo2:

HoldingInfoByCode2:取指定品种的持仓合约信息 OrderInfo2:

取指定索引的未成交合约信息

36

金字塔决策交易系统—高级教程(2016修订版).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4jqbz8cjuy3y3j94w1fw_10.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top