文华财经“麦语言”函数手册-利来w66国际

文华财经“麦语言”函数手册原创ivenus日常记录2020/05/14 10:35阅读数 1w自编模型支持的操作符操作符意义举例+加法close+open;返回收盘价与开盘价的和。-减法close-open;返回收盘价与开盘价的差。*乘法close*open;返回收盘价与开盘价的积。/除法close/open;返回收盘价与开盘价的商。 与(并且),也可简写为andclose open ref(close open,1);当根k线与前一根k线都收阳返回1,否则返回0。||或(或者),也可简写为orclose open||ref(close open,1);当根k线收阳或前一根k线收阳返回1,否则返回0。 大于close open;当根k线的收盘价大于开盘价(阳线)返回1,否则返回0。 小于close open;当根k线的收盘价小于开盘价(阴线)返回1,否则返回0。 =大于等于close =2000;当根k线收盘价大于等于2000返回1,否则返回0。 =小于等于close =2000;当根k线收盘价小于等于2000返回1,否则返回0。 不等于date ref(date,1);当根k线的日期与前一根k线的日期不等(当根k线为当日面盒子运行中,bkvol不受资金情况的限制,按照信号显示开仓手数。2、回测、模组运行中:(1)如果资金不够开仓,开仓手数为0,bkvol返回值为0。(2)bk(bpk)信号出现并且确认固定后,bkvol的取值增加开仓手数的数值;sp(spk)信号出现并且确认固定后,bkvol的取值减少平仓手数的数值。例:bkvol=0 c o,bk(1);//多头理论持仓为0并且收盘价大于开盘价时,买开一手bkvol =1 h hv(h,5),bk(2); //多头持仓大于等于1,并且当根k线的最高价大于前面5个周期中最高价中最大值时,加仓2手bkvol 0 l ref(l,5),sp(bkvol); 多头持仓大于0,并且当根k线的最低价小于5个周期前k线的最低价时,卖平所有多头持仓 = font= bkvol1买开信号手数用法:bkvol1返回模型当前的多头理论持仓。1、加载运行:(1)模组子账户初始化后,bkvol1仍然返回根据信号下单手数计算的理论持仓,不受账户持仓的影响。(2)模组运行中手动调仓,头寸同步修改持仓,bkvol1返回值不变,仍然返回根据信号下单手数计算的理论持仓。(3)页面盒子运行中,bkvol1不受资金情况的限制,按照信号显示开仓手数。2、回测、模组运行中:(1)如果资金不够开仓,开仓手数为0,bkvol1返回值为0。(2)bk(bpk)信号出现并且确认固定后,bkvol1的取值增加开仓手数的数值;sp(spk)信号出现并且确认固定后,bkvol1的取值减少平仓手数的数值。例:bkvol1=0 c o,bk(1);//多头理论持仓为0并且收盘价大于开盘价时,买开一手bkvol1 =1 h hv(h,5),bk(2); //多头持仓大于等于1,并且当根k线的最高价大于前面5个周期中最高价中最大值时,加仓2手bkvol1 0 l ref(l,5),sp(bkvol1); 多头持仓大于0,并且当根k线的最低价小于5个周期前k线的最低价时,卖平所有多头持仓 = font= bkvol2买开信号手数用法:bkvol2返回模型当前的多头持仓。1、加载运行:(1)模组子账户初始化后,bkvol2返回的理论持仓仍然延续,返回模型信号手数,不受账户持仓的影响。(2)页面盒子和模组加载中,bkvol2不受资金情况的限制,按照信号显示开仓手数。(3)模组运行过程中bk(bpk)信号出现并且确认固定后,bkvol2的取值增加开仓手数的数值;sp(spk)信号出现并且确认固定后,bkvol2的取值减少平仓手数的数值。2、回测:(1)bkvol2不受资金情况的限制,按照信号显示开仓手数。(2)bk(bpk)信号出现并且确认固定后,bkvol2的取值增加开仓手数的数值;sp(spk)信号出现并且确认固定后,bkvol2的取值减少平仓手数的数值。例:bkvol2=0 c o,bk(1);//多头持仓为0并且收盘价大于开盘价时,买开一手bkvol2 =1 h hv(h,5),bk(2); //多头持仓大于等于1,并且当根k线的最高价大于前面5个周期中最高价中最大值时,加仓2手bkvol2 0 l ref(l,5),sp(bkvol2); 多头持仓大于0,并且当根k线的最低价小于5个周期前k线的最低价时,卖平所有多头持仓 = font= bkvolumebkvolume 取得tick图所定义数据区买开成交量的和。注:1、使用该函数前,必须先调用def_tickdata函数定义tick数据区。2、该函数必须在tick图中使用,在k线图上返回空值。例:def_tickdata(0,5);//调用五秒的tick数据vv:bkvolume;//加载到有五档授权的tick图中,定义vv为五秒内(包含当笔tick)所有tick的买开的成交量的和bpbigcountbpbigcount 取得tick图所定义数据区买平大单成交次数的和。注:1、使用该函数前,必须先调用def_tickdata函数定义tick数据区。2、使用该函数前,必须使用setbigvol函数定义大单阀值,否则该函数返回0。3、该函数必须在tick图中使用,在k线图上返回空值。例:def_tickdata(0,5);//调用五秒的tick数据setbigvol(10);//设置大单阀值为10手vv:bpbigcount;//加载到有五档授权的tick图中,定义vv为五秒内(包含当笔tick)所有tick的买平大单的成交次数的和bpbigtotvolbpbigtotvol 取得tick图所定义数据区买平大单成交量的和。注:1、使用该函数前,必须先调用def_tickdata函数定义tick数据区。2、使用该函数前,必须使用setbigvol函数定义大单阀值,否则该函数返回0。3、该函数必须在tick图中使用,在k线图上返回空值。例:def_tickdata(0,5);//调用五秒的tick数据setbigvol(10);//设置大单阀值为10手vv:bpbigtotvol;//加载到有五档授权的tick图中,定义vv为五秒内(包含当笔tick)所有tick的买平大单的成交量的和bpvolumebpvolume 取得tick图所定义数据区买平成交量的和。注:1、使用该函数前,必须先调用def_tickdata函数定义tick数据区。2、该函数必须在tick图中使用,在k线图上返回空值。例:def_tickdata(0,5);//调用五秒的tick数据vv:bpvolume;//加载到有五档授权的tick图中,定义vv为五秒内(包含当笔tick)所有tick的买平的成交量的和ceilingceiling(a):返回沿a数值增大方向最接近的整数,若a为整数,则返回值为a。例1:ceiling(2.1);//求得3。例2:ceiling(-8.8);//求得-8。例3:ceiling(c*1.01);//求收盘价的1.01倍向上取整例4:ifelse(c-intpart(c) =0.5,ceiling(c),floor(c));//对收盘价四舍五入后取整数部分checksigchecksig 设置信号确认与复核的指令价方式(tick逐笔回测,可设置回测精度)用法:checksig(sig,mode1,time1,mode2,time2,interval);1、当interval不为0时,interval数据时间间隔,每隔interval秒计算一次信号,sig为信号,mode1为信号确认方式,time1信号确认时间乘数,mode2信号复核方式,time2信号复核时间乘数。(例:interval为10,豆粕合约开盘面盒子中,休盘前最后一根k线提前n秒确认信号下单,k线走完不进行信号复核。即:如果提前确认信号下单后,k线走完后不满足条件信号消失,也不进行信号消失处理5、n不支持变量,且n不能大于k线的总秒数。6、只有在休市开始时间和k线走完时间重合,此设置才起作用。例如:15分钟周期上,在10:15分k线走完时间和休市开始时间重合,10:15这根k线提前n秒走完。7、模型中不支持同时写入closekline和closekline_min函数。8、对于夜盘合约,夜盘收盘不是当日收盘,15点收盘才算作当日收盘。夜盘合约只显示夜盘数据时,夜盘收盘算作当日收盘。9、该函数不支持加载到量能周期和日线以上的周期中使用。例:c hv(h,4),bk;//价格大于前四个周期高点开多仓c ma(c,5),sp; 价格小于5周期均线,平多仓 br= closekline(1,10);//设置收盘前的最后一根k线提前10秒走完。autofilter;closekline_minclosekline_min(type,n) 设置k线提前n分钟走完,k线走完进行复核用法:closekline_min(type,n),type=0,代表每小节和收盘前最后一根k线提前n分钟走完,k线走完进行复核,type=1,代表收盘前最后一根k线提前n分钟走完,k线走完进行复核,type=2,代表每一根k线提前n分钟走完,k线走完进行复核。n是时间(分钟数)。注:1、该函数只能用于收盘价模型。2、模型中含有该函数,回测的基础数据为1分钟数据。3、该函数不支持加载到秒周期、量能周期和日线以上周期中使用。4、模型中含有该函数,休盘前最后一根k线提前n分钟确认信号下单,k线走完进行信号复核。(1)、回测中:休盘前最后一根k线提前n分钟确认信号下单,k线走完时进行复核,如果不满足条件,在开盘后做信号消失处理。(2)、模组加载中:休盘前最后一根k线提前n分钟确认信号下单,k线走完时进行复核,如果不满足条件,在模组不关机连续运行的情况下,在开盘后做信号消失处理。(3)、该函数不支持加载到页面盒子中使用。5、n不支持变量,且n不能大于k线的总分钟数。6、只有在休市开始时间和k线走完时间重合,此设置才起作用。例如:15分钟周期上,在10:15分k线走完时间和休市开始时间重合,10:15这根k线提前n分钟走完。7、对于夜盘合约,夜盘收盘不是当日收盘,15点收盘才算作当日收盘。夜盘合约只显示夜盘数据时,夜盘收盘算作当日收盘。例:c hv(h,4),bk;//价格大于前四个周期高点开多仓c ma(c,5),sp; 价格小于5周期均线,平多仓 br= closekline_min(1,2);//设置收盘前的最后一根k线提前2分钟走完。autofilter;closeminutecloseminute,返回k线开始时间距离收盘前的分钟数。注:1、该函数只能用于收盘价模型。2、该函数返回当根k线开始时间距离收盘的分钟数。3、该函数需要在分钟,小时周期使用;不支持在tick周期,秒周期,量能周期,日线及以上周期使用。4、该函数的返回值包含小结和午休的时间。5、closeminute返回的是交易所的时间,不是本机的时间。6、对于夜盘合约,夜盘收盘不是当日收盘,15点收盘才算作当日收盘。7、closeminute在合约交割日,返回实际收盘时间。8、closeminute加载到主力合约上,主力换月和合约交割在同一天,则按照交割日的收盘时间计算,主力换月和合约交割不在同一天,那么按照正常的非交割日进行计算。9、该函数不支持和closesec同时使用。例:cross(c,ma(c,5)) closeminute 5,bk;//五分钟周期上,收盘价上穿五周期均线,开仓,当天最后一根k线不交易closeminute =5,sp;//五分钟周期上,最后一根k线尾盘平仓closekline(1,10);//收盘前最后一根k线提前10秒判断k线走完autofilter;closeminute1closeminute1,返回距离收盘前的分钟数。注:1、该函数只能用于指令价模型。2、历史k线:该函数返回k线结束时间距离收盘的分钟数。盘中:该函数返回k线当前时间距离收盘的分钟数。3、该函数需要在分钟,小时,日线周期使用;不支持在tick周期,秒周期,量能周期,周线及以上周期使用。4、该函数返回值包含小结和午休的时间。5、closeminute1返回的是交易所的时间,不是本机的时间。6、对于夜盘合约,夜盘收盘不是当日收盘,15点收盘才算作当日收盘。7、closeminute1在合约交割日,返回实际收盘时间。8、closeminute1加载到主力合约上,主力换月和合约交割在同一天,则按照交割日的收盘时间计算,主力换月和合约交割不在同一天,那么按照正常的非交割日进行计算。9、该函数不支持和closesec1同时使用。10、closeminute1与逐分钟回测函数checksig_min 、multsig_min、panzhong_min连用,想实现日内闭式前及时平仓,closeminute1的参数取值需大于1,即closeminute1需 =大于1 的值。例:cross(c,ma(c,5)),bk;//最新价上穿五周期均线,买开multsig(0,0,1,0);//使用tick数据回测,出信号立即下单,不复核closeminute1 =1,closeout;//收盘前1分钟,清仓autofilter;closesecclosesec,返回k线开始时间距离收盘前的秒数。注:1、该函数只能用于收盘价模型。2、该函数返回当根k线开始时间距离收盘的秒数。3、该函数需要加载到秒周期使用;不支持在tick周期,量能周期,分钟及以上周期使用。4、该函数的返回值包含小结和午休的时间。5、closesec返回的是交易所的时间,不是本机的时间。6、对于夜盘合约,夜盘收盘不是当日收盘,15点收盘才算作当日收盘。7、closesec在合约交割日,返回实际收盘时间。8、closesec加载到主力合约上,主力换月和合约交割在同一天,则按照交割日的收盘时间计算,主力换月和合约交割不在同一天,那么按照正常的非交割日进行计算。9、该函数不支持和closeminute同时使用。例:cross(c,ma(c,5)) closesec 15,bk;//十五秒周期上,收盘价上穿五周期均线,开仓,当天最后一根k线不交易closesec =15,sp;//15秒周期上,最后一根k线尾盘平仓closekline(1,5);//收盘前最后一根k线提前5秒判断k线走完autofilter;closesec1closesec1,返回距离收盘前的秒数。注:1、该函数只能用于指令价模型。2、历史k线:该函数返回k线结束时间距离收盘的秒数。盘中:该函数返回k线当前时间距离收盘的秒数。3、该函数不支持在tick周期,量能周期使用。4、该函数返回值包含小结和午休的时间。5、closesec1返回的是交易所的时间,不是本机的时间。6、对于夜盘合约,夜盘收盘不是当日收盘,15点收盘才算作当日收盘。7、closesec1在合约交割日,返回实际收盘时间。8、closesec1加载到主力合约上,主力换月和合约交割在同一天,则按照交割日的收盘时间计算,主力换月和合约交割不在同一天,那么按照正常的非交割日进行计算。9、该函数不支持和closeminute1同时使用。例:cross(c,ma(c,5)),bk;//最新价上穿五周期均线,买开multsig(0,0,1,0);//使用tick数据回测,出信号立即下单,不复核closesec1 =5,closeout;//收盘前五秒钟,清仓。autofilter;coefficientrcoefficientr(x,y,n) 求x、y在n个周期内的皮尔森相关系数。注:1、n包含当前k线。2、n为有效值,但当前的k线数不足n根,该函数返回空值。3、n为0时,该函数返回空值。4、n为空值,该函数返回空值。5、n可以为变量。算法举例:计算coefficientr(o,c,3);在最近一根k线上的值。用麦语言函数可以表示如下:(((o-ma(o,3))*(c-ma(c,3)) (ref(o,1)-ma(o,3))*(ref(c,1)-ma(c,3)) (ref(o,2)-ma(o,3))*(ref(c,2)-ma(c,3))) /(std(o,3)*std(c,3)))/(3-1);例:cc: c;//定义文华商品的收盘价保存指标,命名为aa加载豆粕合约的指标为:#call[7186,aa] as varc1:var.cc;//跨合约引用文华商品的收盘价coefficientr(c1,c,10);//求文华商品和豆粕在10个周期内的皮尔森相关系数。//皮尔森相关系数是衡量两个随机变量之间的相关程度的指标colorstickcolorstick 画柱线。用法:x,colorstick;画柱线,柱高为x的值,x大于0为红色柱线,x小于0为青色柱线。注:不支持将该函数定义为变量,即不支持下面的写法:a:colorstick;例:c-o,colorstick;//画柱线,阳线时画红色向上柱线,阴线时画青色的向下柱线。condbarscondbars(a,b);取得最近的满足a、b条件的k线间周期数注意:1、该函数返回周期数不包含最后满足条件的k线2、距离当前k线最近的满足的条件为b条件,则该函数返回值为最后一次满足a条件的k线到满足b条件的k线的周期数(a条件满足后的面盒子中使用。7、该函数支持一根k线上多个信号,最大的信号个数为n。n取值范围为1-60,超过这个范围,n值按照60计算8、checksig、multsig、multsig_min和checksig_min函数不能同时出现在一个模型中。9、模型中不含有该函数,信号执行方式默认为k线走完确认信号下单10、n支持写为变量。例:c ref(h,1),bk;//价格大于上一根k线最高价,开多仓c bkprice-3*minprice,sp; 亏损3点止损 br= multsig(2,0,4,10);//设置信号复核确认方式为开仓信号,出信号后面盒子中使用。8、该函数支持一根k线上多个信号,最大的信号个数为n。n取值范围为1-60,超过这个范围,n值按照60计算9、checksig、multsig、multsig_min和checksig_min函数不能同时出现在一个模型中。10、模型中含有该函数,效果测试中模型信号价位为模型满足条件时候行情的最新价。11、模型中不含有该函数,信号执行方式默认为k线走完确认信号下单。12、n支持写为变量。例:c ref(h,1),bk;//价格大于上一根k线最高价,开多仓c bkprice-3*minprice,sp; 亏损3点止损 br= multsig_min(3,0,3);//设置信号复核确认方式为开仓信号,出信号后3分钟下单,不复核;平仓信号出信号立即下单,不复核。一根k线上最大信号个数为3。autofilter;mvmv(a,...p) 取a到p的均值。注:1、支持取2-16个数值的均值2、a...p可以为数字也可以为变量例1:mv(close,open);//取收盘价和开盘价的平均值myvolmyvol 取下单手数用法:取下单手数,多用于在非过滤模型加载多个合约的时候的手数计算。注:1、模组加载:主图右键加载到模组:返回主图回测参数设置中设置的手数新建模组:返回交易参数中设置的手数2、页面盒子:主图右键加载到盒子:历史信号myvol返回主图回测参数中设置的手数,盘中新生成的k线返回默认下单手数新建盒子:返回默认下单手数3、主图回测:返回回测参数中设置的手数例://加载参数中下单手数设置为3时,下面编写bk的下单手数为6;c o,bk(2*myvol);c o,sp(bkvol); font= newnew 取得tick图的最新价。注:1、该函数必须在tick图中使用,在k线图上返回空值。2、该函数不需要有五档行情授权。例:nn:new;//加载到tick图中,定义nn为该笔tick的最新价;newhbarsnewhbars(x,n) 计算高于当前x的面盒子运行中,skvol不受资金情况的限制,按照信号显示开仓手数。2、回测、模组运行中:(1)如果资金不够开仓,开仓手数为0,skvol返回值为0。(2)sk(spk)信号出现并且确认固定后,skvol的取值增加开仓手数的数值;bp(bpk)信号出现并且确认固定后,skvol的取值减少平仓手数的数值。例:skvol=0 c o,sk(1); 空头理论持仓为0并且收盘价小于开盘价时,卖开一手 br= skvol =1 l lv(l,5),sk(2); //空头持仓大于等于1,并且当根k线的最低价小于前面5个周期中最低价中最小值时,加仓2手skvol 0 h ref(h,5),bp(skvol); 空头持仓大于0,并且当根k线的最高价大于5个周期前k线的最高价时,买平所有空头持仓 = font= skvol1卖开信号手数用法:skvol1返回模型当前的空头理论持仓。1、加载运行:(1)模组子账户初始化后,skvol1仍然返回根据信号下单手数计算的理论持仓,不受账户持仓的影响。(2)模组运行中手动调仓,头寸同步修改持仓,skvol1返回值不变,仍然返回根据信号下单手数计算的理论持仓。(3)页面盒子运行中,skvol1不受资金情况的限制,按照信号显示开仓手数。2、回测、模组运行中:(1)如果资金不够开仓,开仓手数为0,skvol1返回值为0。(2)sk(spk)信号出现并且确认固定后,skvol1的取值增加开仓手数的数值;bp(bpk)信号出现并且确认固定后,skvol1的取值减少平仓手数的数值。例:skvol1=0 c o,sk(1); 空头理论持仓为0并且收盘价小于开盘价时,卖开一手 br= skvol1 =1 l lv(l,5),sk(2); //空头持仓大于等于1,并且当根k线的最低价小于前面5个周期中最低价中最小值时,加仓2手skvol1 0 h ref(h,5),bp(skvol1); 空头持仓大于0,并且当根k线的最高价大于5个周期前k线的最高价时,买平所有空头持仓 = font= skvol2卖开信号手数用法:skvol2返回模型当前的空头持仓。1、加载运行:(1)模组子账户初始化后,skvol2返回的理论持仓仍然延续,返回模型信号手数,不受账户持仓的影响。(2)页面盒子和模组加载中,skvol2不受资金情况的限制,按照信号显示开仓手数。(3)模组运行过程中sk(spk)信号出现并且确认固定后,skvol2的取值增加开仓手数的数值;bp(bpk)信号出现并且确认固定后,skvol2的取值减少平仓手数的数值。2、回测:(1)skvol2不受资金情况的限制,按照信号显示开仓手数。(2)sk(spk)信号出现并且确认固定后,skvol2的取值增加开仓手数的数值;bp(bpk)信号出现并且确认固定后,skvol2的取值减少平仓手数的数值。例:skvol2=0 c o,sk(1); 空头持仓为0并且收盘价小于开盘价时,卖开一手 br= skvol2 =1 l lv(l,5),sk(2); //空头持仓大于等于1,并且当根k线的最低价小于前面5个周期中最低价中最小值时,加仓2手skvol2 0 h ref(h,5),bp(skvol2); 空头持仓大于0,并且当根k线的最高价大于5个周期前k线的最高价时,买平所有空头持仓 = font= skvolumeskvolume 取得tick图所定义数据区卖开成交量的和。注:1、使用该函数前,必须先调用def_tickdata函数定义tick数据区。2、该函数必须在tick图中使用,在k线图上返回空值。例:def_tickdata(0,5);//调用五秒的tick数据vv:skvolume;//加载到有五档授权的tick图中,定义vv为五秒内(包含当笔tick)所有tick的卖开的成交量的和slopeslope(x,n):得到x的n周期的线型回归的斜率。注:1、n包含当前k线。2、n为有效值,但当前的k线数不足n根,该函数返回空值;3、n为0时,该函数返回空值;4、n为空值,该函数返回空值;5、n可以为变量。举例:用最小平方法计算slope(close,5)在最近一根k线上的的值:1、建立一元线性方程:close=a slope*i m2、close的估计值:close(i)^=a slope*i3、求残差:m^=close(i)-close(i)^=close(i)-a-slope*i4、误差平方和:q=m(1)*m(1) ... m(5)*m(5)=[close(1)-a-slope*1]*[close(1)-a-slope*1] ... [close(5)-a-slope*5]*[close(5)-a-slope*5]5、对线性方程中的参数a,slope求一阶偏导:2*{[close(1)-a-slope*1] ... [close(5)-a-slope*5]}*(-1)=02*{[close(1)-a-slope*1] ... [close(5)-a-slope*5]}*(-5)=06、联立以上两个公式,反解出slope的值:slope={[5*close(1)) ... 1*close(5)]-[close(1) ... close(5)]*(1 2 3 4 5)/5}/[(1*1 ... 5*5)-(1 ... 5)(1 ... 5)/5]以上公式用麦语言函数可以表示如下:((5*c 4*ref(c,1) 3*ref(c,2) 2*ref(c,3) 1*ref(c,4))-sum(c,5)*(1 2 3 4 5)/5)/((square(1) square(2) square(3) square(4) square(5))-square(1 2 3 4 5)/5);例:slope(close,5);表示求收盘价5个周期线性回归线的斜率smasma(x,n,m) 求x的n个周期内的扩展指数加权移动平均。m为权重。计算公式:sma(n)=sma(n-1)*(n-m)/n x(n)*m/n注:1、当n为有效值,但当前的k线数不足n根,按实际根数计算。2、 n为0或空值的情况下,函数返回空值。例1:sma10:=sma(c,10,3);//求的10周期收盘价的扩展指数加权移动平均。权重为3。smmasmma(x,n),x为变量,n为周期,smma(x,n)表示当前k线上x在n个周期的通畅移动平均线算法:smma(x,n)=(sum1-mma x)/n其中sum1=x1 x2 ..... xnmma=sum1/n例1:smma(c,5);//收盘价的5周期通畅移动平均线solidsolid 实心显示。用法:用在volstick、volumestick函数后面,表示柱线实心显示。注:仅支持与volstick、volumestick函数连用。例:vol,volumestick,solid;//画成交量柱状线,柱线实心显示。sortsort(type,pos,n1,n2,...,n16); 按升(降)序排列,取面盒子中使用。例:cross(c,ma(c,5)),bk;//最新价上穿5周期均线做多cross(ma(c,5),c),sp;//最新价下穿5周期均线平多trade_other( if1411 //指定交易合约为股指1411autofilter;trade_reftrade_ref(n) 判断前n次交易是否赢利。注:1、该函数返回当前位置之前的第n次交易是否赢利,如果赢利返回1,亏损返回0。2、从开仓到持仓为0被视为一次交易。3、n支持写为变量或者参数。4、收盘价模型,平仓盈亏=(平仓信号当根k线的收盘价-开仓价格)*手数*交易单位-手续费。指令价模型,平仓盈亏=(平仓信号的指令价-开仓价格)*手数*交易单位-手续费。例:cross(c,ma(c,5)),bk(1);//最新价上穿五周期均线,开仓一手trade_ref(1)=1 trade_ref(2)=1 trade_ref(3)=1,bk(2);//最近连续三笔交易都是赢利的,加仓2手cross(ma(c,5),c),sp(bkvol);//最新价下穿五周期均线,卖平多头持仓trade_smoothingtrade_smoothing 消除隔日跳空函数用法:模型中含有trade_smoothing函数,主图k线为消除跳空后计算得到的k线,模型根据消除跳空后k线取值计算注:1、该函数只支持加载在分钟或小时周期使用2、该函数只能加载在具体合约上使用,不支持加载在指数、主连等虚拟合约上使用3、该函数支持加载在国内期货品种上使用3、该函数不可以与trade_other一起使用4、该函数不支持加载到盒子中使用5、模型中含有该函数,会叠加蓝色k线,蓝色k线为未消除跳空的真实k线数据6、消除跳空机制说明:(1)该函数只消除两个交易日之间的跳空(2)合约上市首日数据为该合约真实数据,之后数据为进行消除跳空处理后拟合数据;(3)模型含有该函数,k线图数据与盘口数据不一致例1ma5:ma(c,5);ma10:ma(c,10);crossup(ma5,ma10),bpk;crossdown(ma5,ma10),spk;trade_smoothing;//消除跳空后的k线的均线满足上穿、下穿条件后执行信号autofilter;trendtrend 获取k线趋势。用法:trend k线的形成过程中最高价先出现,则返回值为3;最低价先出现,则返回值为2;若最高和最低一起出现,则返回值为1;默认为0。trmatrma(x,n): 求x在n个周期的三角移动平均值。算法:三角移动平均线公式,是采用算数移动平均,并且对第一个移动平均线再一次应用算数移动平均。trma(x,n) 算法如下ma_half= ma(x,n/2)trma=ma(ma_half,n/2)注:1、n包含当前k线。2、当n为有效值,但当前的k线数不足n根,函数返回空值。3、n为0或空值的情况下,函数返回空值。4、n支持使用变量例1:trma5:trma(close,5);//计算5个周期内收盘价的三角移动平均。(n不能被2整除)//trma(close,5)=ma(ma(close,(5 1)/2)),(5 1)/2);例2:trma10:trma(close,10);// 计算10个周期内收盘价的三角移动平均。(n能被2整除)trma(close,10)=ma(ma(close,10/2),(10/2) 1));troughtrough求之字转向的前m个波谷的值。用法:trough(x,p,m,c) x满足条件p形成之字转向的前m个波谷的值。c是标记量,取1表示p是百分比数值;取0表示p是绝对数值。注:该函数不支持与指令连用(即该函数不支持与bk\sk\bp\sp\bpk\spk\closeout\stop\stop1出现在同一个模型里)例1:trough(low,10,1,1);表示最低价的10%的之字转向的上一个波谷的数值;trough (ma(low,34),100,1,0);表示34个周期内最低价均线的100个价位的之字转向的上一个波谷的数值troughbarstroughbars 求之字转向的前m个波谷的位置。用法:troughbars(x,p,m,c) 求x满足条件p形成之字转向的前m个波谷的位置。c是标记量,取1表示p是百分比数值;取0表示p是绝对数值。注:该函数不支持与指令连用(即该函数不支持与bk\sk\bp\sp\bpk\spk\closeout\stop\stop1出现在同一个模型里)例1:troughbars(low,10,1,1);表示最低价的10%的之字转向的上一个波谷到当前的周期数;troughbars (ma(low,34),100,1,0);表示34个周期内最低价均线的100个价位的之字转向的上一个波谷到当前的周期数tseqlosstseqloss 判断最大连续亏损额。注:1、该函数返回当前位置之前,连续亏损额的最大值。2、从开仓到持仓为0被视为一次交易。3、收盘价模型,平仓盈亏=(平仓信号当根k线的收盘价-开仓价格)*手数*交易单位。指令价模型,平仓盈亏=(平仓信号的指令价-开仓价格)*手数*交易单位。4、tseqloss的计算不包含手续费。例:cross(c,ma(c,5)),bk(2);//最新价上穿五周期均线,开仓两手cross(ma(c,5),c),sp(1);//最新价下穿五周期均线,卖平1手tseqloss 60,sp(bkvol);//最大连续亏损额大于60时,平掉全部多头持仓tseqwintseqwin 判断最大连续赢利额。注:1、该函数返回当前位置之前,连续赢利额的最大值。2、从开仓到持仓为0被视为一次交易。3、收盘价模型,平仓盈亏=(平仓信号当根k线的收盘价-开仓价格)*手数*交易单位。指令价模型,平仓盈亏=(平仓信号的指令价-开仓价格)*手数*交易单位。4、tseqwin的计算不包含手续费。例:cross(c,ma(c,5)),bk(2);//最新价上穿五周期均线,开仓两手cross(ma(c,5),c),sp(1);//最新价下穿五周期均线,卖平1手tseqwin 20,bk(2);//最大连续赢利额大于20时,加仓2手tsmatsma(x,n):求x在n个周期内的时间序列三角移动平均tsma(a,n) 算法如下:ysum=a[i] a[i-1] ... a[i-n 1]xsum=i i-1 .. i-n 1xxsum=i*i (i-1)*(i-1) ... (i-n 1)*(i-n 1)xysum=i*a[i] (i-1)*a[i-1] ... (i-n 1)*a[i-n 1]k=(xysum -(ysum/n)*xsum)/(xxsum- xsum/n * xsum) //斜率b= ysum/n - k*xsum/nforcast[i]=k*i b //线性回归tsma[i] = forcast[i] k //线性回归 斜率注:1、当n为有效值,但当前的k线数不足n根,函数返回空值。2、n为0或空值的情况下,函数返回空值。3、n支持使用变量例1:tsma5:tsma(close,5);//计算5个周期内收盘价的序列三角移动平均tprofit_reftprofit_ref(n) 取得前第n次交易的盈亏额。注:1、该函数返回当前位置之前第n次交易的盈亏额,如果赢利该函数返回正数,亏损返回负数。2、从开仓到持仓为0被视为一次交易。3、n支持写为变量或者参数。4、收盘价模型,平仓盈亏=(平仓信号当根k线的收盘价-开仓价格)*手数*交易单位。指令价模型,平仓盈亏=(平仓信号的指令价-开仓价格)*手数*交易单位。例:cross(c,ma(c,5)),bk(1);//最新价上穿五周期均线,开仓一手tprofit_ref(1) 0 tprofit_ref(2) 0 tprofit_ref(1) tprofit_ref(2),bk(2);//最近连续两笔交易都是赢利的,且赢利额是增长的,加仓2手cross(ma(c,5),c),sp(bkvol);//最新价下穿五周期均线,卖平多头持仓unit取数据合约的交易单位。用法:unit 取加载数据合约的交易单位。unit1取模组交易合约的交易单位。用法:unit1 取模组交易合约的交易单位。unitlimitunitlimit 取交易合约的限制拥有持仓数用法:unitlimit自动取该合约交易所规定的限制拥有持仓数,避免违规。注:取不到时返回100000(如指数合约)例:(bkvol 1) =unitlimit c o,bk(1);//多头持仓再增加一手仍然小于交易合约的限制拥有的持仓数,并且满足收盘价大于开盘价的开仓条件时,买开一手。valign设置文字对齐方式(上中下)。用法:drawtext(cond,price,text),valignx;cond条件满足时,在price的位置,标注text,文字按照valignx写入的方式对齐。valign0,valign1,valign2,分别表示上对齐,居中对齐,下对齐。例:drawtext(c o,h, 涨 ),align1,valign1,fontsize20,colorgreen;//在阳线的最高价标注文字“涨”,文字居中对齐,字体大小为20,颜色为绿色。valuewhenvaluewhen(cond,x) 当cond条件成立时,取x的当前值。如cond条件不成立,则取上一次cond条件成立时x的值。注:x可以是数值也可以是条件。例1valuewhen(high ref(hhv(high,5),1),high);表示当前最高价大于前五个周期最高价的最大值时返回当前最高价例2:valuewhen(date ref(date,1),o);表示取当天第一根k线的开盘价(即当天开盘价)例3:valuewhen(date ref(date,1),l ref(h,1));//表示在当天第一根k线上判断当前最低价是否大于昨天最后一根k线的最高价。返回1,说明当天跳空高开。返回0,说明当天不满足跳空高开条件。varvar(x,n)求x在n周期内的样本方差。注:1、n包含当前k线。2、n为有效值,但当前的k线数不足n根,该函数返回空值;3、n为0时,该函数返回空值;4、n为空值,该函数返回空值;5、n支持使用变量算法举例:计算var(c,3);在最近一根k线上的值。用麦语言函数可以表示如下:(square(c-ma(c,3)) square(ref(c,1)-ma(c,3)) square(ref(c,2)-ma(c,3)))/(3-1);例:var(c,5)求收盘价在5周期内的样本方差。//表示总体方差的n/(n-1)倍,var(c,5)表示收盘价的5周期总体样本方差的5/4倍。varpvarp(x,n):为x的n周期总体方差注:1、n包含当前k线。2、n为有效值,但当前的k线数不足n根,该函数返回空值;3、n为0时,该函数返回空值;4、n为空值,该函数返回空值;5、n支持使用变量算法举例:计算varp(c,3);在最近一根k线上的值。用麦语言函数可以表示如下:(square(c-ma(c,3)) square(ref(c,1)-ma(c,3)) square(ref(c,2)-ma(c,3)))/3;例:varp(c,5)为收盘价的5周期总体方差//表示数据偏差平方和除以总周期数n,varp(c,5)表示收盘价5个周期的数据偏差平方和除以5.vertlinevertline 画垂直线。用法:vertline(cond,color);条件cond满足时,以颜色color画垂直线。注:1、该函数支持在函数后设置线型(linethick1 - linethick7、pointdot、dot),即支持下面的写法:vertline(cond,color),linethick;2、不支持将该函数定义为变量,即不支持下面的写法:a:vertline(cond,color);例1:vertline(high =hhv(high,30),colorred);//表示在价格创30天新高时画红色垂直线例2:vertline(low =llv(low,30),colorblue),linethick3;//表示在价格创30天新低时画蓝色垂直线,线型粗细为3。vertline1vertline1 画垂直线。用法:vertline1(cond);条件cond满足时,画垂直线。注:1、该函数支持在函数后设置颜色、线型(linethick1 - linethick7、pointdot、dot),即支持下面的两种写法:vertline1(cond),linethick,color;vertline1(cond),color,linethick;2、不支持将该函数定义为变量,即不支持下面的写法:a:vertline1(cond);例1:vertline1(high =hhv(high,30)),colorred;//表示在价格创30天新高时画红色垂直线。例2:vertline1(low =llv(low,30)),colorblue,linethick3;//表示在价格创30天新低时画蓝色垂直线,线型粗细为3。volvol 取得k线图的成交量。注:可简写为v。该函数在当根tick上的返回值为当天所有tick成交量的累计值。例1:vv:v;//定义vv为成交量例2:ref(v,1);//表示前一个周期的成交量例3:v =ref(v,1);//成交量大于前一个周期的成交量,表示成交量增加(v为vol的简写)。voltime量能周期返回这根k线形成的时间,单位:秒。用法:voltime 量能周期时,返回当前k线形成的时间。voltick量能周期返回这根k线形成的tick笔数,单位:笔。用法:voltick 量能周期时,返回当前k线形成的tick笔数。volstickvolstick 画柱线,k线为阳线画红色空心柱,k线为阴线画青色实心柱。注:1、柱高表示数值大小。2、k线为阳线,则对应的柱显示为红色空心,k线为阴线,则对应的柱显示为青色实心。3、默认红柱为空心柱,画实心柱需要加入solid函数。例1:vol,volstick;//画成交量柱状线,柱高表示成交量大小,阳线对应红色空心柱,阴线对应青色实心柱。例2:vol,volstick,solid;//画成交量柱状线,柱线实心显示。volumestickvolumestick 画柱线,k线为阳线画红色空心柱,k线为阴线画青色实心柱。注:1、柱高表示数值大小。2、k线为阳线,则对应的柱显示为红色空心,k线为阴线,则对应的柱显示为青色实心。3、默认红柱为空心柱,画实心柱需要加入solid函数。例1:vol,volumestick;//画成交量柱状线,柱高表示成交量大小,阳线对应红色空心柱,阴线对应青色实心柱。例2:vol,volumestick,solid;//画成交量柱状线,柱线实心显示。volmarginvolmargin 模组子账户持仓保证金用法:volmargin计算当前模组子账户的持仓保证金,用于资金管理。计算公式:volmargin=价格*交易单位*手数*保证金比例注:1、该保证金为动态的保证金,随价格变化而变化2、模组子账户中手动调仓会影响volmargin的返回值3、开仓信号当根k线volmargin=开仓价*交易单位*手数*保证金比例,根据不同信号执行方式,开仓价为:信号执行方式为'k线走完确认信号下单’开仓为当根k线的收盘价信号执行方式为'xxx下单,k线走完进行信号复核’,开仓价为信号发出时行情的最新价信号执行方式为'出信号立即下单,不进行复核’,开仓价为信号发出时行情的最新价4、平仓信号当根k线和无持仓k线,volmargin返回值为05、开仓后未平仓的k线的保证金和开仓信号当根k线的保证金一样,保持不变,当日如果存在未被平掉的持仓并持仓过夜,第二日未平仓k线的保证金不会按照前一日结算价计算wavepeakwavepeak函数 返回k线图波峰位置。用法:wavepeak(n) 如果当前k线最高价大于前后n根k线的最高价返回1,否则返回0。n支持变量。注:1、当n为有效值,但当前的k线数不足n根,或者n为空值的情况下,代表不成立,该函数返回0。2、本函数有未来函数性质。3、该函数不支持与指令连用(即该函数不支持与bk\sk\bp\sp\bpk\spk\closeout\stop\stop1出现在同一个模型里)例1:wavepeak(10); //如果当前k线最高价大于前10根k线最高价且大于后10根k线最高价返回1,否则返回0。例2:k线价格与macd的diff发生顶背离时,标注“顶背离”。diff :=ema(close,12) - ema(close,26);tmp:=wavepeak(5);diff1:valuewhen(tmp=1,diff),nodraw;h1:valuewhen(tmp=1,h),nodraw;tmp1:=h1 ref(h1,1) diff1 ref(diff1,1);drawtext(tmp1,h, 顶背离 例3:hh:=valuewhen(wavepeak(5),h);//取满足最高价大于前后5根k线最高价k线的最高价格wavepeak1wavepeak1(data, n)判断当前k线是否为data变量的波峰位置。用法:wavepeak1(data, n) 当前k线的变量data值大于前后n根k线上的值,则返回1,否则返回0。n支持变量。注:1、当n为有效值,但当前的k线数不足n根,或者n为空值的情况下,代表不成立,该函数返回0。2、本函数有未来函数性质。3、该函数不支持与指令连用(即该函数不支持与bk\sk\bp\sp\bpk\spk\closeout\stop\stop1出现在同一个模型里)例1:wavepeak1(ma(c,5),10); //如果当前k线上的5周期均线的值大于前10根k线的5周期均线的值且大于后10根k线的5周期均线的值,返回1,否则返回0。例2://10周期均线与macd的diff发生顶背离时,标注“顶背离”。diff :=ema(close,12) - ema(close,26);tmp:=wavepeak1(ma(c,10),5);diff1:valuewhen(tmp=1,diff),nodraw;h1:valuewhen(tmp=1,ma(c,10)),nodraw;tmp1:=h1 ref(h1,1) diff1 ref(diff1,1);drawtext(tmp1,h, 顶背离 例3:hh:=valuewhen(wavepeak1(h,5),h);//取满足最高价大于前后5根k线最高价k线的最高价格wavevalleywavevalley函数 返回k线图波谷位置。用法:wavevalley(n) 如果当前k线最低价小于前后n根k线的最低价返回1,否则返回0。n支持变量。注:1、当n为有效值,但当前的k线数不足n根,或者n为空值的情况下,代表不成立,该函数返回0。2、本函数有未来函数性质。3、该函数不支持与指令连用(即该函数不支持与bk\sk\bp\sp\bpk\spk\closeout\stop\stop1出现在同一个模型里)例1:wavevalley(10); //如果当前k线最低价小于前10根k线最低价且小于后10根k线最低价返回1,否则返回0。例2:k线价格与macd的diff发生底背离时,标注“底背离”。diff :=ema(close,12) - ema(close,26);tmp:=wavevalley(5);diff1:=valuewhen(tmp=1,diff);l1:=valuewhen(tmp=1,l);tmp1:=l1 ref(l1,1) diff1 ref(diff1,1);drawtext(tmp1,l, 底背离 例3:ll:=valuewhen(wavevalley(5),l);//取满足最低价小于前后5根k线最低价k线的最低价格wavevalley1wavevalley1(data, n)函数 判断当前k线是否为data变量的波谷位置。用法:wavevalley1(data, n) 当前k线data变量的值小于前后n根k线的data变量的值返回1,否则返回0。n支持变量。注:1、当n为有效值,但当前的k线数不足n根,或者n为空值的情况下,代表不成立,该函数返回0。2、本函数有未来函数性质。3、该函数不支持与指令连用(即该函数不支持与bk\sk\bp\sp\bpk\spk\closeout\stop\stop1出现在同一个模型里)例1:wavevalley1(ma(c,5),10); //如果当前k线上的5周期均线的值小于前10根k线的5周期均线的值且小于后10根k线的5周期均线的值,返回1,否则返回0。例2:10周期均线与macd的diff发生底背离时,标注“底背离”。diff :=ema(close,12) - ema(close,26);tmp:=wavevalley1(ma(c,10),5);diff1:=valuewhen(tmp=1,diff);l1:=valuewhen(tmp=1,ma(c,10));tmp1:=l1 ref(l1,1) diff1 ref(diff1,1);drawtext(tmp1,l, 底背离 例3:ll:=valuewhen(wavevalley1(l,5),l);//取满足最低价小于前后5根k线最低价k线的最低价格weekdayweekday,取得星期数。注:1:weekday的取值范围是0—6。2:该函数在周周期上显示的值始终为5,在月周期上返回k线结束当天的星期数。例1:n:=barslast(month ref(month,1)) 1;count(weekday=5,n)=3 time =1450,bp;count(weekday=5,n)=3 time =1450,sp;autofilter;//每个月交割日尾盘自动平仓。例2:c valuewhen(weekday ref(weekday,1),o) 10,bk; br= autofilter;weektradeweektrade 周内交易函数。用法:模型中写入该函数,信号和资金每周重新初始化进行计算,与历史割裂。注:1、该函数不支持自定义n日、周、月、季、年周期,其他周期均支持。2、回测报告中的出金/入金,为每周出金/入金的和。3、模型中不能同时使用daytrade1\daytrade\weektrade\monthtrade\quartertrade\yeartrade函数。例:ma5^^ma(c,5);ma10^^ma(c,10);crossup(ma5,ma10),bk;//5周期均线上穿10周期均线,买开仓crossdown(ma5,ma10),sk;//5周期均线下穿10周期均线,卖开仓c bkprice-10*minprice,sp; 亏损10点平多 br= c skprice 10*minprice,bp;//亏损10点平空closeminute =1,closeout;//收盘前一分钟,清仓。autofilter;//过滤模型weektrade;//使用每周数据计算winnerwinner 获利盘比例用法:winner(close),表示以当前收市价卖出的获利盘比例,例如返回0.1表示10%获利盘;winner(10.5)表示10.5元价格的获利盘比例注:该函数仅对日线分析周期有效算法:统计小于等于当前收盘价的k线成交量之和与所有k线成交量之和的比值;wordword,显示文字。用法:word(type,text) 当type为1,则在k线最高价位置书写文字text;不为1则在最低价位置书写文字text。注:1:该函数与判断条件连用,如cond,word(type,text)。2、该函数可以用align,valign设置文字的对齐方式。3、该函数可以用fontsize设置文字显示的字体大小。4、该函数可以用color来设置文字显示的颜色。例1:close open,word(1, 阳 ),align0,valign0,fontsize54,colorred;//表示k线收盘大于开盘时,在最高价上写 阳 字,文字左上对齐,字体大小为54,颜色为红色。yearyear,取得年份。注:year的取值范围为1970—2033。例1:n:=barslast(year ref(year,1)) 1;hh:=ref(hhv(h,n),n);ll:=ref(llv(l,n),n);oo:=ref(valuewhen(n=1,o),n);cc:=ref(c,n);//取上一年的最高价,最低价,开盘价,收盘价。例2:nn:=ifelse(year =2000 and month =1,0,1);yeartradeyeartrade 年内交易函数。用法:yeartrade 模型中写入该函数,信号和资金每年重新初始化进行计算,与历史割裂。注:1、该函数不支持年周期,其他周期均支持。2、回测报告中的出金/入金,为每年出金/入金的和。3、模型中不能同时使用daytrade1\daytrade\weektrade\monthtrade\quartertrade\yeartrade函数。例:ma5^^ma(c,5);ma10^^ma(c,10);crossup(ma5,ma10),bk;//5周期均线上穿10周期均线,买开仓crossdown(ma5,ma10),sk;//5周期均线下穿10周期均线,卖开仓c bkprice-10*minprice,sp; 亏损10点平多 br= c skprice 10*minprice,bp;//亏损10点平空closeminute =1,closeout;//收盘前一分钟,清仓。autofilter;//过滤模型yeartrade;//使用每年数据计算ysettle取得k线图的昨结算价。用法:ysettle求某根k线的昨结算价说明:目前只支持国内期货,其他市场显示空值用在周期小于 日 的k线上如5分钟k线,一小时k线,每根k线返回的值为前一天的结算价zigzagzigzag 求之字转向。用法:zigzag(x,n,c)求x的在条件n下的之字转向值。例:zigzag(high,10,1);表示最高价的10%的之字转向zigzag(ma(high,34),100,0);表示34个周期内最高价均线的100个价位的之字转向函数取值具体说明:以zigzag(high,100,0);为例1、从第一根k线的最高价a做为起点开始取值,即a为之字转向的初始值2、后续k线的最高价如果一直为不大于或不小于a的100个价位的值,那么第二个点一直为最新k线上最高价high的取值,随着后续k线上最高价取值的变动,之前k线上之字转向的取值也会发生改变,因为之前k线上之字转向的取值为a点与当前k线最高价连成的趋势线上对应的取值3、例如先出现了大于a的100个价位的k线,当根k线最高价的取值为b,那么后续的k线如果延续上升趋势,大于b的取值,则取代b成为第二点(此时前面k线之字转向的取值发生变化,理由同第2点);后续的k线未延续上升取值,均小于b的取值,则b值确定为第二个点4、确定第二个点之后,寻找后续最高价小于b的100个价位的k线,若未小于100个价位,则第三个点为当前最新k线的最高价5、后续之字转向的取值重复此规律6、参数n不支持变量7、该函数不支持与指令连用(即该函数不支持与bk\sk\bp\sp\bpk\spk\closeout\stop\stop1出现在同一个模型里)#call#call [code, formula] as var 引用code合约的指标formula的数据。注:1、code为文华码,formula为引用指标名,var为定义变量名(此变量名不能以数字开头)。2、默认只能引用同一周期的数据。3、支持加载到自定义周期中使用。4、code的位置不可以为空。5、该函数支持1分钟数据逐笔回测,即该函数可以和multsig_min、checksig_min函数连用;该函数不支持tick数据逐笔回测,即该函数不可以和multsig、checksig函数连用。6、一个模型中#import、#call、#call_plus、#call_other总的语句个数不能超过6个;7、跨合约被引用指标中不能含有未来函数。8、跨合约#call支持如下写法#call[,指标名]as var 表示自动获取加载合约对应的指数合约例1:cc:ref(c,1);//定义一个周期前的收盘价保存指标,命名为aa#call[1201,aa] as varcc:var.cc;//跨合约引用豆粕1501昨天的收盘价#import#import [period,n,formula] as var 引用当前合约,period参数为n的周期,指标formula的数据。注:1、period为周期,n为具体的参数,formula为引用指标名,var为定义变量名(此变量名不能已数字开头);2、period支持如下周期:sec(秒周期),min(分钟周期),hour(小时周期),day(日周期),week(一周),month(一月),quarter(一季度),year(一年);3、支持引用自定义周期;如#import [min,2,macd] as var//引用两分钟周期macd指标数值4、n必须为大于等于1的整数,周及以上周期,n写入大于1的数,按照1计算;例如:#import [week,2,formula] as var//默认引用的是一周的指标;5、主合约周期除了量能周期,tick周期外的都支持;6、该函数可以小周期引用大周期,也可以大周期引用小周期;7、被引用的指标中不能存在引用;8、formula引用指标名可以为字母、汉字或数字命名的指标;9、定义变量名不能与函数名重复;10、一个模型中#import、#call、#call_plus、#call_other总的语句个数不能超过6个;11、使用该函数编写末尾不能编写分号。12、跨周期被引用指标中不能含有未来函数。例1:cc:ref(c,1);//定义一个周期前的收盘价保存指标,命名为aa#import[day,1,aa] as varcc:var.cc;//跨周期引用昨天的收盘价例2:cc:c;//定义收盘价保存指标,命名为cc#import[day,1,cc] as varcc:=var.cc;//跨周期引用日周期上的收盘价cc1:ref(cc,1);//要引用的数据需要写在被引用的指标里,不能写在import模型中。//例1中的cc指标引用日周期上前一个周期的收盘价,需要在被引用的指标中取一个周期前的收盘价,例2中写在import模型中则表示取小周期上一个周期前的值例3:cc:=ref(c,1);//定义一个周期前的收盘价保存指标,命名为aa#import[hour,6,aa]as scc1:=s.cc;//跨周期引用自定义6小时周期的一个周期前的收盘价#import[sec,1,aa]as rcc2:=r.cc;//跨周期引用自定义1秒周期的一个周期前的收盘价#call_plus#call_plus[code,period,n,formula] as var 引用code合约,period参数为n的周期,指标formula的数据。注:1、code为文华码,period为周期,n为具体的参数,formula为引用指标名,var为定义变量名(此变量名不能以数字开头);2、period支持如下周期:min(分钟周期),hour(小时周期),day(日周期),week(一周),month(一月),quarter(一季度),year(一年);3、该函数支持与1分钟数据为基础数据的信号控制函数连用;不支持tick数据逐笔回测。4、支持引用自定义周期;如#call_plus[8600,min,2,macd] as var//引用文华码8600的合约两分钟周期macd指标数值5、n必须为大于等于1的整数,周及以上周期,n写入大于1的数,按照1计算;例如:#call_plus[8600,week,2,formula] as var//默认引用的是一周的指标;6、不支持加载到tick周期、秒周期、量能周期;7、该函数可以小周期引用大周期,也可以大周期引用小周期;8、被引用的指标中不能存在引用;9、formula引用指标名可以为字母、汉字或数字命名的指标;10、定义变量名不能与函数名重复;11、一个模型中#import、#call、#call_plus、#call_other总的语句个数不能超过6个;12、使用该函数编写末尾不能编写分号。13、跨周期跨合约被引用指标中不能含有未来函数。例:cc:ref(c,1);//定义一个周期前的收盘价保存指标,命名为aa#call_plus[8600,day,1,aa] as varcc:var.cc;//跨周期引用if加权昨天的收盘价#call_other#call_other [formula] as var 引用当前合约,当前周期的,指标formula的数据注:1、formula为引用指标名,var为定义变量名(变量名不能以数字开头)。2、默认只能引用同一周期的数据。3、支持加载到自定义周期中使用。4、默认引用当前合约5、该函数支持1分钟数据逐笔回测,即该函数可以和multsig_min、checksig_min函数连用;该函数不支持tick数据逐笔回测,即该函数不可以和multsig、checksig函数连用。6、一个模型中#import、#call、#call_plus、#call_other总的语句个数不能超过6个;7、#call_other函数被引用指标中不能含有未来函数。例1:cc:ref(c,1);//定义一个周期前的收盘价保存指标,命名为aa#call_other[aa] as varcc:var.cc;//跨指标引用当前合约的一个周期前的收盘价数学运算函数及模型相关函数名函数说明abs取整型绝对值。用法:abs(value)返回value的绝对值,value是整型值例:var x;x=abs(5);//x的值为5absf取浮点型的绝对值。用法:absf(valuef)返回valuef的绝对值,valuef是浮点值例:var x;x=absf(-1.5); //x的值为1.5actualleverage取得某期权合约的真实杠杆率。用法:actualleverage(code)返回合约code的真实杠杆率,code为某期权合约的合约代码。注:真实杠杆率=delta*杠杆比率例:var qqactualleverage;//定义一个变量qqactualleverageqqactualleverage=actualleverage( io1404-p-2450 //qqactualleverage的值为合约号为io1404-p-2450的期权合约的真实杠杆率。al_buyavgprice取算法交易组件某合约多头持仓成本价。用法:al_buyavgprice( code 取算法交易组件中code合约的多头持仓成本价,code为合约名。例:var price;price=al_buyavgprice( m1409 //定义一个变量price,price为组件中豆粕1409的多头持仓成本价。al_buyposition取算法交易组件某合约多头持仓。用法:al_buyposition( code 取算法交易组件中code合约的多头持仓,code为合约名。例:var fmlbuyposition;fmlbuyposition=al_buyposition( m1409 //定义一个变量fmlbuyposition,fmlbuyposition为组件中豆粕1409的多头持仓。al_buyprofitloss取算法交易组件某合约多头盈亏。用法:al_buyprofitloss( code 取算法交易组件中code合约的多头盈亏,code为合约名。例:var buyearn;buyearn=al_buyprofitloss();// 定义一个变量buyearn,buyearn的值为组件中豆粕1409的多头盈亏。al_buyremainposition取算法交易组件某合约多头可用持仓。用法:al_buyremainposition( code 取算法交易组件中code合约的多头可用持仓,code为合约名。例:var fmlbuyremainposition;fmlbuyremainposition=al_buyremainposition( m1409 //定义一个变量fmlbuyremainposition,fmlbuyremainposition为组件中豆粕1409的多头可用持仓。说明:可用持仓为刨除当前已挂单的多头持仓数量。al_lastoffsetprofit取算法交易组件最近一次的平仓盈亏。用法:al_lastoffsetprofit();取算法交易组件中最近一次的平仓盈亏。注:1、该函数返回最近一次的平仓盈亏。2、平仓盈亏=(平仓成交价-开仓成交价)*手数*交易单位。其中开仓价格是按照持仓明细,遵循先开先平的原则进行计算。例:var offsetprofit;offsetprofit=al_lastoffsetprofit();// 定义一个变量offsetprofit,offsetprofit的值为该盘口模型最近一次的平仓盈亏。al_offsetprofit取算法交易组件平仓盈亏。用法:al_offsetprofit();取算法交易组件中的平仓盈亏。注:1、该函数返回组件加载开始到现在的累计平仓盈亏2、平仓盈亏=(平仓成交价-开仓成交价)*手数*交易单位。其中开仓价格是按照持仓明细,遵循先开先平的原则进行计算。例:var offsetprofit;offsetprofit=al_offsetprofit();// 定义一个变量offsetprofit,offsetprofit的值为组件中的平仓盈亏。al_sellavgprice取算法交易组件某合约空头持仓成本价。用法:al_sellavgprice( code 取算法交易组件中code合约的空头持仓成本价,code为合约名。例:var price;price=al_sellavgprice( m1409 //定义一个变量price,price为组件中豆粕1409的空头持仓成本价。al_sellposition取算法交易组件某合约空头持仓。用法:al_sellposition( code 取算法交易组件中code合约的空头持仓,code为合约名。例:var fmlsellposition;fmlsellposition=al_sellposition( m1409 //定义一个变量fmlsellposition,fmlsellposition为组件中豆粕1409的空头持仓。al_sellprofitloss取算法交易组件某合约空头盈亏。用法:al_sellprofitloss( code 取算法交易组件中code合约的空头盈亏,code为合约名。例:var sellearn;sellearn=al_sellprofitloss();// 定义一个变量sellearn,sellearn的值为组件中豆粕1409的空头盈亏。al_sellremainposition取算法交易组件某合约空头可用持仓。用法:al_sellremainposition( code 取算法交易组件中code合约的空头可用持仓,code为合约名。例:var fmlsellremainposition;fmlsellremainposition=al_sellremainposition( m1409 //定义一个变量fmlsellremainposition,fmlsellremainposition为组件中豆粕1409的空头可用持仓。说明:可用持仓为刨除当前已挂单的空头持仓数量。callput取得某期权合约的涨/跌。用法:callput(code)返回合约code的涨/跌,code为某期权合约的合约代码。注:该函数返回0,表示put,即期权合约是看跌期权;该函数返回1,表示call,即期权合约是看涨期权。例:var qqcallput;//定义一个变量qqcallputqqcallput=callput( io1404-p-2450 //qqcallput的值为合约号为io1404-p-2450的期权合约的涨/跌。messageout(qqcallput); //输出的值为0,即该合约为看跌期权。ceiling向数值增大方向舍入。用法:ceiling(a)返回沿a数值增大方向最接近的整数。例:ceiling(2.1);求得3,ceiling(-8.8);求得-8。countercounter( funcname ):计数器函数,返回目标函数已经执行的次数,funcname为目标函数名例:var counter,bkid,kd,cond1;void main(){kd=开仓条件;//定义开仓条件counter=counter( t_deal //目标函数为t_dealif(kd cond1==0 ){bkid=t_deal( m1509 ,0,0,0,0);//以对价买开1手豆粕1509cond1=1;}messageout(counter);//进行计数,输出t_deal函数已经执行的次数}currenttime当前时间。用法:currenttime()返回当前时间(以总秒数表示)例:var curtime;curtime=currenttime(); //定义一个变量curtime,curtime的值为当前时间。注意返回值是1970年1月1日至今的总秒数currentservertime取最后一笔行情上的服务器时间。用法:currentservertime( code )取code合约最后一笔行情上的服务器时间注:该函数需要在盘中使用,收盘后不能返回正确的时间。例:var currentservertime;currentservertime=currentservertime( m1501 //定义一个变量currentservertime,currentservertime的值为豆粕1501最后一笔行情上的服务器时间。data.state判断tick数据区是否有效。用法:data.state返回1时,表示当前数据区已经满足了def_tickdata设置的tick容量,当前数据区是有效的;如果不为1,则表示未达到设置的tick容量,数据区无效。注:使用该函数前,需要用var_tickdata定义数据区,用def_tickdata定义数据区变量。例:var_tickdata data;void main(){data=def_tickdata( m1409 ,0,5); //data中装有5秒钟m1409的tick数据if(data.state == 1){data.num; // 表示data数组有多大data[0].ask1; // 表示第一笔tick数据的卖一价。data[data.num-1].ask1;// 表示最新一笔tick的卖一价。}}datetostr日期转换为字符串。用法:datetostr(nsec)把整型数值表示的时间nsec转换为字符串,nsec为时间的总秒数,返回的字符串格式为:yy:mm:dd例:messageout(datetostr(currenttime() ) ); //输出当前日期dayday(time)返回当前时间对应的日期数。用法:1、参数time为当前秒数,即可以为currenttime(),currentservertime( code ),lastordertime()等2、day(time);返回值为:1-31例:var day;void main(){day=day(currentservertime( m1501 ));messageout(day);}def_tickdata定义tick数据区。用法:def_tickdata(code,type,num);code为合约名,type为0时,num表示多少秒(最大60秒);type为1时,num表示多少笔(最大200笔)。注:使用该函数前,需要用var_tickdata定义变量。例:var_tickdata data;void main(){data=def_tickdata( m1409 ,0,5); //data中装有5秒钟m1409的tick数据if(data.state == 1){data.num; // 表示data数组有多大data[0].ask1; // 表示第一笔tick数据的卖一价。data[data.num-1].ask1;// 表示最新一笔tick的卖一价。}}ask1可以替换为:ask2 卖2价ask3 卖3价ask4 卖4价ask5 卖5价bid1 买1价bid2 买2价bid3 买3价bid4 买4价bid5 买5价askvol1 卖1量askvol2 卖2量askvol3 卖3量askvol4 卖4量askvol5 卖5量bidvol1 买1量bidvol2 买2量bidvol3 买3量bidvol4 买4量bidvol5 买5量tickprice 当笔tick数据的价格tickvolum 从开盘到当笔tick数据的成交量累计值activity 返回0为主动买 返回1为主动卖 返回2为主动买等于主动卖delta取得某期权合约的delta值。用法:delta(code)返回合约code的delta值,code为某期权合约的合约代码。注:1、delta表示某期权合约的价位风险,该指标衡量的是标的资产价格变动时,期权价格的变化幅度。2、delta=权利金的变化/相应标的物价格的变化。例:var qqdelta;//定义一个变量qqdeltaqqdelta=delta( io1404-p-2450 //qqdelta的值为合约号为io1404-p-2450的期权合约的delta值。dyninfo获取某合约的60秒速涨、现增仓、现涨。用法:dyninfo(code, type)code:合约代码 type:1,60秒速涨 2,现增仓 3,现涨例:messageout(dyninfo( if1309 , 1)); //输出股指1309的60秒速涨。exit退出程序。用法:exit()退出程序。例:exit(); 退出程序。组件中写此函数表示只运行一次,组件将停止循环,请谨慎使用。说明:退出组件程序后,组件后续不再循环运行。expirationdate取得某期权合约的行权日。用法:expirationdate(code)返回合约code的行权日秒数,code为某期权合约的合约代码。注:该函数返回1970年1月1日至行权日的总秒数。例:var qqexpirationdate;//定义一个变量qqexpirationdateqqexpirationdate=expirationdate( io1404-p-2450 //qqexpirationdate的值为合约号为io1404-p-2450的期权合约的行权日秒数messageout(datetostr(qqexpirationdate)); //输出行权日的日期。floattostr保留几位小数用法:floattostr(float,bit)float为浮点数,bit为保留小数位数例:var vprice;void main(){vprice = price( 8607 , open messageout(floattostr(vprice,1));//保留一位小数取该合约开盘价}floor向数值减小方向舍入。用法:floor(a)返回沿a数值减小方向最接近的整数。向下舍入。返回沿x数值减小方向最接近的整数。例:floor(2.1);求得2,floor(-8.8);求得-9。f_avprice当前模型某根k线的均价。用法:aa.f_avprice(n)返回倒数第 n 1 根k线的均价注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:var c;c=aa.f_avprice(0);//c为最后一根k线均价f_buyavgprice模型某合约多头持仓成本价。用法:aa.f_buyavgprice()返回模组aa多头持仓成本价注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var price;price=aa.f_buyavgprice(); 定义一个变量price,price的值为模组aa多头持仓成本价f_buyposition模型某合约多头持仓。用法:aa.f_buyposition()返回aa模组的多头持仓注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var fmlbvol;fmlbvol=aa.f_buyposition(); //定义一个变量fmlbvol,fmlbvol为aa模组的多头持仓。f_buyremainposition取模组多头可用持仓。用法:aa.f_buyremainposition 返回模组aa多头可用持仓注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var fmlbvol;fmlbvol=aa.f_buyremainposition();//定义一个变量fmlbvol,fmlbvol为模组aa的多头可用持仓。说明:可用持仓为抛除当前已挂单的多头数量。f_buyprofitloss模组的多头盈亏。用法:aa.f_buyprofitloss()返回模组的多头盈亏注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var buyearn;buyearn=aa.f_buyprofitloss();// 定义一个变量buyearn,buyearn的值为模组的多头盈亏。f_close当前模型某根k线的收盘价。用法:aa.f_close(n)返回倒数第 n 1 根k线的收盘价注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:var c;c=aa.f_close(0);//c为最后一根k线收盘价f_currentposaa.f_currentpos() 取当前k线位置注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:messageout(aa.f_currentpos());//输出当前k线所在的位置f_currentsigposaa.f_currentsigpos 取当前信号所在k线的位置注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:var a;void main(){aa.f_freshsig();if(aa.f_sig()==bk){a=aa.f_currentsigpos();}}f_dealcode取得当前模型的交易合约的合约编码。用法:aa.f_dealcode()返回模组aa所交易合约的合约编码(以字符串类型返回)注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:var dealcode;dealcode=aa.f_dealcode(); //变量dealcode的内容为模组aa当前交易合约的合约编码.f_freshsig刷新当前信号。用法:aa.f_freshsig() 取一个新信号(如果模型已经发出了多个信号,取最近发出的信号,信号消失也是一种新信号)返回1表示取到新信号,返回0表示失败即已经没有新信号可取。取到新信号以后可以配合 aa.f_sig, aa.f_sigvol, aa.f_sigvalid, aa.f_sigtime, aa.f_sigpos使用注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:if(aa.f_freshsig()) //如果取得了新的信号f_getcallcode获取跨合约变量对应的合约名。用法:mod.f_getcallcode( 变量名 ,获取模组模型中跨周期、跨合约变量对应的合约名注:1、该函数前必须用mod.的形式来调用,其中mod为字符串变量或者模组名。该函数不能单独使用。2、模组加载的模型中#call、#call_plus编写的合约名称可以使用该函数获取例:跨合约引用指标zf:h1:hhv(h,10);l1:llv(l,10);hh:(h1-l1)/l1;模组加载模型为:#call[1205,whbxsf] as var1hh1:var1.hh;#call[1285,whbxsf] as var2hh2:var2.hh;#call[1405,whbxsf] as var3hh3:var3.hh;盘口模型运行池中加载运行:global_var code,i;global_var maxx,tmp;global_var varvalue[3],type2;global_var varname[3];void main(){mod = 函数测试 varname[0] = var1 varname[1] = var2 varname[2] = var3 varvalue[0] = #get(mod, hh1 ,0);varvalue[1] = #get(mod, hh2 ,0);varvalue[2] = #get(mod, hh3 ,0);tmp = varvalue[0];maxx = 0;for(i=1; i i=i 1){if(varvalue[i] tmp){tmp=varvalue[i];maxx=i;}}code = mod.f_getcallcode(varname[maxx]);//取得指标值最大的合约}f_high当前模型某根k线的最高价。用法:aa.f_high(n)返回倒数第 n 1 根k线的最高价注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:var c;c=aa.f_high(0);//c为最后一根k线最高价f_initbuyvol取已经初始化的多头持仓。用法:aa.f_initbuyvol() 返回模型初始化的多头持仓(整数).注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var initbuyvol;//定义一个变量记录初始多头持仓initbuyvol=aa.f_initbuyvol();//取出初始多头持仓赋值给initbuyvol说明:读取仓位初始化窗口中的多头持仓数量f_initcode读返回模组初始化交易合约的交易编码用法:aa.f_initcode(),读当前模组初始化交易合约的交易编码。注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:var initcode;initcode=aa.f_initcode(); //变量initcode的内容为模组aa初始化交易合约的交易编码f_initsellvol取已经初始化的空头持仓 , 取已经初始化的空头持仓。用法:aa.f_initsellvol 返回模型初始化的空头持仓(整数).注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var initsellvol;//定义一个变量记录初始空头持仓initsellvol=aa.f_initsellvol();//取出初始空头持仓赋值给initsellvol说明:读取仓位初始化窗口中的空头持仓数量f_initbuyprice取已经初始化的多头持仓价格。用法:aa.f_initbuyprice() 返回模型初始化的多头持仓价格.注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var initbuyprice;//定义一个变量记录初始多头持仓价格initbuyprice=aa.f_initbuyprice();//取出初始多头持仓价格赋值给initbuyprice说明:读取仓位初始化窗口中的多头持仓价格f_initsellprice取已经初始化的空头持仓价格。用法:aa.f_initsellprice 返回模型初始化的空头持仓价格.注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var initsellprice;//定义一个变量记录初始空头持仓价格initsellprice=aa.f_initsellprice();//取出初始空头持仓价格赋值给initsellprice说明:读取仓位初始化窗口中的空头持仓价格f_islastklineaa.f_islastkline(type) 判断当前k线是否为休盘前最后一根k线注:1、type 为0 判断是否是各个小节以及闭盘前最后一根k线type 为非0 判断是否是当日k线结束闭盘前最后一根k线2、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:global_var bkid,n;void main(){n=aa.f_islastkline(0);messageout(n);}f_istimetoklineendaa.f_istimetoklineend(n) 判断当前时间是否距离k线走完小于等于n秒;如果离当根k线走完时间小于等于n秒返回1 否则返回0注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:void main(){aa.f_freshsig();if(aa.f_sig()==bk aa.f_istimetoklineend(5)==1){t_deal(aa.f_dealcode(),0,0,1,0);}}//如果信号为bk信号并且离k线走完小于等于5秒中,买开1手当前加载合约f_lastoffsetprofit取得模组最近一次的平仓盈亏。用法:aa.f_lastoffsetprofit()返回模组最近一次的平仓盈亏。注:1、该函数返回值与监控运行日志中模组最近一次平仓盈亏取值一致。2、平仓盈亏=(平仓成交价-开仓成交价)*手数*交易单位。(1)其中开仓价格是按照持仓明细,遵循先开先平的原则进行计算。(2)初始化的持仓,如果为自动初始化,开仓成交价按照自动初始化对话框中的持仓价格计算;如果为手动初始化,开仓成交价按照初始化框中显示的信号价计算。3、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。4、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var lastoffsetprofit;//定义一个变量lastoffsetprofitlastoffsetprofit=aa.f_lastoffsetprofit(); //lastoffsetprofit的值为当前对应模组aa的最近一次平仓盈亏。f_low当前模型某根k线的最低价。用法:aa.f_low(n)返回倒数第 n 1 根k线的最低价注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:var c;c=aa.f_low(0);//c为最后一根k线最低价f_offsetprofit取得模组加载开始到现在的累计平仓盈亏。用法:aa.f_offsetprofit()返回模组加载开始到现在的累计平仓盈亏。注:1、该函数与模组中显示的平仓盈亏的累计值一致。2、平仓盈亏=(平仓成交价-开仓成交价)*手数*交易单位。(1)其中开仓价格是按照持仓明细,遵循先开先平的原则进行计算。(2)初始化的持仓,如果为自动初始化,开仓成交价按照自动初始化对话框中的持仓价格计算;如果为手动初始化,开仓成交价按照初始化框中显示的信号价计算。3、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。4、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var offsetprofit;//定义一个变量offsetprofitoffsetprofit=aa.f_offsetprofit();//offsetprofit的值为模组加载开始到现在的累计平仓盈亏。f_open当前模型某根k线的开盘价。用法:aa.f_open(n)返回倒数第 n 1 根k线的开盘价注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:var c;c=aa.f_open(0);//c为最后一根k线开盘价f_opi当前模型某根k线的持仓量。用法:aa.f_opi(n)返回倒数第 n 1 根k线的持仓量注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:var c;c=aa.f_opi(0);//c为最后一根k线持仓量f_period取得当前模型的周期。用法:aa.f_period() 返回当前模组aa的周期(以字符串类型返回)注:1、该函数支持自定义周期使用,自定义秒周期、自定义分钟周期、自定义小时周期、自定义日周期分别返回custom_sec custom_min custom_hour custom_day2、该函数支持的周期数及其相应的返回值为(1)1分钟、3分钟、5分钟、10分钟、15分钟、30分钟依次返回min1 min3 min5 min10 min15 min30(2)1小时、2小时、3小时、4小时分别返回hour1、hour2、hour3、hour4(3)1日、1周、1月、1季、1年分别返回day、week、month、quarter、year(4)量能周期返回vol(5)tick返回tick3、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:模组加载模型为:ma5:=ma(c,5);ma10:=ma(c,10);crossdown(ma5,ma10),sk;cross(ma5,ma10),bp;autofilter;加载在一分钟周期,模组名称为'模组a’盘口模型运行池中加载运行:var aa,dd;global_var bb;var cc;void main(){aa= 模组a if(bb==0){cc=aa.f_period();//变量cc的内容为当前模组aa所使用的周期.messageout( 开始回测 messageout(cc);bb=1;}}f_sellavgprice模型某合约空头持仓成本价。用法:aa.f_sellavgprice()返回模组aa空头持仓成本价注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var price;price=aa.f_sellavgprice() 定义一个变量price,price的值为模组aa空头持仓成本价f_sellposition模型某合约空头持仓。用法:aa.f_sellposition()返回模组aa的空头持仓注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var fmlsvol;fmlsvol=aa.f_sellposition(); 定义一个变量fmlsvol,fmlsvol为模组aa的空头持仓。f_sellremainposition取模组空头可用持仓。用法:aa.f_sellremainposition 返回模组aa空头可用持仓注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var fmlsvol;fmlsvol=aa.f_sellremainposition(); 定义一个变量fmlsvol,fmlsvol为模组aa的空头可用持仓。说明:可用持仓为抛除当前已挂单的空头数量。f_sellprofitloss模组的空头盈亏。用法:aa.f_sellprofitloss()返回模组的空头盈亏注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、只有在对应的模组源码中写入setmodruntype(0)或者不写入setmodruntype函数时,即按照模组中设置的信号执行方式出信号并下单时,该函数才可以取到值。例:var buyearn;buyearn=aa.f_sellprofitloss();// 定义一个变量buyearn,buyearn的值为模组的空头盈亏。f_sig取当前的信号(bk|sk|bp|sp|bpk|spk|closeout|stop)。用法:aa.f_sig() 返回当前的信号是什么类型(bk|sk|bp|sp|bpk|spk|closeout|stop)注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用,须与f_freshsig()配合使用,在刷新信号之后才能取到值。例:if(aa.f_sig()==bpk aa.f_sigvalid()==1) //如果信号是bpk 且不是信号消失状态f_sigcode取得当前信号的交易合约的合约编码。用法:aa.f_sigcode()返回模组aa所发出信号的交易合约的合约编码(以字符串类型返回)注:1、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。2、取得的如果为自动换月的模组的信号,信号为换月前合约上出现的,则该函数返回为前一主力合约的交易编码例:var dealcode;dealcode=aa.f_sigcode(); //变量dealcode的内容为模组aa当前信号交易合约的合约编码.f_siggroup读取当前信号对应的组用法:aa.f_siggroup(),读当前信号对应的组。注:1、该函数必须与aa.f_freshsig()刷新信号函数同时使用。2、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:if(aa.f_freshsig()==1){if(aa.f_siggroup()== a )}//如果信号是a组的信号。f_sigprice取当前信号出现时盘口对应的最新价格。用法:aa.f_sigprice() 取当前信号出现当时盘口对应的最新价格。注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:if(aa.f_sigprice() 3500) //如果当前信号出现时盘口对应的最新价格大于3500f_sigtriggerprice取当前信号发出时盘口对应的最新价格。用法:aa.f_sigprice() 取当前信号发出时盘口对应的最新价格。注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:if(aa.f_sigtriggerprice() 3500) //如果当前信号发生时盘口对应的最新价格大于3500f_sigvol取当前信号对应的手数。用法:aa.f_sigvol() 取当前的信号对应的手数, 如果当前信号是bpk(5), 则返回5.注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:if(aa.f_sigvol() == varopi) //如果信号的仓位等于变量varopi注:取当前信号对应的手数,并非默认下单手数。f_sigvalid当前信号是发出的,还是消失的用法:aa.f_sigvalid() 返回模型信号存在两种类型之一(信号发出,信号消失), 返回1表示信号发出, 返回0表示信号消失。注:1、该函数必须与aa.f_freshsig()刷新信号函数同时使用。2、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:if(aa.f_freshsig()==1){if(aa.f_sig()==bpk aa.f_sigvalid()==1)} //如果信号是bpk 且不是信号消失状态f_sigtime当前信号的发出时间。用法:aa.f_sigtime() 返回当前信号的发出时间(以总秒数表示)。注:1、该函数必须与aa.f_freshsig()刷新信号函数同时使用。2、返回当前信号的发出时间,并非委托下单时间。3、该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。4、该函数返回时间为交易时间例:if(aa.f_freshsig()==1){if(sameperiod( m1009 , min10 ,lastordertime(),aa.f_sigtime())}//如果取得新信号的时间与上次交易的时间是同一个周期。f_sigpos当前信号在模型中是第几个有指令的语句。用法:aa.f_sigpos() 如果当前信号是模型中第5个含信号的语句发出的,返回5注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:if(aa.f_sigpos()==5) //如果当前信号是第5行发出的f_volume当前模型某根k线的成交量。用法:aa.f_volume(n)返回倒数第 n 1 根k线的成交量注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例:var c;c=aa.f_volume(0);//c为最后一根k线成交量f_variant当前模型某变量在某根k线上的值。用法:aa.f_variant(varname, n) 返回模型中变量varname在倒数第 n 1 根k线的值nvarname 变量名 类型为字符串注:该函数前必须用aa.的形式来调用,其中aa为字符串变量或者模组名。该函数不能单独使用。例://example.trd...ma5:=ma(close,5);...//example.stgvar ma5;ma5=aa.f_variant( ma5 , 0);//c收盘价5个周期简单平均移动的最后一根k线值gamma取得某期权合约的gamma值。用法:gamma(code)返回合约code的gamma值,code为某期权合约的合约代码。注:1、gamma衡量期权标的物价格的变化所引起的delta值的变化。也就是期权的斜率。2、gamma=delta的变化量/相应标的物价格的变化。例:var qqgamma;//定义一个变量qqgammaqqgamma=gamma( io1404-p-2450 //qqgamma的值为合约号为io1404-p-2450的期权合约的gamma值。getdecimal取得合约的小数位数用法:getdecimal( code ) 取code合约的小数位数例:var vcount;void main(){vcount = getdecimal( 8049 //取加币合约的小数位数messageout(vcount);}global_varglobal_var 定义全局变量注:1、相当于原来注册、读取变量的写法2、可以自动识别 整型、浮点型、字符串类型例:global_var a1;void main(){if(a1 5){a1=a1 1;messageout(a1);}}与下面的写法意思相同var a1;void main(){a1=readglobal( a1 if(a1 5){a1=a1 1;writeglobal( a1 ,a1);messageout(a1);}}hourhour(time) 取得当前时间的小时注:time的取值:可以为本机时间currenttime(),也可以为交易所时间currentservertime( code )例:var hour;hour = hour(currenttime( m1501 ));//定义一个变量hour,hour的值为当前豆粕1501本机时间的小时impliedvolatility取得某期权合约的隐含波动率。用法:impliedvolatility(code)返回合约code的隐含波动率,code为某期权合约的合约代码。注:期权的隐含波动率,代表整个市场对未来价格波动的预期。例:var qqimpliedvolatility;//定义一个变量qqimpliedvolatilityqqimpliedvolatility=impliedvolatility( io1404-p-2450 //qqimpliedvolatility的值为合约号为io1404-p-2450的期权合约的隐含波动率。intrinsicvalue取得某期权合约的内在价值。用法:intrinsicvalue(code)返回合约code的内在价值,code为某期权合约的合约代码。注:1、期权价格=期权的内在价值 期权的时间价值。内在价值,是指多方行使期权时可以获得的收益的现值,即期权立即履约(即假定是一种美式期权)时的价值。2、买入期权的内在价值=max(0,当前标的物价格-期权执行价)卖出期权的内在价值=max(0,期权执行价-当前标的物价格)例:var qqintrinsicvalue;//定义一个变量qqintrinsicvalueqqintrinsicvalue=intrinsicvalue( io1404-p-2450 //qqintrinsicvalue的值为合约号为io1404-p-2450的期权合约的内在价值。itoa数字转换为字符。用法:itoa(value)将value转换成字符串,value的为整型数值例:var str; str= 数字 itoa(5); //str的值为 数字5 lastordertime最后一次下单的时间。用法:lastordertime()返回最后一次下单的时间,以总秒数表示例:if( currenttime()-lastordertime() ) = 300)如果距离上次下单时间超过5分钟注:返回本组件最后一次下单的委托时间。(撤单不算)。leverage取得某期权合约的杠杆比率。用法:leverage(code)返回合约code的杠杆比率,code为某期权合约的合约代码。注:1、杠杆比率是期权仓位所代表的实际价值与建立仓位所付出的现金额的比率。2、杠杆比率越高,市场价格每单位的变动可带来的盈利或亏损就越大,意味着投资风险较高。3、杠杆比率 = 当前标的物价格/期权最新价。例:var qqleverage;//定义一个变量qqleverageqqleverage=leverage( io1404-p-2450 //qqleverage的值为合约号为io1404-p-2450的期权合约的杠杆比率。maxmax(a,b):取最大值。取a,b中较大者。注:若a=b,返回值为a或者b的值。例:messageout(max(f_high(1),f_high(2)));//输出模组中前一根k线和前两根k线的最高价里面较大的值。max1max1(a...p) 在a到p中取最大值注:1、支持2-16个数值进行比较。2、a...p可以为数字也可以为变量例:messageout(max(mod.f_high(1),mod.f_high(2),mod.f_high(3)));//输出模组中前3根k线中最高价的的最大值。(mod需定义)messageout输出内容。用法:messageout(content),输出content的内容。注意:content可以是字符串也可以是数字minmin(a,b):取最小值。取a,b中较小者。注:若a=b,返回值为a或者b的值。例:messageout(min(f_high(1),f_high(2)));//输出模组中前一根k线和前两根k线的最高价里面较小的值。min1取最小值max1(a...p) 在a到p中取最小值注:1、支持2-16个数值进行比较。2、a...p可以为数字也可以为变量例:messageout(min1(mod.f_high(1),mod.f_high(2),mod.f_high(3)));//输出模组中前3根k线中最高价的的最小值。(mod需定义)minprice某合约最小变动价位。用法:minprice(code)返回合约code的最小变动价位,code为某合约的合约代码例:var minprice;//定义一个变量minpriceminprice=minprice( m1009 //minprice的值为合约m1009的最小变动价位minuteminute(time) 取得当前时间的分钟注:time的取值:可以为本机时间currenttime(),也可以为交易所时间currentservertime( code )例:var minute;minute = minute(currenttime( m1501 ));//定义一个变量minute,minute的值为当前豆粕1501本机时间的分钟monthmonth(time) 取得当前时间的月份注:time的取值:可以为本机时间currenttime(),也可以为交易所时间currentservertime( code )例:var month;month = month(currenttime( m1501 ));//定义一个变量month,month的值为当前豆粕1501本机时间的月份offers某合约的买卖盘报价或买卖量。用法:offers(code,strcontent) 返回某合约的买卖盘报价或买卖量code为某合约的合约代码(字符串), strcontent为所要取得内容,可选以下内容 bid1 , bid2 , bid3 , bid4 , bid5 ,分别表示买1价-买5价 ask1 , ask2 , ask3 , ask4 , ask5 ,分别表示卖1价-卖5价 bidvol1 , bidvol2 , bidvol3 , bidvol4 , bidvol5 ,分别表示买1量-买5量 askvol1 , askvol2 , askvol3 , askvol4 , askvol5 ,分别表示卖1量-卖5量例:global_var bid1,code;void main(){code = au1606 if(offers(code, bid1 )=0)//bid1为au1606的当前买1价{return;}elsebid1=offers( m1009 , bid1 messageout(bid1);}//注:当取买卖盘报价时,在特殊情况下取不到有效值。如遇不活跃的合约,或是遇涨跌停等情况。该例就对有效值进行了一下判断opensecs取开盘后经过的秒数。用法:opensecs( code )取code合约开盘后经过的秒数注:1、该函数返回当前本地时间距离开盘经过的秒数2、该函数返回值为距离开盘的自然时间,即秒数包含休盘时间例:var opensec;opensec=opensecs( m1509 //定义一个变量opensec,opensec的值为豆粕1509开盘后经过的秒数。powpow(x,y):求x的y次幂。注:1、当x 0时,且y为小数的时候,函数不做计算,因为底数为负时,不能进行开方运算,此时返回0。2、x,y可以为数值,也可以为变量。例1:var price,pow;void main(){price=price( if1509 , new pow=pow(price,2);messageout(pow);//输出if1509最新价的平方}例2:var price1,price2,price,pow;void main(){price1=price( if1509 , low price2=price( if1509 , high price=price1-price2;pow=pow(price,2.1);messageout(pow);//price是if1509的最低价减最高价,如果price是负数时,输出值为0}premiumrate取得某期权合约的溢价率。用法:premiumrate(code)返回合约code的溢价率,code为某期权合约的合约代码。注:1、溢价指所支付的实际金额超过面值的部分。2、买入期权的溢价率 = ((期权执行价 期权最新价)-当前标的物价格)/当前标的物价格*100.0卖出期权的溢价率 = (当前标的物价格-(期权执行价-期权最新价))/当前标的物价格*100.0例:var qqpremiumrate;//定义一个变量qqpremiumrateqqpremiumrate=premiumrate( io1404-p-2450 //qqpremiumrate的值为合约号为io1404-p-2450的期权合约的溢价率。price根据文华码取报价列表窗口某一个合约的行情报价数据。用法:price( code , data 取合约名为code的合约的data数据。code可以为文华码。data可以取以下数据:open 开盘价high 最高价low 最低价new 最新价delta1 涨跌bid 买价bidvol 买量ask 卖价askvol 卖量deltavol 现手deltaopi 增仓volume 成交量opiorsize 持仓量ratio 日增仓updown 涨幅avprice均价settle 结算价ysettle 昨结算yclose 昨收capital 沉淀资金direction 资金流向speculation 投机度askactivityvol 内盘bidactivityvol 外盘期权:premiumrate 溢价率actualleverage 真实杠杆率leverage 杠杆比率strikeprice 行权价callput 涨/跌historicalvolatility 历史波动率stdderiation 隐含波动率internalvalue 内在价值timevalue 时间价值theoryprice 理论价格rho rho值theta theta值vega vega值gamma gamma值注:1、在清盘时间该函数收不到数据,返回值为0。2、该函数只支持部分数据回测。支持回测的数据有open 开盘价;high 最高价;low 最低价;new 最新价;volume 成交量;opiorsize 持仓量;bid 买价;bidvol 买量;ask 卖价;askvol 卖量例:var price1;//定义一个变量price1void main(){price1=price( m1409 , open //取得豆粕1409的开盘价messageout(price1);}price1根据文华码取报价列表窗口某一个合约的行情报价数据。用法:price1( code , data 取合约名为code的合约的data数据。data可以取以下数据:name 合约名unit 报价单位numofunit 交易单位lastdate 摘牌日mename 交易所注:在清盘时间该函数收不到数据,返回值为0。例:var price1;//定义一个变量price1void main(){price1=price1( m1409 , unit //取得豆粕1409的交易单位messageout(price1);}readglobal返回已注册的整型变量的值用法:readglobal(strname);返回注册的strname的值,strname为已注册的整型变量的注册名称(字符串)。如果strname未被注册过,返回0例:writeglabal( limit ,20);var limitvalue;limitvalue=readglobal( limit limitvalue的值为20。readglobalf返回已注册的浮点型变量的值用法:readglobalf(strnamef);返回注册的strnamef的值,strnamef为已注册的浮点型变量的注册名称(字符串),如果strnamef未被注册过,返回0.0f例:writeglabalf( rate ,0.5);var frate;frate=readglobal(rate);frate的值为0.5。readglobalstr返回已注册的字符串变量的值用法:readglobalstr(namestr);返回注册的namestr的值,namestr为已注册的字符串变量的注册名称。如果namestr未被注册过,返回 (空字符串)例:writeglabalstr( showstr , 上升 var str;str=readglobal(showstr);//str的值为 上升 。rho取得某期权合约的rho值。用法:rho(code)返回合约code的rho值,code为某期权合约的合约代码。注:1、rho计量利率变动的风险。用来衡量期权的理论价值对于利率变动的敏感性,即市场利率每升跌1%对权利金的影响。2、实值期权的rho 平值期权的rho 虚值期权的rho。3、rho=权利金的变动/利率的变动。例:var qqrho;//定义一个变量qqrhoqqrho=rho( io1404-p-2450 //qqrho的值为合约号为io1404-p-2450的期权合约的rho值。sameperiod判断两个时间是否是同一个周期。用法:sameperiod(code,periodstr,t1,t2)如果t1,t2是同一个周期返回1,否则返回0,code:合约的合约代码,periodstr可以取以下值的其中之一: min1 , min3 , min5 , min10 , min15 , min30 , 1hour , 3hour , 8hour , 1day , week , month ,t1和t2是以总秒数表示的时间例:if(sameperiod( m1009 , min10 ,lastordertime(),time( 09:00:00 ))合约为m1009,周期为10分钟情况下,如果最后一次下单时间与09:00:00在同一个周期内secondsecond(time) 取得当前时间的秒数注:time的取值:可以为本机时间currenttime(),也可以为交易所时间currentservertime( code )例:var second;second = second(currenttime( m1501 ));//定义一个变量second,second的值为当前豆粕1501本机时间的秒数strikeprice取得某期权合约的行权价。用法:strikeprice(code)返回合约code的行权价,code为某期权合约的合约代码。例:var qqstrikeprice;//定义一个变量qqstrikepriceqqstrikeprice=strikeprice( io1404-p-2450 //qqstrikeprice的值为合约号为io1404-p-2450的期权合约的行权价。substr截取字符串用法:substr(string,start,length);截取字符。string指定的要截取的字符串,start在字符串的何处开始,length指定要截取的字符串长度。有取品种名称的作用例:substr( sr605 ,0,2);截取前两个字符串,返回“sr”theta取得某期权合约的theta值。用法:theta(code)返回合约code的theta值,code为某期权合约的合约代码。注:1、theta计量时间经过的风险。用来衡量期权的理论价值因为时间经过而下降的速度。2、theta=权利金的变动/距到期日时间的变动。例:var qqtheta;//定义一个变量qqthetaqqtheta=theta( io1404-p-2450 //qqtheta的值为合约号为io1404-p-2450的期权合约的theta值。theoreticalvalue取得某期权合约的理论价格。用法:theoreticalvalue(code)返回合约code的理论价格,code为某期权合约的合约代码。例:var qqtheoreticalvalue;//定义一个变量qqtheoreticalvalueqqtheoreticalvalue=theoreticalvalue( io1404-p-2450 //qqtheoreticalvalue的值为合约号为io1404-p-2450的期权合约的理论价格。time转换字符串为时间。用法:time(strtime) 转换字符串strtime为时间(以总秒数表示),strtime的格式应为hh:mm:ss,其中0 =hh 24,0 =mm 60,0 =ss 60,如果不满足此条件,返回0例:time:time( 09:15:00 )timertimer(orderid):返回委托发出到全成或撤单成功的时间用法:计时器函数,根据委托唯一标识orderid,从委托发出开始计时,返回到委托全成或撤单成功的时间,委托未完成时,返回委托发出到现在的秒数。orderid(字符串)。例:var timer,bkid,kd,cond1;void main(){kd=开仓条件;//定义开仓条件timer=timer(bkid);if(kd cond1==0 )bkid=t_deal( m1509 ,0,0,0,0);//以对价买开1手豆粕1509cond1=1;}messageout(timer);//进行计时,输出从委托发出到全成或撤单成功的秒数}timetostr时间转换为字符串。用法:timetostr(nsec) 把整型数值表示的时间nsec转换为字符串,nsec为时间的总秒数,返回的字符串格式为:hh:mm:ss例:messageout(timetostr(currenttime())),输出当前时间timevalue取得某期权合约的时间价值。用法:timevalue(code)返回合约code的时间价值,code为某期权合约的合约代码。注:1、期权的时间价值,也称外在价值,是指期权合约的购买者为购买期权而支付的权利金超过期权内在价值的那部分价值。2、timevalue=max(0,期权最新价-期权内在价值)。例:var qqtimevalue;//定义一个变量qqtimevalueqqtimevalue=timevalue( io1404-p-2450 //qqtimevalue的值为合约号为io1404-p-2450的期权合约的时间价值。t_addbuyopito根据当前成交的量采用买开的手段达到把仓位增加某一数值的目的。用法:t_addbuyopito(code, price, vol)把多头仓位增加到某一数值。code(字符串):合约代码,price(小数):价格,vol(整数):成交量 对合约代码为code的字符串以price价格下单达到多头vol手持仓例:t_addbuyopito( m1009 , price( m1009 ) 5, 10); //买开使多头持仓达到10手注:只算本模型所持仓位,交易系统持仓不算。t_addsellopito根据当前成交的量采用卖开的手段达到把仓位增加到指定值的目的。用法:t_addsellopito(code, price, vol)把空头仓位增加到某一数值。code(字符串):合约代码,price(小数):价格,vol(整数):成交量 对合约代码为code的字符串以price价格下单达到多头vol手持仓例:t_addsellopito( m1009 , price( m1009 )-5, 10); //卖开使空头持仓达到10手注:只算本模型所持仓位,交易系统持仓不算。t_allisnoorder判断当前账户是否为无挂单状态。用法:t_allisnoorder(),判断当前账户是否为无挂单状态,如果没有挂单返回1,否则返回0例:if(t_allisnoorder()) //如果没有挂单t_batchorder发出多笔委托。用法:t_batchorder(code,bs,kp,vol,price,offsetprice,num),发出多笔委托 code(字符串):合约编码,bs(整数0,1):0 买 1 卖 ,kp(整数0,1,2):0开 1平 2平今 vol(整数):下单手数,price(整数或小数):下单价格,0为对价 offsetprice为多少个最小变动单位,num是委托的次数,返回值为一个orderid的数组例:a = t_batchorder( if1603 ,0,1,2,3010,-2,5);同时发出5笔委托:if1603买平两手,阶梯价委托,委托价以3010为基准每次递减2个最小变动单位t_buyavgprice交易系统某合约多头持仓成本价。用法:t_buyavgprice(code)返回交易系统合约code的多头持仓成本价,code为某合约合约代码。例:var buyprice; buyprice=t_buyavgprice( m1009 // 定义一个变量buyprice,buyprice的值为交易系统合约m1009多头持仓成本价t_buyposition交易系统某合约多头持仓。用法:t_buyposition(code)返回交易系统中合约code的多头持仓,code为某合约的合约代码。例:var buyvol;buyvol=t_buyposition( m1009 //buyvol为交易系统中合约代码为m1009的合约的多头持仓。t_buyremainposition交易系统某合约多头可用持仓。用法:t_buyremainposition(code)返回交易系统中合约code的多头持仓,code为某合约的合约代码。例:var buyremainvol;buyremainvol=t_buyremainposition( m1009 //buyremainvol为交易系统中合约代码为m1009的合约的多头可用持仓。t_buyprofitloss交易系统某合约的多头盈亏。用法:t_buyprofitloss(code)返回交易系统合约code的多头盈亏例:var buyearn;buyearn=t_buyprofitloss( m1009 // 定义一个变量buyearn,buyearn的值为交易系统合约m1009的多头盈亏t_buyprofitloss1交易系统某合约的多头盯市浮盈用法:t_buyprofitloss1(code)返回交易系统合约code的多头盯市浮盈例:var buyearn;buyearn=t_buyprofitloss1( sr605 // 定义一个变量buyearn,buyearn的值为交易系统合约sr605的多头盯市浮盈t_cancelallorder撤当前交易账号的所有挂单。用法:t_cancelallorder(),撤当前交易账号的所有挂单,不返回委托标识例:global_var time ,time1;void main(){time1 = currentservertime( m1601 time = time( 14:59:00 if(time1 = time){t_cancelallorder();//时间大于145900,撤掉交易账号的所有挂单}}t_closeallopi发出清仓委托。用法:t_closeallopi(m,n),发出清仓委托。m:市场类型 0期货 1股票 2外盘n:委托价格方式 0排队价 1对价 2自动连续追价 3超价 4市价 5最新价例:var orderid=t_closeallopi(0,1);//按对价对期货账户清仓t_deal发出委托。用法:t_deal(code,bs,kp,vol,price),发出委托。code(字符串):合约编码,bs(整数0,1):0 买 1 卖 ,kp(整数0,1,2):0 开 1平 2平今 vol(整数):下单手数,price(整数或小数):下单价格,0为对价 返回唯一委托标识orderid(字符串)例:var orderid=t_deal( m1009 , 0, 0, 5, 2900); 发出委托:m1009 买开5手 限价2900t_deal1以指定价格类型发出委托。用法:t_deal1(code,bs,kp,vol,price),以指定价格类型发出委托,返回唯一委托标识orderid(字符串)。code(字符串):合约编码bs(整数0,1):0 买 1 卖kp(整数0,1,2):0 开 1平 2平今vol(整数):下单手数price(必须为指定的价格类型):new_order:最新价;passive_order:排队价;active_order:对价;cmpetitv_order:超价;limit_order市价。注:1、如果输入的价格为具体数值,或者其他非指定类型的变量,不会执行委托2、该函数不支持历史回测例:var orderid=t_deal1( m1601 , 0, 0, 5, active_order); 发出委托:m1601 买开5手 对价委托t_deleteorder委托撤单。用法:t_deleteorder(orderid)根据委托唯一标识orderid(字符串)撤单,返回0表示可以撤单,并发出撤单委托;返回-1表示撤单失败或者已经成交不能进行撤单;返回-5 表示查询失败;例:if(t_deleteorder(orderid)!=0)//如果撤单失败if(t_deleteorder(orderid)==-1)//如果撤单失败或者已经成交不能进行撤单注:orderid可参考t_deal()函数t_deleteorderbycode委托撤单(通过合约代码)。用法:t_deleteorderbycode(code,type)委托撤单。code:合约代码(字符串)type:0所有方向;1买开;2卖平;3卖开;4买平 返回0撤单发出成功,返回其它失败例:t_deleteorderbycode( ru1009 ,2)撤单橡胶1009的卖平委托t_deleteorderbyprice撤指定价位单。用法:t_deleteorderbyprice(code,price);撤掉code所有price价格的委托例:b = t_deleteorderbyprice( if1603 ,3010);//撤掉if1603在3010价位上的所有委托t_deleteorderall撤掉所有未成交委托。用法:t_deleteorderall()撤掉所有该模型相关的未成缴委托单,返回0撤单发出成功,返回其它失败例:if(t_deleteorderall()!=0)//如果撤单失败t_equity权益。用法t_equity(type), 返回权益。 type(整数 0, 1 2) 0期货 1股票 2外盘,返回权益(小数)例:var margin;margin=t_equity(0); //返回当前期货帐户的权益数t_freemargin可用资金。用法t_freemargin(type), 返回可用资金。 type(整数 0, 1, 2) 0期货 1股票 2外盘,返回可用资金数(小数)例:var margin;margin=t_freemargin(0); //返回当前期货帐户的可用资金数t_fee取交易里的手续费。用法t_fee(type),返回交易里的手续费。type(整数 0, 1 2) 0期货 1股票 2外盘,返回手续费(小数)例:var margin;margin=t_fee(0);//返回交易中的手续费。t_getfalllimit返回某合约的跌停价用法:t_getfalllimit(code);返回合约code的跌停价例:var falllimit;falllimit=t_getfalllimit( m1105 获取成功返回合约1105的跌停价,失败返回0t_getriselimit返回某合约的涨停价用法:t_getriselimit(code);返回合约code的涨停价例:var riselimit;riselimit=t_getriselimit( m1105 获取成功返回合约1105的涨停价,失败返回0t_initialequityt_initialequity(type) 取期初权益注:type的取值:0 内盘1股票2外盘例:messageout(t_initialequity(0));t_isexchangeopen查询合约所属交易所的状态。用法:t_isexchangeopen(code)返回合约code所属的交易所的开闭盘状态,开盘返回1,闭盘返回0,集合竞价时间返回2,查询失败返回-1。注:集合竞价最后一分钟为撮合时间不能交易,算作闭盘返回0例:var status;status=t_isexchangeopen( m1009 //status为合约m1009所属交易所当前的开闭盘状态。当status为1时,说明该交易所开盘;当status为0时,说明该交易所闭盘;当status为2时,说明该交易所处于集合竞价时间;当status为-1时,说明当前查询失败。t_isnoorder该算法交易模型无挂单(发出的所有委托都已经成交,或被撤单)。用法:t_isnoorder()如果没有挂单返回1,否则返回0例:if(t_isnoorder()) //如果没有挂单t_isshcodet_isshcode(code))判断合约是否是上海市场合约。用法:code为合约代码,t_isshcode(code)返回值:为-1 异常为1 表示是上海市场合约为 0 表示不是上海市场合约例:if(t_isshcode(f_dealcode())==1){t_deal(f_dealcode(), 0, 2, 5,0);}如果合约为上海合约,则执行买平今的操作t_maxopen某品种最大可开仓手数。用法:t_maxopen(code, margin, bs),某品种最大可开仓手数。code(字符串):合约编码,margin(小数):保证金比例 bs(整数0,1):0 买 1 卖 返回该品种在当前可用资金,当前价格下的可开仓手数(整数)例:var vol;vol=t_maxopen( m1009 , 0.1, 0); //变量vol为m1009 的 在保证金比例为0.1 下的可开仓手数t_marginratio交易系统中某合约的保证金率用法:t_marginratio(code,n),取交易系统中合约code的保证金率n:买卖方向 0买 1卖注:1、如没有交易过该合约,第一次加载运行可能存在返回值为-1的情况2、实盘取值为账号交易该品种的实际的保证金率 即期货公司规定的标准例:global_var margin,code;void main(){code = if1603 if(t_marginratio(code,0) 0){return;}elsemargin = t_marginratio(code,0);messageout(margin);}t_offsetprofitloss平仓盈亏。用法:t_offsetprofitloss(type)返回平仓盈亏。type(整数 0,1,2) 0期货 1股票 2外盘,返回平仓盈亏(小数)例:var margin;margin=t_offsetprofitloss( );//返回平仓盈亏。t_ordermatchavpricet_ordermatchavprice(orderid) 根据委托唯一标识orderid获取成交均价注:orderid可参考t_deal()函数例:global_var bkid,n;void main(){var avprice;if(n==0){bkid=t_deal( ru0022 ,0,0,10,20400);n=1;}avprice = t_ordermatchavprice(bkid);messageout(avprice);}t_ordermatchvol某次委托已经成交的数量。用法:t_ordermatchvol(orderid)根据委托唯一标识orderid查询委托成交手数,返回成交手数。orderid(字符串)例:var matchvol;matchvol=t_ordermatchvol(x); //matchvol为某次委托的已成交数量t_orderstate查询委托状态。用法:t_orderstate(orderid)根据委托唯一标识orderid(字符串)查委托状态,返回值含义:-1查询失败;0挂单;1成交;2被撤单;3部分成交;4表示委托发送成功了,还没有回来应答,不能进行操作,需要等应答回来再进行其它操作;6委托报送;7委托失败,即委托列表状态中的“废单”;12撤单已发;13委托已发;14待撤;15/16:撤单失败例:if(t_orderstate(x)==0) 如果委托x是挂单t_openorder查询挂单数量。用法:t_openorder(code,type)返回未成交委托数量,code:交易编码,type:0所有方向;1买开;2卖平;3卖开;4买平例:if(currenttime()-lastordertime() = 300 t_openorder( ru1009 ,1) 0)t_deleteorderbycode( ru1009 ,1) //如果距离上次下单超过5分钟,且存在买开挂单,撤掉剩余买开委托合约x的未成交委托数量t_reducebuyopito根据当前成交的量采用卖平的手段达到把仓位减少到某一数值的目的。用法:t_reducebuyopito(code, price, vol)把多头仓位减少到某一数值。code(字符串):合约代码,price(小数):价格,vol(整数):成交量 对合约代码为code的字符串以price价格下单达到多头vol手持仓例:t_reducebuyopito( m1009 , price( m1009 )-5, 10); //卖平使多头持仓减少到10手注:1、只算本模型所持仓位,交易系统持仓不算。2、如果合约代码为上期所合约,该函数只能平老仓,不平今仓。t_reducesellopito根据当前成交的量采用买平的手段达到把仓位减少到某一数值的目的。用法:t_reducesellopito(code, price, vol)把空头仓位减少到某一数值。code(字符串):合约代码,price(小数):价格,vol(整数):成交量 对合约代码为code的字符串以price价格下单达到空头vol手持仓例:t_reducesellopito( m1009 , price( m1009 )-5, 10); //买平使空头持仓减少到10手注:1、只算本模型所持仓位,交易系统持仓不算。2、如果合约代码为上期所合约,该函数只能平老仓,不平今仓。t_sellavgprice交易系统某合约空头持仓成本价。用法:t_sellavgprice(code)返回交易系统合约code的空头持仓成本价,code为某合约合约代码。例:var sellprice;sellprice=t_sellavgprice( m1009 // 定义一个变量sellprice,sellprice的值为交易系统合约m1009空头持仓成本价t_sellposition交易系统某合约空头持仓。用法:t_sellposition(code)返回交易系统中合约code的空头持仓,code为某合约的合约代码。例:var sellvol;sellvol=t_sellposition( m1009 // svol为交易系统中合约代码为m1009的合约的空头持仓。t_sellremainposition交易系统某合约空头可用持仓。用法:t_sellremainposition(code)返回交易系统中合约code的空头持仓,code为某合约的合约代码。例:var sellremainvol;sellremainvol=t_sellremainposition( m1009 //sellremainvol为交易系统中合约代码为m1009的合约的空头可用持仓。t_sellprofitloss交易系统某合约的空头盈亏。用法:t_sellprofitloss(code)返回交易系统合约code的空头盈亏例:var sellearn;sellearn=t_sellprofitloss( m1009 ) 定义一个变量sellearn,sellearn的值为交易系统合约m1009的空头盈亏t_sellprofitloss1交易系统某合约的空头盯市浮盈用法:t_sellprofitloss1(code)返回交易系统合约code的空头盯市浮盈例:var sellearn;sellearn=t_sellprofitloss1( sr605 // 定义一个变量sellearn,sellearn的值为交易系统合约sr605的空头盯市浮盈t_shbuyposition交易系统上海市场某合约多头持仓。用法:t_shbuyposition(code,type)返回上海市场交易系统中合约code的多头持仓,code为某合约的合约代码。type:0 今仓 1 老仓例:var buyvol;buyvol=t_shbuyposition( ru1009 ,0); //buyvol为交易系统中合约代码为ru1009的合约的多头今仓持仓。t_shbuyremainposition交易系统上海市场某合约多头可用持仓。用法:t_shbuyremainposition(code,type)返回上海市场交易系统中合约code的多头可用持仓,code为某合约的合约代码。type:0 今仓 1 老仓例:var buyremainvol;buyremainvol=t_shbuyremainposition( ru1009 ,0); //buyremainvol为交易系统中合约代码为ru1009的合约的多头今仓可用持仓。t_shsellposition交易系统上海市场某合约空头持仓。用法:t_shsellposition(code,type)返回上海市场交易交易系统中合约code的空头持仓,code为某合约的合约代码。type:0 今仓 1 老仓例:var sellvol;sellvol=t_shsellposition( ru1009 ,0); //sellvol为交易系统中合约代码为ru1009的合约的空头今仓持仓。t_shsellremainposition交易系统上海市场某合约空头可用持仓。用法:t_shsellremainposition(code,type)返回上海市场交易交易系统中合约code的空头可用持仓,code为某合约的合约代码。type:0 今仓 1 老仓例:var sellremainvol;sellremainvol=t_shsellremainposition( ru1009 ,0); //sellremainvol为交易系统中合约代码为ru1009的合约的空头今仓可用持仓。t_stgbuyvol当前算法交易模型产生的某品种的多头持仓。用法:t_stgbuyvol(code)返回当前算法交易模型产生的合约代码为code的合约的多头持仓数。code(字符串):合约代码注:盘口模型通过执行开多仓操作增加了n手多头持仓,t_stgbuyvol(code)的返回值是n;盘口模型通过执行平多仓操作减少了n手多头持仓,t_stgbuyvol(code)的返回值是-n例:t_stgbuyvol( m1509 //当前算法交易模型产生的某品种多头持仓数t_stgsellvol当前算法交易模型产生产生的某品种的空头持仓。用法:t_stgsellvol(code)返回当前算法交易模型产生的合约代码为code的合约的空头持仓数。code(字符串):合约代码注:盘口模型通过执行开空仓操作增加了n手空头持仓,t_stgsellvol(code)的返回值是n;盘口模型通过执行平空仓操作减少了n手空头持仓,t_stgsellvol(code)的返回值是-n例:t_stgsellvol( m1509 //当前算法交易模型产生的某品种空头持仓数unit取合约的交易单位用法:unit(code)返回合约code的交易单位,code为某合约的合约代码例:var ndanwei;//定义一个变量ndanweindanwei=unit( m1509 //unit的值为合约m1509的交易单位var_tickdata定义数据区变量。用法:var_tickdata data;//定义数据区变量def_tickdata(code,type,num);//定义tick数据区。code为合约名,type为0时,num表示多少秒(最大60秒);type为1时,num表示多少笔(最大200笔)。注:类型变量0为第一笔数据,num-1为最后一笔例:var_tickdata data;void main(){data=def_tickdata( m1409 ,0,5); //data中装有5秒钟m1409的tick数据if(data.state == 1){data.num; // 表示data数组有多大data[0].ask1; // 表示第一笔tick数据的卖一价。data[data.num-1].ask1;// 表示最新一笔tick的卖一价。}}ask1可以替换为:ask2 卖2价ask3 卖3价ask4 卖4价ask5 卖5价bid1 买1价\rnbid2 买2价bid3 买3价bid4 买4价bid5 买5价askvol1 卖1量askvol2 卖2量askvol3 卖3量askvol4 卖4量askvol5 卖5量bidvol1 买1量bidvol2 买2量bidvol3 买3量bidvol4 买4量bidvol5 买5量tickprice 当笔tick数据的价格tickvolum 从开盘到当笔tick数据的成交量累计值activity 当笔tick是否是主动买vega取得某期权合约的vega值。用法:vega(code)返回合约code的vega值,code为某期权合约的合约代码。注:1、vega计量期权的波幅风险。用来衡量当标的物价格的波幅每升跌1%对权利金的影响。2、vega=权利金的变动/波动率的变动。例:var qqvega;//定义一个变量qqvegaqqvega=vega( io1404-p-2450 //qqvega的值为合约号为io1404-p-2450的期权合约的vega值。weekweek(time);当前时间对应星期数用法:1、参数time为当前秒数,即可以为currenttime(),currentservertime( code ),lastordertime()等2、week(time);返回值为:0,星期日1,星期一2,星期二3,星期三4,星期四5,星期五6,星期六例:var week;void main(){week=week(currentservertime( code ));messageout(week);}writeglobal注册一个整型变量。用法:writeglabal(name,value)。name为整型变量的注册名称(字符串),value为整型变量的值例:writeglabal( period ,5) 注册一个整型变量,注册名称为 period ,值为5。writeglobalf注册一个浮点形变量用法:writeglabal(namef,valuef)。namef为浮点形变量的注册名称(字符串),valuef为浮点形变量的值例:writeglabalf( rate ,0.5) 注册一个浮点形变量,注册名称为 rate ,值为0.5。writeglobalstr注册一个字符串变量用法:writeglabalstr(namestr,valuestr)。namestr为字符串变量的注册名称(字符串),valuestr为字符串变量的值例:writeglabalstr( showstr , 上升 ) 注册一个字符串变量,注册名称为 showstr ,值为 上升 。yearyear(time) 取得当前时间的年份注:time的取值:可以为本机时间currenttime(),也可以为交易所时间currentservertime( code )例:var year;year = year(currenttime( m1501 ));//定义一个变量year,year的值为当前豆粕1501本机时间的年份#get#get( module name , variable name ,n), 指定模组名称的模型中指定变量在某根k线上的值用法:#get( 股指连续加载 , ma5 ,0), 返回正在运行的“股指连续加载”这个模组的模型中变量ma5在当根k线上的返回值注:1、module name模组名,variable name变量名,类型为字符串2、n表示取值为倒数第n 1k线上的值,如果n为0,表示为当根k线;如果n为1表示前一根k线3、指定的模组必须正在运行例:运行的模组“股指连续加载”,加载的模型中为:ma5:=ma(c,5);组件编写为:var ma5;void main(){ma5=#get( 股指连续加载 , ma5 ,0);//返回正在运行的“股指连续加载”这个模组的模型中变量ma5在当根k线上的返回值}amp 本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的w66.com的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
网站地图