文华财经程序化交易培训课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《文华财经程序化交易培训课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文华 财经 程序化 交易 培训 课件
- 资源描述:
-
1、1 程序化交易概念程序化交易概念2 “麦语言麦语言”介绍介绍3 模型基本结构和编写模型基本结构和编写4 如何编写带有资金管理和止损的策略模型如何编写带有资金管理和止损的策略模型5 如何进行多维的模型评估如何进行多维的模型评估 6 如何编写基于如何编写基于Tick逐笔数据的日内高频模型逐笔数据的日内高频模型 7 如何编写下单组件对下单过程进行精细控制如何编写下单组件对下单过程进行精细控制什么是程序化交易?什么是程序化交易? 程序化是一个交易的概念,用户可以把平时的交易思想,写成交易策略模型,让电脑去执行这些交易思想,自动下单。利用电脑的计算能力和铁面无私,提高下单的速度和效率,避免交易收到情绪的
2、影响,理性交易。 程序化也是一个研究的概念,程序化平台都提供丰富历史数据和收益、风险等多角度的模型评估算法的,用户可以在电脑的仿真交易环境下,去测试、改进策略模型,这样交易思想就可以快速成熟了,不再需要动辄几个月甚至几年的实盘验证了。利用电脑的历史数据存储能力,能节省时间,节省金钱。程序化交易需求分析程序化交易需求分析麦语言(麦语言(My language)模型开发平台)模型开发平台 赢智的“麦语言”源于2004年文华推出的国内第一套程序化函数库,经过7年的发展,吸收几十万用户的意见反馈,一点一点完善起来的的,是一套成熟稳定的模型开发平台。 麦语言倡导的是积木式的编程理念,把复杂算法封装到一个
3、个的函数里,采用“小语法,大函数”的构建模式。语法虽然简单,但是配合专门的程序化数据结构,配合丰富的金融统计函数库,同样可以支持逻辑复杂的金融应用。 麦语言的函数库,是经常更新的,根据客户的新要求随时添加新函数,来支持编程者的交易新思想和新应用。 麦语言,是国内使用人数最多的程序化模型开发平台。 1、了解指标、模型相关术语; 2、熟悉模型编写的语法; 3、理解模型编写的结构和编写方法。 4、学习如何编写跨周期策略模型指标、模型相关术语模型编写的语法与操作符模型编写的结构和编写方法模模 型型 基基 本本 结结 构构学习编写跨指标、跨周期模型公式:公式: 泛指指标、模型。没有具体指向性。指标:指标
4、: 指能够绘出图线但不发交易指令的公式。指标是一个技术分析范畴的概念。交易信号:交易信号: 指指标上出现的提示投资者买卖的指示,可以是图线交叉、文字、图形。投资者需要按照信号指示去手动委托下单。交易信号也是一个技术分析范畴的概念。交易模型:交易模型: 指能够发出BK、SP等交易指令,模型还包含下单方向,交易手数,止盈止损等与交易、资金使用相关的参数设置。交易模型是一个交易范畴的概念。交易指令交易指令: 指交易模型自动发出的下单委托指令,可以不经过投资者确认直接下单,也可以等待投资者回车确认再下单。交易指令在K线图上以不同颜色和形状的箭头来代表。交易指令是一个程序化交易范畴的概念。RSV:=(C
5、LOSE-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: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(
6、0,J),BP;/J向下穿越0,发出买平交易指令AUTOFILTER;指标、模型相关术语模型编写的语法与操作符模型编写的结构和编写方法模模 型型 基基 本本 结结 构构1、命名部分:支持汉字、字母、数字、划线格式命名,长度控制在31字符内;命名不能和已存在的公式名称重复。2、定义变量名称变量名称不能相互重复;不能与参数名重复;不能与函数名重复。3、半角输入法的大写状态。4、每个语句应该以分号结束。5、参数部分: 可以设置六个参数; 首先是参数名称,然后是参数的最小值,最大值,最后是参数的默认值; 在定义参数时要注意的是参数名称不可以重复,12个字符内。6、运用函数语言,也就是表达你的语言: 函
7、数具有自己的表达式,运行它就需要将我们的思路,按照函数的表达式套用表述。命名命名参数参数MA5:=MA(C,5);MA10:=MA(C,10);CROSS(MA5,MA10);CROSS(MA10,MA5);CLOSE引用收盘价引用收盘价(在盘中指最新价在盘中指最新价),也可简写为,也可简写为 C 。HIGH引用最高价,也可简写为引用最高价,也可简写为 H 。LOW引用最低价,也可简写为引用最低价,也可简写为L 。OPEN引用开盘价,也可简写为引用开盘价,也可简写为O 。MA(X,N) 求求X在在N周期内的简单移动平均。周期内的简单移动平均。计算方法计算方法: MA=(A1+A2+A3+A4+
8、A5)/5 求求A在在5个周期内的简单移动平均个周期内的简单移动平均CROSS(X,Y)表示表示 X上穿上穿Y;例:例:CROSS(CLOSE,MA(CLOSE,5);表示收盘线从下方向上穿过表示收盘线从下方向上穿过5日均线日均线运用函数运用函数定义变量定义变量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);/死叉注释或者舍去 想要在编写后,加入自己的语言注释,在结尾处用“/”表示;或者想舍去
9、某段,在某段在最前端加入“/”;练习练习1 1:为函数做注释:为函数做注释IFELSE(C,A,B)/如果条件C成立则返回A值,否则返回B值SETTLE引用结算价REF(X,N)引用X在N个周期前的值MA(X,N) 求X在N周期内的简单移动平均。定义变量:结算价:15周期收盘价均线(显示定义);REF(H,1);REF(MA15,1);S:=SETTLE;MA15:MA(C,15);衍生:当前K线的前一个周期最高价; 当前K线的前一个周期15均线; 5日均线上穿10日均线的同时收盘价大于20日均线,或者5日均线上穿10日均线的5个点;MA5:=MA(C,5);MA10:=MA(C,10);MA
10、20:=MA(C,20);A:(CROSS(MA5,MA10)&CMA20)|CROSS(MA5,MA10+5*MD);总结:清晰逻辑关系,可以用“()”来表示。指标、模型相关术语模型编写的语法与操作符模型编写的结构和编写方法模模 型型 基基 本本 结结 构构 在编写前,需要将交易思想清晰量化后,通过语言函数编写完成。交易模型基本结构:交易模型基本结构:1.1.定义需要的每个变量定义需要的每个变量2.2.交易条件交易条件+ +交易指令交易指令MA5:=MA(C,5);MA10:=MA(C,10);CROSS(MA5,MA10),BPK;CROSS(MA10,MA5),SPK;定义思路中涉及到的
11、变量交易条件,写入交易指令关键字:反手指令均线上穿平空做多,均线下穿平多做空;MA5:MA(C,5);MA10:MA(C,10);CROSS(MA5,MA10),BPK;CROSS(MA10,MA5),SPK;具体细化思路:5日均线上穿10日均线,平空做多;5日均线下穿10日均线,平多做空;关键字:日内模型日内交易:均线上穿平空做多,均线下穿平多做空;CROSS(MA5,MA10)&TIME=0900&TIME=1457,SP;CROSS(MA10,MA5)&TIME=0900&TIME=1457,BP;具体细化思路:3分钟周期5日均线上穿10日均线,平空做多;5日均线下穿10日均线,平多做空
12、;DATE取日期数(19700101-20331231)。用法:DATE 返回某周期的日期数。TIME取周期的时数。用法:TIME 取周期的时数。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的值。例:
13、VALUEWHEN(HIGHREF(HIGH,5),HIGH);表示当前最高价大于前五个周期最高价的最大值时返回当前最高价。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条
14、件的周期数。如果N为0则表示从已申请到的数据的第一天开始算起。例:WR:=-100*(HHV(HIGH,N)-CLOSE)/(HHV(HIGH,N)-LLV(LOW,N); COUNT(WR80,5);表示统计在5个周期内满足WR80的次数AUTOFILTER 对模型的所有信号按照先买后卖,先开后平的顺序过滤。1.连续的同方向指令只有第一个有效,其他的将被过滤;2.交易指令必须配对出现(例如:前面已经有了买开指令,则后面只允许出现卖平指令,其他的指令都被滤掉。这也就意味着,第一个指令只能是买开或者卖开指令,其他的都被过滤); CBKPRICE+50*MD;/最新价大于买开仓价位的50个点HHV
15、(H,BARSBK+1);/开仓到目前为止最高价N:=BARSLAST(DATEREF(DATE,1)+1;/今天开盘到目前为止的周期数HH:HHV(H,N);/开盘到目前为止的最高价 昨天开盘的最高价?表达式一:REF(HH,N);表达式二:VALUEWHEN(DATEREF(DATE,1),REF(HH,1);学习跨周期模型的编写原理和编写步骤。跨周期函数介绍跨周期函数介绍引用某品种在某个周期上加载了某个指标的数据。引用某品种在某个周期上加载了某个指标的数据。用法:用法:#IMPORT CODE, PERIOD, FORMULA AS VAR引用 CODE 所对应的合约 PERIOD 周期
16、下指标 FORMULA 的数据。CODE 文华码,PERIOD 周期,FORMULA 引用指标名,VAR 定义变量名跨周期跨合约模型的编写规则跨周期跨合约模型的编写规则1.只能引用 .FML/.XFML文件 2.只能引用如下周期:MIN1 MIN3 MIN5 MIN15 MIN30 HOUR1 DAY WEEK MONTH 3.只能短周期引用长周期4.被引用的指标中不能存在引用5.如果不写文华码,默认引用当前合约,也可以直接写合约代码如:rb12016.FORMULA 引用指标名,只能引用除数字、或者数字开头的名称之外的名称。跨周期跨合约模型的编写思路及案例跨周期跨合约模型的编写思路及案例1.
17、同一合约不同周期调用 示范12.同一合约不同周期调用 示范23.不同合约之间的数据调用 例例1 同一合约不同周期的数据调用同一合约不同周期的数据调用要求要求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,
18、N)/(HHV(HIGH,N)-LLV(LOW,N)*100;K:SMA(RSV,M1,1);D:SMA(K,M2,1);J:3*K-2*D;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
19、);B:=CMA10,BPK;DL20&MA560 , SP;/如果买开价位比当前价位高出60,且买开价位存在,卖平仓请注意当模型存在连续多个开仓信号(加仓)的情况下,该函数返回的是最后一次开仓信号的价格,而不是开仓均价。注:BKPRICE 只在加载之后的K线上才返回信号价位。效果测试中该函数返回信号位置的收盘价SKPRICE卖开信号位置的卖开信号价位用法:SKPRICE返回最近一次模型卖开位置的卖开信号价位。例如:CLOSE-SKPRICE60 & SKPRICE0, BP;/如果当前价位高出卖开价位60, 且卖开价位存在, 买平仓请注意当模型存在连续多个开仓信号(加仓)的情况下,该函数返回
20、的是最后一次开仓信号的价格,而不是开仓均价。注:SKPRICE 只在加载之后的K线上才返回信号价位。效果测试中该函数返回信号位置的收盘价FEE合约手续费用法:FEE返回当前合约的手续费(用户启动模组时设置的)。注意不能与未来函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!MONEY虚拟资金余额用法:MONEY返回虚拟资金余额。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PE
21、AKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。MARGIN合约保证金用法:MARGIN返回当前合约的保证金比率(用户启动模组时设置的)。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。VOLMARGIN 当前合约的持仓保证金 用法:VOLMARGIN计算当前的持仓保证金。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。M
22、ONEYRATIO资金使用率用法:MONEYRATIO返回当前的虚拟资金的使用率。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。MONEYTOT虚拟总资金用法:MONEYTOT返回当前虚拟总资金(虚拟资金余额+持仓保证金)。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。PROFIT虚拟逐笔浮盈用法:PROFIT返回当前的虚拟逐笔浮动盈亏。注意与未
23、来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。SETDEALPERCENT设置下单的虚拟资金使用比例用法:SETDEALPERCENT(fPercent)表示每次按资金的fPercent(范围1100)下单。例子:SETDEALPERCENT(20); /每次按资金比例的%20下单注:应该与AUTOFILTER函数同时使用BUYVOL模型虚拟多头持仓用法:BUYVOL返回模型虚拟多头持仓。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK
展开阅读全文