1、课课 程程 安安 排排什么是程序化交易?什么是程序化交易?程序化是一个交易的概念,用户可以把平时的交易思想,写成交易策略模型,让电脑去执行这些交易思想,自动下单。利用电脑的计算能力和铁面无私,提高下单的速度和效率,避免交易收到情绪的影响,理性交易。程序化也是一个研究的概念,程序化平台都提供丰富历史数据和收益、风险等多角度的模型评估算法的,用户可以在电脑的仿真交易环境下,去测试、改进策略模型,这样交易思想就可以快速成熟了,不再需要动辄几个月甚至几年的实盘验证了。利用电脑的历史数据存储能力,能节省时间,节省金钱。程序化交易需求分析程序化交易需求分析“麦语言麦语言”介绍介绍麦语言(麦语言(My la
2、nguage)模型开发平台)模型开发平台 赢智的“麦语言”源于2019年文华推出的国内第一套程序化函数库,经过7年的发展,吸收几十万用户的意见反馈,一点一点完善起来的的,是一套成熟稳定的模型开发平台。麦语言倡导的是积木式的编程理念,把复杂算法封装到一个个的函数里,采用“小语法,大函数”的构建模式。语法虽然简单,但是配合专门的程序化数据结构,配合丰富的金融统计函数库,同样可以支持逻辑复杂的金融应用。麦语言的函数库,是经常更新的,根据客户的新要求随时添加新函数,来支持编程者的交易新思想和新应用。麦语言,是国内使用人数最多的程序化模型开发平台。1、了解指标、模型相关术语;2、熟悉模型编写的语法;3、
3、理解模型编写的结构和编写方法。4、学习如何编写跨周期策略模型指标、模型相关术语模型编写的语法与操作符模型编写的结构和编写方法模模 型型 基基 本本 结结 构构学习编写跨指标、跨周期模型理解并规范使用技术指标,交易模型等以下名词:公式:公式:泛指指标、模型。没有具体指向性。指标:指标:指能够绘出图线但不发交易指令的公式。指标是一个技术分析范畴的概念。交易信号:交易信号:指指标上出现的提示投资者买卖的指示,可以是图线交叉、文字、图形。投资者需要按照信号指示去手动委托下单。交易信号也是一个技术分析范畴的概念。交易模型:交易模型:指能够发出BK、SP等交易指令,模型还包含下单方向,交易手数,止盈止损等
4、与交易、资金使用相关的参数设置。交易模型是一个交易范畴的概念。交易指令交易指令:指交易模型自动发出的下单委托指令,可以不经过投资者确认直接下单,也可以等待投资者回车确认再下单。交易指令在K线图上以不同颜色和形状的箭头来代表。交易指令是一个程序化交易范畴的概念。练习1:如何区分指标和模型RSV:=(CLOSE-LLV(LOW,N)/(HHV(HIGH,N)-LLV(LOW,N)*100;K:SMA(RSV,M1,1);D:SMA(K,M2,1);J:3*K-2*D;用指标监测行情:K线上穿D线RSV:=(CLOSE-LLV(LOW,N)/(HHV(HIGH,N)-LLV(LOW,N)*100;K
5、:SMA(RSV,M1,1);D:SMA(K,M2,1);J:3*K-2*D;/以下是加入的交易指令CROSS(K,D),BK;/K向上穿越D,发出买开交易指令CROSS(J,100),SP;/J向上穿越100,发出卖平交易指令CROSS(D,K),SK;/K向下穿越D,发出卖开交易指令CROSS(0,J),BP;/J向下穿越0,发出买平交易指令AUTOFILTER;练习2 在K线上如何区分交易指令和交易信号练习3 巩固训练指标、模型相关术语模型编写的语法与操作符模型编写的结构和编写方法模模 型型 基基 本本 结结 构构1、命名部分:支持汉字、字母、数字、划线格式命名,长度控制在31字符内;命
6、名不能和已存在的公式名称重复。2、定义变量名称变量名称不能相互重复;不能与参数名重复;不能与函数名重复。3、半角输入法的大写状态。4、每个语句应该以分号结束。MY language 编写语法:5、参数部分:可以设置六个参数;首先是参数名称,然后是参数的最小值,最大值,最后是参数的默认值;在定义参数时要注意的是参数名称不可以重复,12个字符内。6、运用函数语言,也就是表达你的语言:函数具有自己的表达式,运行它就需要将我们的思路,按照函数的表达式套用表述。MY language 编写语法:命名命名参数参数MA5:=MA(C,5);MA10:=MA(C,10);CROSS(MA5,MA10);CRO
7、SS(MA10,MA5);CLOSE引用收盘价引用收盘价(在盘中指最新价在盘中指最新价),也可简写为,也可简写为 C。HIGH引用最高价,也可简写为引用最高价,也可简写为 H。LOW引用最低价,也可简写为引用最低价,也可简写为L。OPEN引用开盘价,也可简写为引用开盘价,也可简写为O。MA(X,N)求求X在在N周期内的简单移动平均。周期内的简单移动平均。计算方法计算方法:MA=(A1+A2+A3+A4+A5)/5 求求A在在5个周期内的简单移动平均个周期内的简单移动平均CROSS(X,Y)表示 X上穿Y;例:CROSS(CLOSE,MA(CLOSE,5);表示收盘线从下方向上穿过5日均线运用函
8、数运用函数定义变量定义变量MY language 操作符如何运用操作符:A:(O+C)/2;B:CO;/判断是否收阳;满足条件返回1,否则返回0D:TIME=0910&CO;/用于多条件逻辑关系MA5:=MA(C,5);MA10:=MA(C,10);CROSS(MA5,MA10);/金叉CROSS(MA10,MA5);/死叉其他:注释或者舍去 想要在编写后,加入自己的语言注释,在结尾处用“/”表示;或者想舍去某段,在某段在最前端加入“/”;练习练习1 1:为函数做注释:为函数做注释IFELSE(C,A,B)/如果条件C成立则返回A值,否则返回B值练习2:SETTLE引用结算价REF(X,N)引
9、用X在N个周期前的值MA(X,N)求X在N周期内的简单移动平均。定义变量:结算价:15周期收盘价均线(显示定义);REF(H,1);REF(MA15,1);S:=SETTLE;MA15:MA(C,15);衍生:当前K线的前一个周期最高价;当前K线的前一个周期15均线;练习3:5日均线上穿10日均线的同时收盘价大于20日均线,或者5日均线上穿10日均线的5个点;MA5:=MA(C,5);MA10:=MA(C,10);MA20:=MA(C,20);A:(CROSS(MA5,MA10)&CMA20)|CROSS(MA5,MA10+5*MD);总结:清晰逻辑关系,可以用“()”来表示。指标、模型相关术
10、语模型编写的语法与操作符模型编写的结构和编写方法模模 型型 基基 本本 结结 构构 在编写前,需要将交易思想清晰量化后,通过语言函数编写完成。交易模型基本结构:交易模型基本结构:1.1.定义需要的每个变量定义需要的每个变量2.2.交易条件交易条件+交易指令交易指令MA5:=MA(C,5);MA10:=MA(C,10);CROSS(MA5,MA10),BPK;CROSS(MA10,MA5),SPK;定义思路中涉及到的变量交易条件,写入交易指令模型中使用的交易指令练习编写1:关键字:反手指令均线上穿平空做多,均线下穿平多做空;MA5:MA(C,5);MA10:MA(C,10);CROSS(MA5,
11、MA10),BPK;CROSS(MA10,MA5),SPK;具体细化思路:5日均线上穿10日均线,平空做多;5日均线下穿10日均线,平多做空;练习编写2:关键字:日内模型日内交易:均线上穿平空做多,均线下穿平多做空;CROSS(MA5,MA10)&TIME=0900&TIME=1457,SP;CROSS(MA10,MA5)&TIME=0900&TIME=1457,BP;具体细化思路:3分钟周期5日均线上穿10日均线,平空做多;5日均线下穿10日均线,平多做空;解读常用函数:DATE取日期数(19700101-20331231)。用法:DATE 返回某周期的日期数。TIME取周期的时数。用法:T
12、IME 取周期的时数。REF(X,N)引用X在N个周期前的值例:REF(CLOSE,5);表示引用当前周期前第5个周期的收盘价HHV(X,N)LLV(X,N)求X在N个周期内的最高值。若N为0则从第一个有效值开始算起。例:HHV(HIGH,13);求13个周期内的最高价的最大值。该函数参数支持变量计算如HHV(HIGH,VAR1);/VAR1为变量VALUEWHEN(COND,DATA)当条件COND满足时,取当时的DATA的值,否则取得前面一个满足条件COND的值。例:VALUEWHEN(HIGHREF(HIGH,5),HIGH);表示当前最高价大于前五个周期最高价的最大值时返回当前最高价。
13、DATEREF(DATE,1)/今天第一根K线VALUEWHEN(DATEREF(DATE,1),O);/当天开盘价VALUEWHEN(TIME=1030,O);/10点半那根K线的开盘价昨天的收盘价?VALUEWHEN(DATEREF(DATE,1),REF(C,1);BKPRICE返回最近一次模型买开位置的买开信号价位。BARSBK返回上一次买开仓距离当前k线的k线数。BARSLAST(X)求上一次X条件成立到当前的周期数COUNT(X,N)表示统计在N周期内满足X条件的周期数。如果N为0则表示从已申请到的数据的第一天开始算起。例:WR:=-100*(HHV(HIGH,N)-CLOSE)/
14、(HHV(HIGH,N)-LLV(LOW,N);COUNT(WR80,5);表示统计在5个周期内满足WR80的次数AUTOFILTER 对模型的所有信号按照先买后卖,先开后平的顺序过滤。1.连续的同方向指令只有第一个有效,其他的将被过滤;2.交易指令必须配对出现(例如:前面已经有了买开指令,则后面只允许出现卖平指令,其他的指令都被滤掉。这也就意味着,第一个指令只能是买开或者卖开指令,其他的都被过滤);CBKPRICE+50*MD;/最新价大于买开仓价位的50个点HHV(H,BARSBK+1);/开仓到目前为止最高价N:=BARSLAST(DATEREF(DATE,1)+1;/今天开盘到目前为止
15、的周期数HH:HHV(H,N);/开盘到目前为止的最高价 昨天开盘的最高价?表达式一:REF(HH,N);表达式二:VALUEWHEN(DATEREF(DATE,1),REF(HH,1);学习跨周期模型的编写原理和编写步骤。跨周期函数介绍跨周期函数介绍引用某品种在某个周期上加载了某个指标的数据。引用某品种在某个周期上加载了某个指标的数据。用法:用法:#IMPORT CODE,PERIOD,FORMULA AS VAR引用 CODE 所对应的合约 PERIOD 周期下指标 FORMULA 的数据。CODE 文华码,PERIOD 周期,FORMULA 引用指标名,VAR 定义变量名跨周期跨合约模型
16、的编写规则跨周期跨合约模型的编写规则1.只能引用.FML/.XFML文件 2.只能引用如下周期:MIN1 MIN3 MIN5 MIN15 MIN30 HOUR1 DAY WEEK MONTH 3.只能短周期引用长周期4.被引用的指标中不能存在引用5.如果不写文华码,默认引用当前合约,也可以直接写合约代码如:rb12016.FORMULA 引用指标名,只能引用除数字、或者数字开头的名称之外的名称。跨周期跨合约模型的编写思路及案例跨周期跨合约模型的编写思路及案例1.同一合约不同周期调用 示范12.同一合约不同周期调用 示范23.不同合约之间的数据调用 例例1 同一合约不同周期的数据调用同一合约不同
17、周期的数据调用要求要求n当日均线出现多头排列时,5分钟KD线金叉,做多。n当日均线出现空头排列时,5分钟KD线死叉,做空。例例1:先建立一个指标先建立一个指标 名称名称AAAMA5:=MA(C,5);MA10:=MA(C,10);MA30:=MA(C,30);再建立你的模型再建立你的模型#IMPORT ,DAY,AAA AS VARDM5:=VAR.MA5;DM10:=VAR.MA10;DM30:=VAR.MA40;RSV:=(CLOSE-LLV(LOW,N)/(HHV(HIGH,N)-LLV(LOW,N)*100;K:SMA(RSV,M1,1);D:SMA(K,M2,1);J:3*K-2*D
18、;DM5DM10&DM10DM30&CROSS(K,D),BPK;DM5DM10&DM10DM10&CROSS(MA5,MA10)&TIME1450,BK(DM5=1450,SP;DM5DM10&CROSS(MA10,MA5)&TIMEDM10&CROSS(MA5,MA10)|TIME=1450,BP;AUTOFILTER;n当沪胶指数价格破20日新高,橡胶1201的MA5MA10,做多。n当沪胶指数价格破20日新低,橡胶1201的MA5REF(H20,1);B:=CMA10,BPK;DL20&MA560,SP;/如果买开价位比当前价位高出60,且买开价位存在,卖平仓请注意当模型存在连续多个开
19、仓信号(加仓)的情况下,该函数返回的是最后一次开仓信号的价格,而不是开仓均价。注:BKPRICE 只在加载之后的K线上才返回信号价位。效果测试中该函数返回信号位置的收盘价SKPRICE卖开信号位置的卖开信号价位用法:SKPRICE返回最近一次模型卖开位置的卖开信号价位。例如:CLOSE-SKPRICE60&SKPRICE0,BP;/如果当前价位高出卖开价位60,且卖开价位存在,买平仓请注意当模型存在连续多个开仓信号(加仓)的情况下,该函数返回的是最后一次开仓信号的价格,而不是开仓均价。注:SKPRICE 只在加载之后的K线上才返回信号价位。效果测试中该函数返回信号位置的收盘价FEE合约手续费用
20、法:FEE返回当前合约的手续费(用户启动模组时设置的)。注意不能与未来函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!MONEY虚拟资金余额用法:MONEY返回虚拟资金余额。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。MARGIN合约保证金用法:MARGIN返回当前合约的保证金比率(用户启动模组
21、时设置的)。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。VOLMARGIN 当前合约的持仓保证金 用法:VOLMARGIN计算当前的持仓保证金。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。MONEYRATIO资金使用率用法:MONEYRATIO返回当前的虚拟资金的使用率。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BAC
22、KSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。MONEYTOT虚拟总资金用法:MONEYTOT返回当前虚拟总资金(虚拟资金余额+持仓保证金)。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。PROFIT虚拟逐笔浮盈用法:PROFIT返回当前的虚拟逐笔浮动盈亏。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会
23、导致误差。SETDEALPERCENT设置下单的虚拟资金使用比例用法:SETDEALPERCENT(fPercent)表示每次按资金的fPercent(范围1100)下单。例子:SETDEALPERCENT(20);/每次按资金比例的%20下单注:应该与AUTOFILTER函数同时使用BUYVOL模型虚拟多头持仓用法:BUYVOL返回模型虚拟多头持仓。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。SELLVOL模型虚拟空头持仓用法:SELLVOL返回模型虚拟空头持仓。注
24、意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。一、资金管理模型的编写思路及案例一、资金管理模型的编写思路及案例利用头寸函数实现对仓位的加减。利用头寸函数实现对仓位的加减。例例1 加仓模型加仓模型A:=多头开仓条件;A1:=多头加仓条件;B:=空头交易条件;B1:=空头加仓条件;D:=多头平仓条件;E:=空头平仓条件;A&NOT(ISLASTSK|ISLASTBK),BK(2);B&NOT(ISLASTBK|ISLASTSK),SK(2);BUYVOL2&A1&ISLAST
25、BK,BK(1);SELLVOL2&B 1&ISLASTSK,SK(1);D&ISLASTBK,SP(BUYVOL);E&ISLASTSK,BP(SELLVOL);注意,交易时要考虑前一信号方向防止锁仓。注意,交易时要考虑前一信号方向防止锁仓。减仓模型减仓模型A:=多头开仓条件;B:=空头开仓条件;E1:=多头平仓条件1;E2:=多头平仓条件2;F1:=空头平仓条 1;F2:=空头平仓条件2;A,BK;B,SK;E1&ISLASTBK,SP(BUYVOL/2);E2&ISLASTSP&BUYVOL0,SP(BUYVOL);F1&ISLASTSK,BP(3);F 2&ISLASTBP&SELLV
26、OL0,BP(SELLVOL);例例2:对交易资金的管理:对交易资金的管理/过滤模型过滤模型每次下单使用当时资金的每次下单使用当时资金的20%SETDEALPERCENT(20);DIFF:=EMA(CLOSE,12)-EMA(CLOSE,26);DEA:=EMA(DIFF,9);DIFF0&DEA0&CROSS(DEA,DIFF),SK;DIFF0&DEA0&DEA0&CROSS(DIFF,DEA),BK;DIFF0&DEA0&CROSS(DEA,DIFF),SP;AUTOFILTER;10日均线之上开多仓(开仓资金可用资金日均线之上开多仓(开仓资金可用资金20%),价格每上涨),价格每上涨
27、10%止盈平止盈平仓仓50%仓位,上涨仓位,上涨20%止盈全部仓位。跌破止盈全部仓位。跌破5日线止损。日线止损。N为合约单位为合约单位 MA10:=MA(C,10);MA5:=MA(C,5);CROSS(C,MA10),BK(MONEY*0.2/(N*C*MARGIN);CROSS(C,BKPRICE*1.1),SP(BUYVOL*0.5);CROSS(C,BKPRICE*1.2),SP(BUYVOL);CROSS(MA5,C),SP(BUYVOL);/非过滤模型非过滤模型收盘价上穿5周期均线,买开仓。收盘价连续2根站上5周期均线,且K线收阳,加仓1手。收盘价下穿5周期均线,卖开仓。收盘价连续
28、2根小于5周期均线,且K线收阴,加仓1手。MA5:=MA(C,5);CROSS(C,MA5,)&NOT(ISLASTBK|ISLASTSK),BK(2);CROSS(MA5,C)&NOT(ISLASTBK|ISLASTSK),SK(2);EVERY(CMA5,2)&ISUP&ISLASTBK,BK(1);EVERY(CMA5,2)&ISDOWN&ISLASTSK,SK(1);平多条件&ISLASTBK,SP(BUYVOL);平空条件&ISLASTSK,BP(SELLVOL);(编写练习加仓)二、二、止盈止损模型的编写思路及案例止盈止损模型的编写思路及案例例例1:限价止损、限价止盈模型:限价止损
29、、限价止盈模型A:=多头交易条件;B:=空头交易条件;E:=多头平仓条件;F:=空头平仓条件;A,BK;E|C=BKPRICE+150,SP;B,SK;F|C=SKPRICE+100|CMA1,BK;(C=BKPRICE&C=HH-N*(HH-BKPRICE),SP;例例2:回撤止损止盈模型:回撤止损止盈模型使用资金管理,止盈止损模型需要注意的问题使用资金管理,止盈止损模型需要注意的问题编写加减仓位时要注意对信号的判断。编写加减仓位时要注意对信号的判断。(避免锁仓避免锁仓)动态止损如果涉及到步长,要注意止损价位的变化和步长的相关度。动态止损如果涉及到步长,要注意止损价位的变化和步长的相关度。大
30、豆1205合约:低于买开仓价10个点差,多头止损;高于买开仓价20个点差,多头止赢;高于卖开仓价10个点差,空头止损;低于卖开仓价20个点差,空头止赢;A:=MINPRICE(A1205);多头开仓条件,BK;(C=BKPRICE+TP*A)&BKPRICE0,SP;空头开仓条件,SK;(C=SKPRICE+SL*A|C0,BP;/止损点差为SL,止赢点差为TP(编写练习限价止损止盈模型)多维的效果测试功能多维的效果测试功能课程内容课程内容n日内高频函数介绍n日内模型的编写思路及案例n使用日内模型需要注意的问题日内高频函数介绍日内高频函数介绍引用盘口数据:挂单数据和成交数据引用数据类型:TIC
31、K数据和秒周期数据挂单数据挂单数据L2_BID1 取买一价取买一价 L2_BIDVOL1 取买一量取买一量 L2_BID2 取买二价取买二价 L2_BIDVOL2 取买二量取买二量L2_BID3 取买三价取买三价 L2_BIDVOL3 取买三量取买三量L2_BID4 取买四价取买四价 L2_BIDVOL4 取买四量取买四量L2_BID5 取买五价取买五价 L2_BIDVOL5 取买五量取买五量注:注:K K线图和线图和TICKTICK都可以使用都可以使用挂单数据挂单数据L2_ASK1 取卖一价取卖一价 L2_ASKVOL1 取卖一量取卖一量 L2_ASK2 取卖二价取卖二价 L2_ASKVOL
32、2 取卖二量取卖二量L2_ASK3 取卖三价取卖三价 L2_ASKVOL3 取卖三量取卖三量L2_ASK4 取卖四价取卖四价 L2_ASKVOL4 取卖四量取卖四量L2_ASK5 取卖五价取卖五价 L2_ASKVOL5 取卖五量取卖五量注:注:K K线图和线图和TICKTICK都可以使用都可以使用挂单数据挂单数据ASKBIGVOLPRICE:返回返回TICK图中该笔图中该笔Tick 盘口满足大单条件的与最新价的盘口满足大单条件的与最新价的最近价格最近价格BIDBIGVOLPRICE:返回返回TICK图中该笔图中该笔Tick 盘口满足大单条件的与最新价的盘口满足大单条件的与最新价的最近价格最近价
33、格CALVOLPRICELIS:TICK图中初始化盘口大单价格表图中初始化盘口大单价格表,主要在主要在 BIDBIGVOLPRICE 与与ASKBIGVOLPRICE 前使用,提供初始化前使用,提供初始化注:仅限注:仅限TICKTICK使用使用函数解释函数解释1、ASKBIGVOLPRICE、BIDBIGVOLPRICE最近大单价格最近大单价格 大单:自动或手动定义大单:自动或手动定义2、CALVOLPRICELIST:TICK图中初始化盘口大单价格表图中初始化盘口大单价格表 初始化五档或者五档之外大单列表,供提取初始化五档或者五档之外大单列表,供提取成交数据成交数据L2_PRICE:返回返回
34、TICK图中该笔图中该笔TICK的成交价。的成交价。L2_VOLUME:返回返回TICK图中该笔图中该笔TICK的成交量。的成交量。注:仅限注:仅限TICKTICK使用使用成交数据成交数据L2_SETBIGVOL(nVol)L2_SETBIGVOL(nVol)设置大单成交手数阈值,成交手数大于设置大单成交手数阈值,成交手数大于nVolnVol的为大单的为大单注:注:1 1、仅限秒周期使用、仅限秒周期使用 2 2、定义下面红色字体函数的大单算法、定义下面红色字体函数的大单算法成交数据成交数据L2_BKVOL L2_BKVOL 返回当前秒周期买开的成交量返回当前秒周期买开的成交量L2_SKVOL
35、L2_SKVOL 返回当前秒周期卖开的成交量返回当前秒周期卖开的成交量L2_BPVOL L2_BPVOL 返回当前秒周期买平的成交量返回当前秒周期买平的成交量L2_SPVOL L2_SPVOL 返回当前秒周期卖平的成交量返回当前秒周期卖平的成交量L2_BKBIGCOUNT L2_BKBIGCOUNT 返回当前秒周期买开的大单成交次数返回当前秒周期买开的大单成交次数L2_SKBIGCOUNT L2_SKBIGCOUNT 返回当前秒周期卖开的大单成交次数返回当前秒周期卖开的大单成交次数L2_BPBIGCOUNT L2_BPBIGCOUNT 返回当前秒周期买平的大单成交次数返回当前秒周期买平的大单成
36、交次数L2_SPBIGCOUNT L2_SPBIGCOUNT 返回当前秒周期卖平的大单成交次数返回当前秒周期卖平的大单成交次数L2_BKBIGTOTVOL L2_BKBIGTOTVOL 返回当前秒周期买开的大单成交量返回当前秒周期买开的大单成交量L2_SKBIGTOTVOL L2_SKBIGTOTVOL 返回当前秒周期卖开的大单成交量返回当前秒周期卖开的大单成交量L2_BPBIGTOTVOL L2_BPBIGTOTVOL 返回当前秒周期买平的大单成交量返回当前秒周期买平的大单成交量L2_SPBIGTOTVOL L2_SPBIGTOTVOL 返回当前秒周期卖平的大单成交量返回当前秒周期卖平的大单
37、成交量注:仅限秒周期使用注:仅限秒周期使用成交数据成交数据L2_BIDVOL L2_BIDVOL 返回当前秒周期主动买的成交量返回当前秒周期主动买的成交量L2_ASKVOL L2_ASKVOL 返回当前秒周期主动卖的成交量返回当前秒周期主动卖的成交量L2_BIDBIGCOUNT L2_BIDBIGCOUNT 返回当前秒周期主动买的大单成交次数返回当前秒周期主动买的大单成交次数L2_ASKBIGCOUNT L2_ASKBIGCOUNT 返回当前秒周期主动卖的大单成交次数返回当前秒周期主动卖的大单成交次数L2_BIDBIGTOTVOL L2_BIDBIGTOTVOL 返回当前秒周期主动买的大单成交
38、量返回当前秒周期主动买的大单成交量L2_ASKBIGTOTVOL L2_ASKBIGTOTVOL 返回当前秒周期主动卖的大单成交量返回当前秒周期主动卖的大单成交量注:仅限秒周期使用注:仅限秒周期使用小节小节 引用函数,相对比较简单,直接将函数写进相应的语句,函数即代表其本身所表示的数值。日内模型的编写思路及案例日内模型的编写思路及案例买卖人气型买卖人气型大单跟踪型大单跟踪型买卖人气型买卖人气型 根据盘口价量变化判断买卖双方的交易气氛,依此作根据盘口价量变化判断买卖双方的交易气氛,依此作为入场依据,可获得短暂盈利。为入场依据,可获得短暂盈利。可能用到的函数:各档位委托量、多空双方的大单价可能用到
39、的函数:各档位委托量、多空双方的大单价格、主动买卖的成交次数等格、主动买卖的成交次数等例例1A:=L2_BIDVOL1+L2_BIDVOL2+L2_BIDVOL3;/定义买盘前定义买盘前3档总量档总量B:=L2_ASKVOL1+L2_ASKVOL2+L2_ASKVOL3;/定义卖盘前定义卖盘前3档总量档总量D:A-B;CROSS(D,0)&ISLASTSK=0&ISLASTBK=0,BK(1);/买量大于卖量且前一个买量大于卖量且前一个指令不是开仓指令,则买开仓指令不是开仓指令,则买开仓1手;手;CROSS(0,D)&ISLASTBK=0&ISLASTSK=0,SK(1);/买量小于卖量且前一
40、个买量小于卖量且前一个指令不是开仓指令,则卖开仓指令不是开仓指令,则卖开仓1手;手;EVERY(DREF(D,1),2)&ISLASTSK=1&ISLASTBK=0,BP(1);/连续连续2个周期个周期买量不断增加且前一个指令是卖开仓,则平买量不断增加且前一个指令是卖开仓,则平1手空单;手空单;EVERY(DL2_ASKBIGCOUNT,3),BPK;/三个周期内,主动三个周期内,主动买大单成交次数一直大于主动卖成交次数,做多买大单成交次数一直大于主动卖成交次数,做多EVERY(L2_BIDBIGCOUNTL2_ASKBIGCOUNT,3),SPK;/三个周期内,主动三个周期内,主动买大单成交
41、次数一直小于主动卖成交次数,做空买大单成交次数一直小于主动卖成交次数,做空AUTOFILTER;使用日内模型需要注意的问题使用日内模型需要注意的问题1、日内平仓2、手续费3、滑点4、信号忽闪什么是下单组件什么是下单组件下单组件的作用下单组件的作用下单组件如何编写下单组件如何编写基本语法基本语法一、变量的定义及赋值:一、变量的定义及赋值:VAR N1;VAR N1;VAR N2;VAR N2;VAR N3;VAR N3;N1=3000;N1=3000;N2=88.888;N2=88.888;N3=“N3=“股指期货股指期货”;”;基本语法基本语法二、函数的定义:二、函数的定义:VOID MAIN
42、()VOID MAIN()VAR BKDEAL()VAR BKDEAL()RETURN(10)RETURN(10)VOID BKDEAL()VOID BKDEAL()VAR N;VAR N;VOID MAIN()VOID MAIN()N=“N=“文华财经文华财经”;”;MessageOut(N);MessageOut(N);主函数:主函数:VAR BKDEAL(A,B)VAR BKDEAL(A,B)VAR C;VAR C;C=(A+B)/2;C=(A+B)/2;RETURN(C)RETURN(C)D=BKDEAL(15,20);D=BKDEAL(15,20);带返回值的函数:带返回值的函数:不
43、带返回值的函数:不带返回值的函数:VOID BKDEAL()VOID BKDEAL()T_Deal(“IF1108”,0,0,1,0);T_Deal(“IF1108”,0,0,1,0);IF()IF()BKDEAL()BKDEAL()下单组件包括的系统函数下单组件包括的系统函数函数简介函数简介三、常用函数三、常用函数判断判断IFIF(F_Sig()=BKF_Sig()=BK)BKDeal();BKDeal();ELSEELSE IFIF(F_Sig()=SKF_Sig()=SK)SKDeal();SKDeal();函数简介函数简介三、常用函数三、常用函数信号信号IF(IF(F_FreshSig
44、()F_FreshSig()=1&=1&F_SigValid()F_SigValid()=1)=1)IF(IF(F_Sig()F_Sig()=BK)=BK)函数简介函数简介三、常用函数三、常用函数委托委托T_Deal(Code,bs,kp,vol,price)T_Deal(Code,bs,kp,vol,price)T_AddBuyOpiTo(Code,Price,Vol)T_AddBuyOpiTo(Code,Price,Vol)T_AddSellOpiTo(Code,Price,Vol)T_AddSellOpiTo(Code,Price,Vol)T_ReduceBuyOpiTo(Code,Pr
45、ice,Vol)T_ReduceBuyOpiTo(Code,Price,Vol)T_ReduceSellOpiTo(Code,Price,Vol)T_ReduceSellOpiTo(Code,Price,Vol)Code=F_DealCode()Code=F_DealCode()函数简介函数简介三、常用函数三、常用函数注册注册A=A=ReadGlobalReadGlobal(“AA”);/(“AA”);/读取读取A=A+1;/A=A+1;/计算计算WriteGlobalWriteGlobal(“AA”,A);/(“AA”,A);/更新更新函数简介函数简介三、常用函数三、常用函数输出输出Mess
46、ageOutMessageOut(3000);(3000);MessageOutMessageOut(“(“成交成交”);”);MessageOutMessageOut(N);(N);策略策略回撤平仓:回撤平仓:1 1、程序化或手动开仓做多。、程序化或手动开仓做多。2 2、盈利从最高点回撤、盈利从最高点回撤N N个点位个点位以后,自动平仓。以后,自动平仓。编写流程编写流程VAR P;VAR P;VAR HH;VAR HH;VAR N;VAR N;第一步、定义变量第一步、定义变量:第二步、编写流程图第二步、编写流程图:读取当前是否读取当前是否有多头持仓有多头持仓有持仓有持仓无持仓无持仓不操作不操
47、作平仓函数平仓函数读取最高价读取最高价符合条符合条件平仓件平仓新的最高价新的最高价更新最高价更新最高价第三步、定义函数第三步、定义函数:VOID MAIN()VOID MAIN()1 1、取得最新价。、取得最新价。2 2、定义回撤点差。、定义回撤点差。3 3、判断当前是否有持仓。、判断当前是否有持仓。4 4、如果有持仓,运行平仓程序。、如果有持仓,运行平仓程序。主函数部分:主函数部分:第三步、定义函数第三步、定义函数:策略策略2 2关键点:关键点:1 1、如何读取持仓、如何读取持仓2 2、最高价的更新、最高价的更新3 3、回撤条件、回撤条件4 4、委托数量及价格、委托数量及价格5 5、组件的调试、组件的调试编写注意事项编写注意事项1 1、流程图的编写、流程图的编写2 2、勤用语法检测、勤用语法检测3 3、重视编写规范、重视编写规范4 4、每句添加注释、每句添加注释5 5、多用自定义函数、多用自定义函数6 6、调试过程很重要、调试过程很重要 谢谢 谢谢 祝交易顺利祝交易顺利