文华财经程序化交易初级篇_第1页
文华财经程序化交易初级篇_第2页
文华财经程序化交易初级篇_第3页
文华财经程序化交易初级篇_第4页
文华财经程序化交易初级篇_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文华财经文华财经 研究部研究部1 程序化交易概念及应用指南程序化交易概念及应用指南2 模型基本结构和编写要点模型基本结构和编写要点3 如何编写带有资金管理和止损的策略模型如何编写带有资金管理和止损的策略模型4 如何进行多维的模型评估如何进行多维的模型评估 5 如何编写基于如何编写基于Tick逐笔数据的日内高频模型逐笔数据的日内高频模型 6 如何编写下单组件对下单过程进行精细控制如何编写下单组件对下单过程进行精细控制什么是程序化交易?什么是程序化交易? 程序化是一个交易的概念,用户可以把平时的交易思想,写成交易策略模型,让电脑去执行这些交易思想,自动下单。利用电脑的计算能力和铁面无私,提高下单的

2、速度和效率,避免交易收到情绪的影响,理性交易。 程序化也是一个研究的概念,程序化平台都提供丰富历史数据和收益、风险等多角度的模型评估算法的,用户可以在电脑的仿真交易环境下,去测试、改进策略模型,这样交易思想就可以快速成熟了,不再需要动辄几个月甚至几年的实盘验证了。利用电脑的历史数据存储能力,能节省时间,节省金钱。程序化交易应用指南程序化交易应用指南不同用户群体对程序化的需求也不尽相同,我们把程序化应用,从初级应用到高级应用,分成6个级别向大家介绍。信号预警盒子信号预警盒子公式条件单公式条件单趋势跟踪策趋势跟踪策略(过滤模略(过滤模型)型)加仓资金管理策加仓资金管理策略(非过滤模型)略(非过滤模

3、型)模型组合模型组合高频交易高频交易一级:信号预警盒子一级:信号预警盒子信号预警盒子是一种为程序化半自动下单半自动下单的用户提供的功能,客户可以在信号预警盒子自己设定预警的模型,在条件满足的时候,系统能够会弹出弹出预警窗口,确认就可以直接下单了。这个功能类似以前版本的半自动,但是增加了显示加载模型运行情况的列表,我们叫做盒子。盒子还可以后台运行,加载了信号预警以后,可以做看盘等其他操作,不影响模型出信号的。信号预警盒子的主要功能:1、点击盒子列表中的一行,可以打开k线图上查看设定预警模型 的信号。2、支持设置信号持续时间和信号消失确认时间二级:公式条件单二级:公式条件单 公式条件单是为只按照某

4、种特定条件进行交易只按照某种特定条件进行交易的用户,提供的一种灵活的程序化执行方式。 公式条件单让条件单不再停留在简单的价格条件和时间条件上,可以利用文华麦语言编写出思路更广的条件。 客户可以在组群中加载条件单模组,系统根据写入的条件进行自动交易。公式条件单的主要功能:公式条件单的主要功能:1、 只写开仓条件,按照条件自动开仓;2、 只写平仓条件,将初始化带入模组的持仓自动平掉;3、信号独立,没有过滤机制。4、可以随意进行主观干预。5、可以后台运行。三级:趋势跟踪策略(过滤模型)三级:趋势跟踪策略(过滤模型) 为有完整交易策略的投资者提供的全自动程序化交易全自动程序化交易。交易策略中一开一平,

5、且交易手数开平对应,不会出现锁仓和加仓的情况。 客户自己在组群中加载模组后,出现信号按照信号执行方式确认后自动下单交易。不加仓模型的主要功能:不加仓模型的主要功能:1、可以通过麦语言,编写各类技术分析指标、形态、止损止盈等策略;2、模型中必须加入AUTOFILTER函数以实现交易指令的开平对应;3、可以主观干预。4、可以后台运行。四级:加仓资金管理策略(非过滤模型)四级:加仓资金管理策略(非过滤模型) 为资金量较大,且交易周期跨度较大的投资者提供的全自动程序化交易。 在制定交易策略的时候,可以对资金进行合理规划,确定首次开仓手数和后续加仓手数,在策略中实现更灵活资金管理更灵活资金管理。客户自己

