零基础入门商品期货程序化交易(3)

接着上篇文章我们继续学习 。
所有操作的前提--和期货公司前置机连接
exchange.IO("status")函数判断与期货公司前置机连接状态
可能有的同学会问exchange是什么?
答:在 零基础入门商品期货程序化交易(1) 篇最后 , 我们动手实践了一下运行了一个看上去挺复杂的策略 , 功能是在FMZ实盘页面状态栏上显示一个表格 , 表格上为所有的合约代码以及相关信息 。 我们实践时在实盘页面给实盘配置的 华泰期货次席(看穿式监管) 就对应策略代码中的exchange即交易所对象 。
所以exchange是什么?
答:简单理解exchange就是我们配置好的期货公司账户!
那在实盘上可以配置多个这样的代表期货公司账户的交易所对象么?
答:当然可以 , 不过这属于略微高阶一点的内容 , 我们仅仅知道就可以 , 暂时用不到 。
上篇我们学会了if(...) {...} else {...}语句的基本用法 。 接着我们就要学习重点了 , 前面讲解了那么多基础语法就是为了这里的一个功能 。 还记得我们说过的:所有操作的前提--和期货公司前置机连接这句话么?在if语句的小括号中的判断条件就是用来判断和期货公司前置机连接状态的 。 这个if中的表达式条件由exchange.IO("status")函数调用返回 。
exchange.IO("status")函数调用时返回true , 表示与期货公司前置机已经连接(并且正常登录) 。
exchange.IO("status")函数调用时返回false , 表示与期货公司前置机未连接 。 原因可能是:
1、未到开盘时间 , 期货公司前置机服务器并未开启 。
【零基础入门商品期货程序化交易(3)】2、账户密码配置错误 , 这时有错误日志输出 , 参看前几篇文章中提及的内容 。
3、认证失败 , 配置的期货公司未看穿式认证 , 这时也有错误日志输出 。
4、网络原因 , IP地址错误、端口错误等 , 伴随错误日志输出 。
这里就很容易理解这个程序逻辑结构了:
零基础入门商品期货程序化交易(3)
文章图片

整个商品期货策略框架就是:
从策略代码的主函数 , 也就是main函数开始执行 。 首先遇到了一个while循环 , 并且循环的条件恒定为真值 。 所以这个循环会不停的执行 。 每次执行这个循环的循环体代码时 , 会使用if语句进行判断 , 通过exchange.IO("status")函数调用时返回的值来确定系统与期货公司前置机服务器的连接以及登录状态(exchange.IO("status")是固定写法可以死记硬背!) 。 如果exchange.IO("status")函数返回了true则执行对应的if代码块内的代码 。 如果返回了false则执行对应的else代码块内的代码 。
exchange.SetContractType()设置合约函数
接着我们看看如果和期货公司前置机服务器连接上之后要做点什么操作 。 当exchange.IO("status")函数调用返回true时程序的执行流程就进入了if语句对应的代码块 , 这时已经确定了和期货公司前置机通信连接正常 。 可以执行获取行情、下单等操作 。 但是请想一想我们做这些操作是不是需要有个目标 , 简单说就是要对哪个合约做下单操作?获取哪个合约的行情?
这里我们就要学习到一个新的FMZ的API函数:SetContractType() , 可以看到SetContractType()是exchange交易所对象的成员函数 。 简单说就是SetContractType()是基于exchange调用的 , 作用是设置exchange这个交易所对象代表的期货账户当前所要操作的合约 。
代码中exchange.SetContractType("MA000")我们传入了参数MA000 。 MA000是一个合约代码 , 我们查询 零基础入门商品期货程序化交易(1) 中实践运行的例子显示的合约代码表格里 , 可以看到MA代码是指甲醇合约 , 那么000是指什么呢?000是FMZ平台定义的指数合约代码 , 组合起来MA000就是甲醇指数合约 。 类似的在FMZ上定义的虚拟合约还有主力连续合约(使用888表示) , 写法是MA888表示这个合约是甲醇主力连续合约 。

特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。