程序化交易初级教程.docx
12页第一章 公式系统介绍 软件的公式系统是一套功能强大、使用方便的计算机描述系统可供引用的函数近500个可以 说其它软件能做的,该软件都能做到,而且能做得更好,更贴近实盘用户可以通过期货交易 所和证券交易所发送的实时行情数据和软件保存的历史数据按照简单、复杂的运算法则进行分 析、筛选、系统测试和自动交易,在软件中提供了用于公式编写的编辑器: 交易系统公式编 辑器 交易系统旨在建议一套完整的交易规则体系,通过该编辑器对各个相关的交易环节,包 括买入的切入、卖出、止损以及整体的交易性能检验等等做出定量的规定,帮助投资者建立一 套属于自己的买卖规则和理论实现对技术图表分析中各类技术指标和自我定义的技术分析指 标的编写,并且通过软件的分析界面形成图表、曲线、以方便和寻找有意义的技术图形和技术 特征 公式编辑器界面介绍 1)操作方法: 在启动软件后,点击【公式】菜单,选择【编 写趋势模型】会出现趋势模型编写平台如图下图所示,分别按照①~④的步骤进行编写 2 2)设定内容及规则说明: 通过下面的图,我们可以了解利用该公式系统编写模型需设定的内容和相关规则: 3 A:每一个模型必项有一个名称,这个名称由字母、数字或汉子组成,模型名称在所有模型中必 须是唯一的,例如不能同时存在两个AAA模型,模型名称最多31个字符。
B:模型描述是一段文 字,用来简单描述该模型的含义,在模型列表时显示返段文字,这段文字不宜过长 C:该项 选择定义了该模型显示的位置,是在主图上与K线叠加还是显示在副图上,一般来讲,只有少数 几个主图模型会设定为主图叠加,例如MA均线、BOLL线等 D:计算参数:计算参数用来替代 公式中所需要的常数,在使用时可以方便地调节参数,不必修改模型就可以对计算方法进行调 节计算参数包括参数名称、最小值、最大值、缺省值四个部分,参数名称用于标识参数,计 算模型时采用缺省值计算,而最小值和最大值是参数的调整范围 E:公式编辑栏,本栏为模 型公式编辑的文本区 F:设置声音及密码,选中该栏目为模型加密以及定义模型中需要用到 的声音文件 G:公式说明是一段文字,相对于描述而言它可以很长,主要用来描述一个公式模型如何 使 用、注意事项、计算方法等等 4 第二章 模型编写语法与规则 2.1 数据引用 2.1.1、数据来源 模型中的基本数据来源于接收的每日行情数据,这些数据由历史数据引用函 数从数据库中按照一定的方式提取,例如,高开低收(HIGH、OPEN、LOW、CLOSE),成交量 (VOL),持仓量(OPI)等等。
2.1.2、数据类型 按照模型使用的数据类型,系统可以处理 的数据分为两类:变量和常量 所谓变量就是一个随着时间变化而变化的数据,例如成交量; 常量就是一个永远不变的数据例如3,每个函数需要的参数可能是变量也可能是常量,不能随 便乱用,函数计算的结果一般是一个变量 例如计算收盘价均线MA(CLOSE,5),MA函数要求第 一个参数为变量,而CLOSE函数返回的正是一个变量;MA函数要求的第二个参数是常量,5就是一 个常量,所以我们就不能这样书写:MA(5,CLOSE)而是要写成MA(CLOSE,5) 2.1.3、引用方法 1)一般数据引用 对于大多数数据,我们可以通过函数直接将其引用,例如OPEN函数可以帮我 们取到开盘价这一数据编写模型时我们可以将这些数据组合在一起进行加减乘数的数学计算 得到我们想要的分析数据例如,我们想求得今日K线最高价和最低价的差值,就可以利用 HIGH(最高价)和LOW(最低价)做一个数学运算,即HIGH-LOW 2)特殊数据引用 A、跨周期引 用指标数据 在软件当中允许使用不同分析周期上的模型数据,并且支持与自身长短不同的任意 周期引用,IMPORT函数可以帮我取到想要的数据。
基本格式为: #IMPORT [PERIOD,N,FORMULA] AS VAR 引用当前合约,PERIOD参数为N的周期,指标FORMULA的数据 PERIOD支持如下周期: SEC(秒周期),MIN(分钟周期),HOUR(小时周期),DAY(日周期),WEEK(一周), MONTH(一月),QUARTER(一季度),YEAR(一年); 数据引用时不限制周期,即,既可以在 小周期上引用大周期,也可以在大周期上引用小周期的数据 5 例如我们要在1分钟周期上引用30分钟周期的MA5和MA10: 首先建立指标: MA5:MA(C,5);//定 义MA5 MA10:MA(C,10); //定义MA10 保存指标,命名为AA 再建立跨周期模型: #IMPORT[MIN,30,AA] AS VAR MA5Y:VAR.MA5;//跨周期引用30分钟周期的MA5 MA10Y:VAR.MA10;//跨周期引用30分钟周期的MA10 6 B、跨合约引用指标数据 在软件当中允许使用不同合约上的指标数据,但我们需要用一个特殊 的函数来进行引用 基本格式为: #CALL [CODE, FORMULA] AS VAR 引用CODE合约的指标 FORMULA的数据。
例如在IF1410合约1分钟周期上引用IF指数合约1分钟的MA5和MA10指标: 首 先建立指标: MA5:MA(C,5);//定义MA5 7 MA10:MA(C,10); //定义MA10 保存指标,命名为AA 再建立跨合约模型: #CALL [8600,AA] AS VAR MA5Y:VAR.MA5;//跨合约引用1分钟周期的MA5 MA10Y:VAR.MA10;//跨合约引用1分钟周期的 MA10 8 特别注意: 软件中,对某合约加载跨周期模型,会自动申请一定数量的该品种及被引用品种的k线,但如果 数据量无法满足您的需求,请手工进行数据补充工作,手工补充数据方法:(点击文字查看), 您也可以先浏览一下该品种的对应周期K线数据是否完整 2.2 模型编写语法 所有的公式系统都是遵守统一的运算法则,统一的格式进行函数之间的计算在我们编写模型 的时候需要遵循以下原则: 2.2.1 语法 A、命名部分: 支持汉字、字母、数字、划线格式命 名,长度控制在31字符内;命名不能和已存在的公式名称重复 B、定义变量名称 变量名称不 能相互重复 不能与参数名重复 不能与函数名重复 C、需在半角输入法的大写状态下进行编写 D、每个语句应该以分号结束 E、参数部分: 可以设置留个参数 首先是参数名称,然后是参数 的最小值、最大值、最后是参数的默认值。
在定义参数时要注意的是参数名称不可以重复,要 在12个字符内 F、注释或舍去 想要在编写后,加入自己的语言注释,在结尾处用“//”表示; 或者想要舍去某段,在某段最前端加入“//” 9 2.2.2 操作符 操作符将函数连接成为模型,操作符分为数学运算操作符和逻辑判断操作符和定 义变量操作符如下图所示: a、数学运算操作符: 包括+、-、*、/,它从分别对操作符两边 的数据进行加减乘除计算,这同一般意义上的算术计算没有差异 b、逻辑判断操作符 包括 MA10:=MA(C,10); CROSS(MA5,MA10); 例3:TIME取K 线时间 这是一个重要的时间函数,当我们需要尾盘平仓,显示开仓时间时,都要用到这个函数注: 1:该函数在盘中实时返回,在K线走完后返回K线的起始时间 2:该函数返回的是交易 所数据接收时间,也就是交易所时间 3:TIME函数在秒周期使用时返回六位数的形式,即: HHMMSS,在其他周期上显示为四位数的形式,即:HHMM. 4:TIME函数只能加载在日周期以下的 周期中,在日周期及日周期以上的周期中该函数返回值始终未1500 5:使用TIME函数进行尾盘 平仓的操作需要注意 (1)尾盘平仓设置的时间建议设置为K线返回值中实际可以取到的时间 (如:螺纹指数 5分钟周期 最后一根K线返回时间为1455,尾盘平仓设置为 TIME>=1458,CLOSEOUT;则效果测试中不能出现尾盘平仓的信号) (2)使用TIME函数作为尾盘 平仓的条件的,建议开仓条件也要做相应的时间限制(如设置尾盘平仓条件为 TIME>=1458,CLOSEOUT;则相应的开仓条件中需要添加条件TIMEO TIME>=1450,BP; AUTOFILTER; 12 在上面的编写中,由于我 们要在14点50后平仓,那 么在开仓条件中我们也要 加入相应的时间限制,即 开仓条件必须在14店50前 满足才开仓。
例4:线形 描述符 对于模型可以在语 句加上线形描述符,用来 表示如何画该语句描述的 指标线 线形描述符号包 括以下7种描述符写在语 句后分号前,用逗号将它 们与语句分隔开,例如在 上例当中加入一句线形描 述符, C:B*0.618,CIRCLEDOT;该 语句在被执行时,会在图 中添加小圆点画线 ALIGN 设置文字对其方式(左中 右) CIRCLEDOT 小圆点线 COLORSTICK 画柱线 CROSSDOT 画小圆圈线 DOT 画虚线 FONTSIZE 设置字体大小 ICON 显示图标 LINETHICK 线型粗细控制 NODRAW 不画线 POINTDOT 虚线 PRECIS 制定数字的输出精度(小 数点位数) SETSTYLECOLOR 线型的粗细和颜色控制 SOLID 实心显示 SOUND 播放声音 VALIGN 设置文字对齐方式(上中 下) VOLSTICK 画柱线 VOLUMESTICK 画柱线 WORD 显示文字 。





