




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
% 简介:系统基于布林通道原理,是一个趋势追踪系统。% 入场条件:% ROC大于0且价格突破布林带上轨就开多仓;% ROC小于0且价格跌破布林带下轨就开空仓;% 关键参数:% 买卖滑点参数Slip% 布林带的周期数BollLength;% 布林带标准差的倍数Offset;% ROC的周期数ROCLength;% 跟踪止损算法的周期数ExitLength;% -提取数据-user=input(请输入数据库用户名:,s);password=input(请输入数据库密码:,s);commodity=input(请输入商品(如RB888):,s);Freq=input(请输入周期(如M5):,s);conna=database(Futures_matlab,user,password);cursor=exec(conna,strcat(select * from ,32,commodity,_,Freq);%32是指空格的ASCLL码cursor=fetch(cursor);data=cursor.Data;Date=datenum(data(:,1); %日期时间Open=cell2mat(data(:,2); %开盘价High=cell2mat(data(:,3); %最高价Low=cell2mat(data(:,4); %最低价Close=cell2mat(data(:,5); %收盘价Volume=cell2mat(data(:,6); %成交量OpenInterest=cell2mat(data(:,7); %持仓量% -定义参数(常量)-%策略参数Slip=2; %滑点BollLength=50; %布林线长度Offset=1.25; %布林线标准差倍数ROCLength=30; %ROC的周期数%品种参数MinMove=1; %商品的最小变动量PriceScale=1; %商品的计数单位TradingUnits=10; %交易单位Lots=1; %交易手数MarginRatio=0.07; %保证金率TradingCost=0.0003; %交易费用设为成交金额的万分之三RiskLess=0.035; %无风险收益率(计算夏普比率时需要)% -定义变量-%策略变量UpperLine=zeros(length(data),1); %上轨LowerLine=zeros(length(data),1); %下轨MidLine=zeros(length(data),1); %中间线Std=zeros(length(data),1); %标准差序列RocValue=zeros(length(data),1); %ROC值%交易记录变量MyEntryPrice=zeros(length(data),1); %买卖价格MarketPosition=0; %仓位状态,-1表示持有空头,0表示无持仓,1表示持有多头pos=zeros(length(data),1); %记录仓位情况,-1表示持有空头,0表示无持仓,1表示持有多头Type=zeros(length(data),1); %买卖类型,1标示多头,-1标示空头OpenPosPrice=zeros(length(data),1); %记录建仓价格ClosePosPrice=zeros(length(data),1); %记录平仓价格OpenPosNum=0; %建仓价格序号ClosePosNum=0; %平仓价格序号OpenDate=zeros(length(data),1); %建仓时间CloseDate=zeros(length(data),1); %平仓时间NetMargin=zeros(length(data),1); %净利CumNetMargin=zeros(length(data),1); %累计净利RateOfReturn=zeros(length(data),1); %收益率CumRateOfReturn=zeros(length(data),1); %累计收益率CostSeries=zeros(length(data),1); %记录交易成本BackRatio=zeros(length(data),1); %记录回测比例%记录资产变化变量LongMargin=zeros(length(data),1); %多头保证金ShortMargin=zeros(length(data),1); %空头保证金Cash=repmat(1e6,length(data),1); %可用资金,初始资金为10WDynamicEquity=repmat(1e6,length(data),1); %动态权益,初始资金为10WStaticEquity=repmat(1e6,length(data),1); %静态权益,初始资金为10W% -计算布林带和ROC-UpperLine MidLine LowerLine=BOLL(Close,BollLength,Offset,0);RocValue=ROC(Close,ROCLength);% -策略仿真-for i=BollLength:length(data) if MarketPosition=0 LongMargin(i)=0; %多头保证金 ShortMargin(i)=0; %空头保证金 StaticEquity(i)=StaticEquity(i-1); %静态权益 DynamicEquity(i)=StaticEquity(i); %动态权益 Cash(i)=DynamicEquity(i); %可用资金 end if MarketPosition=1 LongMargin(i)=Close(i)*Lots*TradingUnits*MarginRatio; StaticEquity(i)=StaticEquity(i-1); DynamicEquity(i)=StaticEquity(i)+(Close(i)-OpenPosPrice(OpenPosNum)*TradingUnits*Lots; Cash(i)=DynamicEquity(i)-LongMargin(i); end if MarketPosition=-1 ShortMargin(i)=Close(i)*Lots*TradingUnits*MarginRatio; StaticEquity(i)=StaticEquity(i-1); DynamicEquity(i)=StaticEquity(i)+(OpenPosPrice(OpenPosNum)-Close(i)*TradingUnits*Lots; Cash(i)=DynamicEquity(i)-ShortMargin(i); end %开仓模块 %开多头 if MarketPosition=1 & RocValue(i-1)0 & High(i)=UpperLine(i-1) %用i-1,避免未来函数 %平空开多 if MarketPosition=-1 MarketPosition=1; ShortMargin(i)=0; %平空后空头保证金为0了 MyEntryPrice(i)=UpperLine(i-1); if Open(i)MyEntryPrice(i) %考虑是否跳空 MyEntryPrice(i)=Open(i); end MyEntryPrice(i)=MyEntryPrice(i)+Slip*MinMove*PriceScale;%建仓价格(也是平空仓的价格) ClosePosNum=ClosePosNum+1; ClosePosPrice(ClosePosNum)=MyEntryPrice(i);%记录平仓价格 CloseDate(ClosePosNum)=Date(i);%记录平仓时间 OpenPosNum=OpenPosNum+1; OpenPosPrice(OpenPosNum)=MyEntryPrice(i);%记录开仓价格 OpenDate(OpenPosNum)=Date(i);%记录开仓时间 Type(OpenPosNum)=1; %方向为多头 StaticEquity(i)=StaticEquity(i-1)+(OpenPosPrice(OpenPosNum-1)-ClosePosPrice(ClosePosNum). *TradingUnits*Lots-OpenPosPrice(OpenPosNum-1)*TradingUnits*Lots*TradingCost. -ClosePosPrice(ClosePosNum)*TradingUnits*Lots*TradingCost;%平空仓时的静态权益 DynamicEquity(i)=StaticEquity(i)+(Close(i)-OpenPosPrice(OpenPosNum)*TradingUnits*Lots; end %空仓开多 if MarketPosition=0 MarketPosition=1; MyEntryPrice(i)=UpperLine(i-1); if Open(i)MyEntryPrice(i) %考虑是否跳空 MyEntryPrice(i)=Open(i); end MyEntryPrice(i)=MyEntryPrice(i)+Slip*MinMove*PriceScale;%建仓价格 OpenPosNum=OpenPosNum+1; OpenPosPrice(OpenPosNum)=MyEntryPrice(i);%记录开仓价格 OpenDate(OpenPosNum)=Date(i);%记录开仓时间 Type(OpenPosNum)=1; %方向为多头 StaticEquity(i)=StaticEquity(i-1); DynamicEquity(i)=StaticEquity(i)+(Close(i)-OpenPosPrice(OpenPosNum)*TradingUnits*Lots; end LongMargin(i)=Close(i)*Lots*TradingUnits*MarginRatio; %多头保证金 Cash(i)=DynamicEquity(i)-LongMargin(i); end %开空头 %平多开空 if MarketPosition=-1 & RocValue(i-1)0 & Low(i)=LowerLine(i-1) if MarketPosition=1 MarketPosition=-1; LongMargin(i)=0; %平多后多头保证金为0了 MyEntryPrice(i)=LowerLine(i-1); if Open(i)MyEntryPrice(i) MyEntryPrice(i)=Open(i); end MyEntryPrice(i)=MyEntryPrice(i)-Slip*MinMove*PriceScale;%建仓价格(也是平多仓的价格) ClosePosNum=ClosePosNum+1; ClosePosPrice(ClosePosNum)=MyEntryPrice(i);%记录平仓价格 CloseDate(ClosePosNum)=Date(i);%记录平仓时间 OpenPosNum=OpenPosNum+1; OpenPosPrice(OpenPosNum)=MyEntryPrice(i);%记录开仓价格 OpenDate(OpenPosNum)=Date(i);%记录开仓时间 Type(OpenPosNum)=-1; %方向为空头 StaticEquity(i)=StaticEquity(i-1)+(ClosePosPrice(ClosePosNum)-OpenPosPrice(OpenPosNum-1). *TradingUnits*Lots-OpenPosPrice(OpenPosNum-1)*TradingUnits*Lots*TradingCost. -ClosePosPrice(ClosePosNum)*TradingUnits*Lots*TradingCost;%平多仓时的静态权益,算法参考TB DynamicEquity(i)=StaticEquity(i)+(OpenPosPrice(OpenPosNum)-Close(i)*TradingUnits*Lots; end %空仓开空 if MarketPosition=0 MarketPosition=-1; MyEntryPrice(i)=LowerLine(i-1); if Open(i)0);ans=NetMargin(Type=1);WinLong=sum(ans(ans0);ans=NetMargin(Type=-1);WinShort=sum(ans(ans0);xlswrite(E:数量化金融程序化交易测试报告.xls,总盈利,交易汇总,A3);xlswrite(E:数量化金融程序化交易测试报告.xls,WinTotal,交易汇总,B3);xlswrite(E:数量化金融程序化交易测试报告.xls,WinLong,交易汇总,C3);xlswrite(E:数量化金融程序化交易测试报告.xls,WinShort,交易汇总,D3);%总亏损LoseTotal=sum(NetMargin(NetMargin0);ans=NetMargin(Type=1);LoseLong=sum(ans(ans0);ans=NetMargin(Type=-1);LoseShort=sum(ans(ans0)*Lots;ans=NetMargin(Type=1);LotsWinLong=length(ans(ans0)*Lots;ans=NetMargin(Type=-1);LotsWinShort=length(ans(ans0)*Lots;xlswrite(E:数量化金融程序化交易测试报告.xls,盈利手数,交易汇总,A8);xlswrite(E:数量化金融程序化交易测试报告.xls,LotsWinTotal,交易汇总,B8);xlswrite(E:数量化金融程序化交易测试报告.xls,LotsWinLong,交易汇总,C8);xlswrite(E:数量化金融程序化交易测试报告.xls,LotsWinShort,交易汇总,D8);%亏损手数LotsLoseTotal=length(NetMargin(NetMargin0)*Lots;ans=NetMargin(Type=1);LotsLoseLong=length(ans(ans0)*Lots;ans=NetMargin(Type=-1);LotsLoseShort=length(ans(ans0);ans=NetMargin(Type=1);MaxWinLong=max(ans(ans0);ans=NetMargin(Type=-1);MaxWinShort=max(ans(ans0);xlswrite(E:数量化金融程序化交易测试报告.xls,最大盈利,交易汇总,A18);xlswrite(E:数量化金融程序化交易测试报告.xls,MaxWinTotal,交易汇总,B18);xlswrite(E:数量化金融程序化交易测试报告.xls,MaxWinLong,交易汇总,C18);xlswrite(E:数量化金融程序化交易测试报告.xls,MaxWinShort,交易汇总,D18);%最大亏损MaxLoseTotal=min(NetMargin(NetMargin0);ans=NetMargin(Type=1);MaxLoseLong=min(ans(ans0);ans=NetMargin(Type=-1);MaxLoseShort=min(ans(ans0);xlswrite(E:数量化金融程序化交易测试报告.xls,最大亏损,交易汇总,A19);xlswrite(E:数量化金融程序化交易测试报告.xls,MaxLoseTotal,交易汇总,B19);xlswrite(E:数量化金融程序化交易测试报告.xls,MaxLoseLong,交易汇总,C19);xlswrite(E:数量化金融程序化交易测试报告.xls,MaxLoseShort,交易汇总,D19);%最大盈利/总盈利xlswrite(E:数量化金融程序化交易测试报告.xls,最大盈利/总盈利,交易汇总,A20);xlswrite(E:数量化金融程序化交易测试报告.xls,MaxWinTotal/WinTotal,交易汇总,B20);xlswrite(E:数量化金融程序化交易测试报告.xls,MaxWinLong/WinLong,交易汇总,C20);xlswrite(E:数量化金融程序化交易测试报告.xls,MaxWinShort/WinShort,交易汇总,D20);%最大亏损/总亏损xlswrite(E:数量化金融程序化交易测试报告.xls,最大亏损/总亏损,交易汇总,A21);xlswrite(E:数量化金融程序化交易测试报告.xls,MaxLoseTotal/LoseTotal,交易汇总,B21);xlswrite(E:数量化金融程序化交易测试报告.xls,MaxLoseLong/LoseLong,交易汇总,C21);xlswrite(E:数量化金融程序化交易测试报告.xls,MaxLoseShort/LoseShort,交易汇总,D21);%净利润/最大亏损xlswrite(E:数量化金融程序化交易测试报告.xls,净利润/最大亏损,交易汇总,A22);xlswrite(E:数量化金融程序化交易测试报告.xls,ProfitTotal/MaxLoseTotal,交易汇总,B22);xlswrite(E:数量化金融程序化交易测试报告.xls,ProfitLong/MaxLoseLong,交易汇总,C22);xlswrite(E:数量化金融程序化交易测试报告.xls,ProfitShort/MaxLoseShort,交易汇总,D22);%最大使用资金xlswrite(E:数量化金融程序化交易测试报告.xls,最大使用资金,交易汇总,A24);xlswrite(E:数量化金融程序化交易测试报告.xls,max(max(LongMargin),max(ShortMargin),交易汇总,B24);xlswrite(E:数量化金融程序化交易测试报告.xls,max(LongMargin),交易汇总,C24);xlswrite(E:数量化金融程序化交易测试报告.xls,max(ShortMargin),交易汇总,D24);%交易成本合计CostTotal=sum(CostSeries);ans=CostSeries(Type=1);CostLong=sum(ans);ans=CostSeries(Type=-1);CostShort=sum(ans);xlswrite(E:数量化金融程序化交易测试报告.xls,交易成本合计,交易汇总,A25);xlswrite(E:数量化金融程序化交易测试报告.xls,CostTotal,交易汇总,B25);xlswrite(E:数量化金融程序化交易测试报告.xls,CostLong,交易汇总
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- IT行业创新技术研究计划
- 民法典合同编实务课件
- 民法典侵权责任篇编课件
- 2024鹤岗市工农区新南街道社区工作者招聘考试试题
- 2024重庆市潼南区米心镇社区工作者招聘考试试题
- 2024重庆市涪陵区蔺市镇社区工作者招聘考试试题
- 2024金华市东阳市千祥镇社区工作者招聘考试试题
- 2025年医疗行业人才培养体系现状与智能化改革路径分析报告
- 工业4.0背景下增强现实(AR)在供应链管理中的应用前景研究报告
- 美容仪器行业2025技术创新与市场推广策略研究:案例分析报告
- 心脏起搏器学习课件
- CREAFORM三维扫描仪操作creaform三维扫描仪操作
- DPU编程与实践课程
- 肱骨远端粉碎性骨课件
- 园林植物栽培与养护PPT完整全套教学课件
- 12K101-1 轴流通风机安装
- 邮政储汇业务员高级技师理论知识试卷5套(完整版)
- 新药发现与开发第一章概论
- 山西省煤矿建设施工管理标准
- YY/T 1792-2021荧光免疫层析分析仪
- 认识电影走进电影课件
评论
0/150
提交评论