6、在组群中加载模组后,出现信号按照信号执行方式确认后自动下单交易。加仓模型的主要功能:加仓模型的主要功能:1、除不加仓模型可以实现的策略外,还可以实现带有资金管理 的策略。2、编写时可以利用头寸函数进行过滤,避免锁仓;3、可以主观干预;4、可以后台运行。五级:模型组合五级:模型组合 程序化交易是一项系统工程,工程就是要通过各个环节的配合,达到结果的最优。 程序化交易想实现稳定盈利,就需要模型组合,可以把各种不同策略类型的模型,合理分配每一个模型的资金量,行情不好的时候模型之间盈亏互抵,行情好的时候共同盈利,即可以平滑资金曲线,又可以达得稳定盈利的效果。 Wh8的模组,为用户提供一个合约上加载多个

7、模型,每一个一个合约上加载多个模型,每一个模型分配不同的资金,每一个模型在分配的资金内运行的功能。模型分配不同的资金,每一个模型在分配的资金内运行的功能。WH8也提供组合测试功能也提供组合测试功能,可以将一篮子模型组合到一起测试,查看模型组合的测试结果。 确定好模型组合后,可以将这些组合加载到模组中一起运行,达到组合交易的目的。其中任何模型出现信号都会按照信号执行方式确认后自动下单。模组组合的主要功能:模组组合的主要功能:1、 组合测试可以提供组合内各模型的资金曲线和组合后的总资金曲线2、 组合测试可以提供组合后的详细测试数据详细测试数据,如:总的盈亏、总的最大回撤、总的胜率等3、 组合测试可

8、以提供组合后的阶段总结,可以按年或者按月统按年或者按月统计盈利率、胜率等计盈利率、胜率等。4、 模型组合在模组中运行时,相互独立,互不干扰。5、 模型组合的模组,可以后台运行。六级:高频交易六级:高频交易 日内高频是为以研究市场微观结构微观结构为主要交易基础的投资者提供的全自动程序化交易。 在日内高频平台中,客户可以使用日内高频函数,取得盘口的多档挂单,及逐笔成交数据,编写资金流或者其他市场微观结构策略的交易模型,一些国内的炒单思路,也可以编写成高频模型。 客户可以自己将高频模型加载在某一合约上,出现信号按照信号执行方式确认后自动下单。此外,客户还可以使用下单组件编写日内高频模型,利用下单组件

9、独立运行的方式实现高频交易。日内高频的主要功能:日内高频的主要功能:1、可以切换到各级秒周期;2、可以进行高频模型的TICK逐笔回放测试;3、具有独特的量能周期功能,更好的实现价量策略;4、可以自己定义大单,将成交数据按类取出大单数据,如取主动买大单成交次数。3、可以后台运行。课程内容课程内容一、模型的基本结构和跨指标模型的编写一、模型的基本结构和跨指标模型的编写二、跨周期模型的编写二、跨周期模型的编写 MY 语言的编写基于文华财经wh3平台中。通过本节课的学习,了解文华公式编写平台的基本函数与语法,设计自己的指标和程序化交易策略模型,实现全自动的委托发单交易。指标指标 指能够绘出图线但不发交

