第五节 界面开发
开发CTP程序化交易有一个基本的要求,就是代码运行要高效,快速,所以,我们这里没有复杂的界面,登陆,主界面都在一个界面上,单界面的程序,我们现在一步步的来进行。
- 如图,用VS2019 系统自动生成一个单界面的程序框架,按下图一步步的操作
到止,我们得到了一个单界面的对话框程序,现在我们进行第二步操作,把需要的控件拖到这个界面上来,完成人机界面的大概布局。
- 这一小节,我们布局主界面的控件
如图,有些控件是不可见的,设计的时候可以看到,运行的时候是看不到的。
比如:行情前置地址等这一排控件,还有右下角的那几个按钮。这是为了设计的方便,更是为了让C++ 基础稍微差一点的读者看得更加明了,一目了然,基础好一点的读者,可以直接用变量和函数取代这些内容,也可以在此源码的基础上自行修改。
现在简单介绍一下这些控件:
- 登入\退出:一个Group-box Control 控件作为这个区域的分界;在这个区里有 Static Text 控件作为标签,比如 账号,密码 这两个标签;还有Edit Control 控件作为输入账号、密码的接收控件;两个 Button 按钮分别是登入、关闭。旁边还有两个 Radio Button 按钮,这个的作用是用来切换CTP的两个服务器的前置地址,因为,这两个服务器,不是时时刻刻都开放的,有时这个可以用,有时那个可以用,所以写了这个功能,方便调试程序等。
- 订阅\退订\查询:这个区域里,只有几个 Button 和一个 Edit Control 控件,分别是 查持仓数据,查挂单数据,订阅,退订,输入合约代码的接收框控件。
- 报单\撤单\策略:这个区域里,除了上述介绍的控件外,增加了几个单钩选控件 Check Box 和 Radio Button 控件。主要功能是为下单等操作提供参数的,比如 对价,钩选后,程序会根据买多还是卖空从最新的深度行情数据中获取相对应的价格填写在旁边的价格输入框中。
- 消息区域:这里用了一个 Listbox Control 控件,用来把操作过程中的一些信息列出来,供操作者参考,比如:登陆成功,密码错误,连接超时,成交通知,挂单通知等等。
- 行情数据:这里用了一个 List Control 控件用来列示深度行情数据,这个地方需要注意一点,要把这个控件的 视图 属性改为 Report ,其它地方不用改。
- 下面的两个区域:持仓明细,挂单明细 跟 第 5 点是一样的,这里不再重复介绍。
- 主界面的右边还有一些按钮和输入框,这些是运行时不可见的,为了开发及读者看代码时方便而用了控件,并把控件的功能写在控件上或旁边的标签上,读者可以把这些控件以变量或函数的方式重写一下,基本上只需要把里面的代码复制过来就可以了。