首页 > 编程知识 正文

期货交易入门流程,期货市场完全指南

时间:2023-05-05 14:49:36 阅读:140916 作者:111

接着上一篇文章继续学习。

所有操作的前提和期货公司前置机连接

exchange.IO("status")函数判断与期货公司前置机连接状态

exchange是什么? 可能也会有同学会问。

零基础入门商品期货程序化交易(1)篇的最后,我们试着进行了实际运行。 在FMZ的实盘页面的状态栏中显示所有合同代码和相关信息表的功能。 在我们实践的时候,在实盘页面上放在实盘上的华泰期货次席(看穿式监管)是相应策略码中的exchange即交易所的对象。

所以什么是exchange?

简单了解exchange是我们配置的期货公司的账户!

能否在实盘上安排多个代表这类期货公司账户的交易所对手?

答:当然可以,但这是有点高阶的内容,我们只需要知道就可以了。 暂时不能用。

前篇中,学习了if(…) (else )…)句子的基本使用方法。 接下来我们要学习重点。 之前解释了很多基础语法是为了这里的一个功能。 还记得我们说的话吗? 是连接所有操作的前提——期货公司的前台机器这个词吗? if语句括号内的判断条件是用于判断与期货公司前台的连接状态。 此if中的表达式条件由exchange.IO('status '函数调用返回。

调用exchange.io(status ) )函数时返回true表示已连接到期货公司的前台机器(并且已成功登录)。

调用exchange.io(status ) )函数时返回false,表示未连接到期货公司的前置机。 理由可能如下。

因为还没到开放时间,期货公司的前台服务器没有打开。 如果帐户配置错误,将输出错误日志。 请参考上一篇文章中提到的内容。 如果认证失败,无法看穿配置的期货公司,还会输出错误日志。 还会输出网络原因、IP地址错误、端口错误等错误日志。 在这里可以很容易地理解这个程序的逻辑结构。

function main () while(true ) (if ) exchange.io ) (Status ) )商品期货策略的整体框架如下:

从策略代码的主函数(main函数)执行。 首先遇到while循环,循环的条件总是真值。 所以这个循环会不断地执行。 每次执行该循环的循环体代码时,都使用if语句进行判断。 exchange.io(status ) )函数调用时返回的值,可以确定系统与期货公司前台服务器的连接和登录状态(exchange.io )为固定符号,并死记硬背。 请参阅。 如果exchange.IO('status ' )函数返回true,则会执行相应if代码块中的代码。 如果返回false,则执行相应的else代码块中的代码。

exchange.SetContractType()设置合约函数

接下来看看连接了期货公司的前台服务器后会做什么。 如果exchange.io(status ) )函数调用返回true,则程序执行流程将进入if语句对应的代码块,验证与期货公司前台的通信连接正常。 可以执行行情的获取、下单等操作。 但是,请考虑一下我们做这些操作是否需要目标。 简单来说,对哪个合同进行订单操作? 取得哪个合同的行情?

在本节中,您将学习SetContractType (),这是一个新的fmz API函数。 SetContractType ) )是exchange交易所对象的成员函数。 简单来说,SetContractType () )基于对exchange的调用,用于设置当前由一个名为exchange的交易所交易方代表的期货帐户操作的合同。

传递了代码中的exchange.setcontracttype(MA000 ) )参数ma000。 MA000是合同代码。 让我们在零基础入门商品期货程序化交易(1)上查看一个实践行为的示例。 在合同代码表中,可以看出MA代码是指甲醇合约。 那么,什么是000呢? 000是FMZ平台定义的指数合同代码,组合MA000是甲醇指数合同。 如FMZ定义的虚拟合同中有主力连续合同(用888表示),MA888表示该合同是甲醇主力连续合同。

exchange.GetTicker()获取行情数据

设定当前合同,明确要操作的合同后,可以获取该合同的行情数据。

我们学习的另一个函数GetTicker (),该函数也是exchange交易所对象的成员函数。 作用是获取当前实时行情数据,数据结构如下。

{ 'Info': { . },' High': 2559,' Low': 2559,' Sell': 2635,' buy'33602559,' Last': 2559

nInterest": 1218937, "Time": 1625799200000}

var ticker = exchange.GetTicker()这行代码调用了GetTicker()函数获取当前实时行情赋值给声明的ticker变量。

Log("MA000 ticker:", ticker)

Log函数作为使用最频繁的函数,使用起来也很简单。其作用就是输出传入的参数在实盘的日志区域。

Log函数用于把一些认为关键的信息在实盘日志中输出,也常用于调试策略程序,观察分析程序中的数据。这里我们执行的Log("MA000 ticker:", ticker)函数,其中传入了2个参数。第一个参数是一个字符串MA000 ticker:,第二个参数是被赋值后的ticker变量。

运行时输出的日志如下图:

LogStatus()和_D()函数

最后再学习这两个FMZ的API函数,本例就算是学习完了。

LogStatus函数和Log函数类似,只不过Log函数是在实盘页面的日志区域输出。LogStatus函数是在实盘页面的状态栏上输出,如图:

至于LogStatus函数还有很多有趣的用法,目前可以暂时先了解到此。(有兴趣的可以查看API文档自行提前学习:https://www.fmz.cn/api#logstatusmsg)

那么_D()函数是做什么用的呢?

_D()函数用途也十分简单,如果不传入参数就是返回一个当前的时间字符串,通常是用来打印当前时间方便观察。

回测测试 function main(){ while(true){ // 需要在判断exchange.IO("status")函数返回true,即为真值时才可调用行情、交易等函数 if(exchange.IO("status")){ exchange.SetContractType("MA000") var ticker = exchange.GetTicker() Log("MA000 ticker:", ticker) LogStatus(_D(), "已经连接CTP !") } else { LogStatus(_D(), "未连接CTP !") } }}

至此,以上这段代码从整体到细节我们都分析了一遍。前几篇内容中也提过,其实我们在FMZ上学习的时候可以充分利用FMZ平台的回测系统学习策略设计、编程语言语法,甚至提升自己的DEBUG能力(排错能力)。以上代码也可以在回测系统中运行。

设置好之后,点击开始回测按钮策略就在回测系统中运行起来了。

当然,这个策略代码例子仅仅是在判断实盘程序和exchange对应的期货公司前置机连接之后,设置exchange对象当前操作的合约为MA000即甲醇指数合约,然后打印实时行情数据。在未连接的状态下,仅仅在状态栏上输出时间未连接CTP !。当然,这些和期货公司连接之类的机制在回测系统中都是模拟的,为了让策略的回测和实盘在设计上尽量保持一致。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。