10、易指令的公式。指标是一个技术分析范畴的概念。交易模型:交易模型: 指能够发出BK、SP等交易指令,模型还包含下单方向,交易 手数,止盈止损等与交易、资金使用相关的参数设置。交易模型是一个交易范畴的概念。交易指令:交易指令: 指交易模型自动发出的下单委托指令,可以不经过投资者确认直接下单,也可以等待投资者回车确认再下单。交易指令在K线图上以不同颜色和形状的箭头来代表。交易指令是一个程序化交易范畴的概念。理解一下名词:理解一下名词:RSV:=(CLOSE-LLV(LOW,N)/(HHV(HIGH,N)-LLV(LOW,N)*100;K:SMA(RSV,M1,1);D:SMA(K,M2,1);J:3

11、*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(0,J),BP;/J向下穿越0,发出买平交易指令AUTOFILTER;MY language 编写语法MY language 操作符1、定义变量名称变量名

12、称不能相互重复;不能与参数名重复;不能与函数名重复;2、半角输入法的大写状态;3、每个语句应该以分号结束;命名命名参数参数A:(O+C)/2;B:CO; /判断是否收阳;满足条件返回1,否则返回0D:TIME=0900&CO; /用于多条件逻辑关系SETTLE引用结算价REF(X,N)引用X在N个周期前的值MA(X,N) 求X在N周期内的简单移动平均。定义变量:当根K线最高价;结算价:15周期收盘价均线(显示定义);REF(HH,1);REF(MA15,1);HH:=H;S:=SETTLE;MA15:MA(C,15);衍生:当前K线的前一个周期最高价; 当前K线的前一个周期15均线; 在编写前

13、,需要将交易思想清晰量化后,通过语言函数编写完成交易模型基本结构交易模型基本结构1.1.定义需要的每个变量定义需要的每个变量2.2.交易条件交易条件+ +交易指令交易指令MA5:=MA(C,5);MA10:=MA(C,10);CROSS(MA5,MA10),BK;CROSS(MA10,MA5),SP;CROSS(MA10,MA5),SK;CROSS(MA5,MA10),BP;定义思路中涉及到的变量交易条件,写入交易指令关键字:反手指令均线上穿平空做多,均线下穿平多做空;CROSS(MA5,MA10),BPK;CROSS(MA10,MA5),SPK;具体细化思路:5日均线上穿10日均线,平空做多

14、;5日均线下穿10日均线,平多做空;关键词:关键词:多个交易条件多个交易条件1:以均线结合KD交叉指标为例:2:练习编写:MACD、KDJ指标模型。MA5:=MA(C,5);MA10:=MA(C,10);MA5MA10,BK;/5日均线大于10日均线买入。MA5MA10&CROSS(K,D),BK;/5日均线大于10日均线并且KD金叉买入MA5MA10&CROSS(D,K),SP;/10日均线大于5日均线并且KD死叉卖出AUTOFILTER;DIFF := EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);DEA := EMA(DIFF,N);MACD:=2*(DIFF-D

15、EA);RSV:=(CLOSE-LLV(LOW,N)/(HHV(HIGH,N)-LLV(LOW,N)*100;K:=SMA(RSV,M1,1);D:=SMA(K,M1,1);J:=3*K-2*D;(CROSS(K,D)&J1),BK;(CROSS(D,K)&REF(J,1)70)|(CROSS(DEA,DIFF)&MACD70)|(CROSS(DEA,DIFF)&MACD-1),SK;(CROSS(K,D)&REF(J,1)1),BP; AUTOFILTER;总结:多条件下用“()”明确逻辑关系关键字:画线函数趋势线以突破趋势线为进场、出场点具体细化思路:要求:1.突破5周期均线与30周期均线

16、金叉k线最高点和20周期均线与 60周期均线金叉k线最高点直接的连线,平空做多。2.突破5周期均线与30周期均线死叉k线最低点和20周期均线与 60周期均线死叉k线最低点直接的连线,平多做空。实例源码:实例源码:MA5:=MA(C,5);MA5:=MA(C,5);MA20:=MA(C,20);MA20:=MA(C,20);MA30:=MA(C,30);MA30:=MA(C,30);MA60:=MA(C,60);MA60:=MA(C,60);TMP1:=TRENDLINES(CROSS(MA5,MA30),H,CROSS(MA20,MA60),H);TMP1:=TRENDLINES(CROSS(

17、MA5,MA30),H,CROSS(MA20,MA60),H);TMP2:=TRENDLINES(CROSS(MA30,MA5),L,CROSS(MA60,MA20),L);TMP2:=TRENDLINES(CROSS(MA30,MA5),L,CROSS(MA60,MA20),L);HTMP1&CMA30,BPK;HTMP1&CMA30,BPK;LTMP2&CMA30,SPK;LTMP2&CDM10&DM10DM30&CROSS(K,D),BPK;DM5DM10&DM10DM10&CROSS(MA5,MA10)&TIME1450,BK;(DM5=1450,SP;DM5DM10&CROSS(MA

18、10,MA5)&TIMEDM10&CROSS(MA5,MA10)|TIME=1450,BP;AUTOFILTER;课程内容课程内容一、头寸函数介绍一、头寸函数介绍二、资金管理,止盈止损模型的编写思路及案例二、资金管理,止盈止损模型的编写思路及案例三、使用资金管理,止盈止损模型需要注意的问题三、使用资金管理,止盈止损模型需要注意的问题常用头寸函数介绍常用头寸函数介绍ISLASTBK判断上一个交易信号是否是BK。用法:ISLASTBK 如果上一个交易信号是BK则返回1否则返回0ISLASTSK判断上一个交易信号是否是SK。用法:ISLASTSK 如果上一个交易信号是SK则返回1,否则返回0BARS

19、BK上一次买开信号位置用法:BARSBK返回上一次买开仓距离当前k线的k线数。BARSSK上一次卖开信号位置用法:BARSSK返回上一次卖开仓距离当前k线的k线数。BKPRICE买开信号位置的买开信号价位。用法:BKPRICE返回最近一次模型买开位置的买开信号价位。例如: BKPRICE-CLOSE60 , SP;/如果买开价位比当前价位高出60,且买开价位存在,卖平仓请注意当模型存在连续多个开仓信号(加仓)的情况下,该函数返回的是最后一次开仓信号的价格,而不是开仓均价。注:BKPRICE 只在加载之后的K线上才返回信号价位。效果测试中该函数返回信号位置的收盘价SKPRICE卖开信号位置的卖开

20、信号价位用法:SKPRICE返回最近一次模型卖开位置的卖开信号价位。例如:CLOSE-SKPRICE60 & SKPRICE0, BP;/如果当前价位高出卖开价位60, 且卖开价位存在, 买平仓请注意当模型存在连续多个开仓信号(加仓)的情况下,该函数返回的是最后一次开仓信号的价格,而不是开仓均价。注:SKPRICE 只在加载之后的K线上才返回信号价位。效果测试中该函数返回信号位置的收盘价MONEY虚拟资金余额用法:MONEY返回虚拟资金余额。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX

21、等可能会导致误差。MARGIN合约保证金用法:MARGIN返回当前合约的保证金比率(用户启动模组时设置的)。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。PROFIT虚拟逐笔浮盈用法:PROFIT返回当前的虚拟逐笔浮动盈亏。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。SETDEALPERCENT设置下单的虚拟资金使用比例用法:SETDEALPE

22、RCENT(fPercent)表示每次按资金的fPercent(范围1100)下单。例子:SETDEALPERCENT(20); /每次按资金比例的%20下单注:应该与AUTOFILTER函数同时使用BKVOL模型虚拟多头持仓用法:BKVOL返回模型虚拟多头持仓。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。SKVOL模型虚拟空头持仓用法:SKVOL返回模型虚拟空头持仓。注意与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAK

23、BARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。一、资金管理模型的编写思路及案例一、资金管理模型的编写思路及案例利用头寸函数实现对仓位的加减。利用头寸函数实现对仓位的加减。例例1 加仓模型加仓模型A:=多头开仓条件; A1:=多头加仓条件;B:=空头交易条件; B1:=空头加仓条件;D:=多头平仓条件;E:=空头平仓条件;A & NOT(ISLASTSK| ISLASTBK) , BK(2);B & NOT(ISLASTBK| ISLASTSK) , SK(2);BKVOL=2 & A1 & ISLASTBK , BK(1);SKVOL=2 & B 1& ISLASTS

24、K , SK(1);D & ISLASTBK,SP(BKVOL);E & ISLASTSK,BP(SKVOL);注意,交易时要考虑前一信号方向防止锁仓。注意,交易时要考虑前一信号方向防止锁仓。例例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&C

25、ROSS(DEA,DIFF),SP;AUTOFILTER;10日均线之上开多仓(开仓资金可用资金日均线之上开多仓(开仓资金可用资金20%),价格每上涨),价格每上涨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(BKVOL*0.5);CROSS(C,BKPRICE*1.2),SP(BKVOL);CROSS(MA5,C),SP(

26、BKVOL);/非过滤模型非过滤模型 二、二、 止盈止损模型的编写思路及案例止盈止损模型的编写思路及案例例例1:限价止损、限价止盈模型:限价止损、限价止盈模型A:=多头交易条件;B:=空头交易条件;E:=多头平仓条件;F:=空头平仓条件;A,BK;E|C=BKPRICE+150,SP;B,SK;F|C=SKPRICE+100|CMA1,BK; (C=BKPRICE&C3*B,BK;A*3B,SK;CSKPRICE+M,BP;CLL+P,BP;AUTOFILTER;量能周期量能周期价量关系价量关系1、量增价涨,量价配合,看涨。2、量增价平,看平。3、量增价跌,看跌。4、量缩价涨,无量空涨,看涨

27、5、量缩价平,看平 6、量缩价跌,绵绵阴跌。 VOLTIMEMA(VOLTIME,3)&VOLTICKREF(H,1),BK;/当根量能周期形成的时间短于3根量能周期形成的时间均值并且当根量能周期包含的tick笔数少于上一根量能周期包含的tick笔数并且当根最高价大于前一根最高价VOLTIMEMA(VOLTIME,3)&VOLTICKREF(VOLTICK,1)&LREF(HHV(H,2),1),BP;LREF(LLV(L,2),1),SP;AUTOFILTER;策略模型 何时发出信号?下单组件 如何进行下单?交易系统 交易成功。什么是下单组件什么是下单组件下单组件的作用下单组件的作用控制成交

28、成本 智能分批下单。实现个性化交易 自定义止损止盈。下单下单组件如何编写组件如何编写基本语法函数简介流程图解编写范例基本语法基本语法一、变量的定义及赋值:一、变量的定义及赋值:VAR N1; /定义变量定义变量N1VAR N2; /定义变量定义变量N2VAR N3; /定义变量定义变量N3N1=3000; /整型赋值整型赋值N2=88.888; /浮点型赋值浮点型赋值N3=“股指期货股指期货”; /字符串型赋值字符串型赋值基本语法基本语法二、函数的定义:二、函数的定义:VOID MAIN() /定义主函数定义主函数 VAR BKDEAL() /带返回值的函数带返回值的函数RETURN(10)

29、/返回值返回值 VOID BKDEAL() /不带返回值函数不带返回值函数下单组件包括的系统函数下单组件包括的系统函数盘口信息 Offers(Code,strContent) 某合约买卖盘报价 Volume(Code) 某合约当前成交量交易系统信息 T_Equity(Type), 返回交易账号当前权益 T_OrderState(OrderID) 返回委托状态策略模型信号 F_BuyAvgPrice() 返回模型多头持仓成本价 F_Sig() 返回模型当前的信号下单控制 T_Deal(Code,bs,kp,vol,price) 按指定价格发出委托 T_DeleteOrderAll() 撤掉所有未成交挂单函数简介函数简介三、常用函数三、常用函数判断判断IF(F_Sig()=BK) /如果当前是如果当前是BK信号信号 BKDeal(); /运行开多仓函数运行开多仓函数ELSE IF(F_Sig()=SK)/如果当前是如果当前是SK信号信号 SKDeal(); /运行开空仓函数运行开空仓函数函数简介函数简介三、常用函数三、常用函数信号信号IF(F_FreshSig()=1&F_SigValid()=1) /如果如果是没有消失的新信号是没有消失的新信号 IF(F_Sig()=B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论