资源简介
海龟策略的matlab代码,根据日线的突破建仓以及平仓,多品种期货交易
代码片段和文件信息
%数据格式 时间,开盘,最高,最低,收盘,总成交股,总交易价格,除权数
%数据存储模式为矩阵式存储
%目的:海龟模型回测
%注意,涨停板无法买入,跌停板无法卖出。
%第一步,载入数据源并且建立回测区间
r=0;k=0;m=0;X=20;
mon=100000;
tic
load StockList.mat;
Scode=StockList(:2);
Fstr=‘E:/Database/Stock/Day_ExDividend_mat‘;
Instr=‘请输入股票代码:‘;
Estr=‘代码不存在,请检查!‘;
while r==0;
if exist(‘Stock_Code‘‘var‘)==1
StCode=Stock_Code;
else
StCode=input(Instr‘s‘);
end
if isempty(strfind(Scode‘StCode‘))
disp(Estr);r=0;
else r=1;
end
FileString = [Fstr‘/‘StCode‘_D_ExDiv.mat‘];
load(FileString);
end
Datestart_info=‘请输入回测时间开始点:‘;
Dateerr_info=‘错误时间格式,默认为yyyymmdd!‘;
Dateend_info=‘请输入回测时间结束点:‘;
StartDate=Convert_date(StockData(11));
EndDate=Convert_date(StockData(end1));
while k==0
if exist(‘Start_Date‘‘var‘)==1
Sdate=Start_Date;
else
Sdate=input(Datestart_info);
end
Sd=Convert_date(Sdate);
if length(num2str(Sdate))<8
disp(‘错误!时间格式应为yyyymmdd!‘);
Sdate=input(Datestart_info);
else k=1;continue
end
if datenum(Sd)datenum(EndDate)
disp(‘时间溢出!请重新输入!‘);k=0;
else k=1; continue
end
end
while m==0
if exist(‘End_Date‘‘var‘)==1
Edate=End_Date;
else
Edate=input(Dateend_info);
end
Ed=Convert_date(Edate);
if length(num2str(Edate))<8
disp(‘错误!时间格式应为yyyymmdd!‘);
Sdate=input(Dateend_info);
else m=1;continue
end
if (datenum(Ed)datenum(EndDate))...
||datenum(Ed) disp(‘时间溢出!请重新输入!‘);
else m=1; continue
end
end
SSd=datenum(Convert_date(Sd));EEd=datenum(Convert_date(Ed));
%用指针确定循环序列,注意时间序列是跳跃的,必须考虑停牌,复牌,节假日的因素
Len=length(StockData(:1));
SData=zeros(Len1);
for k=1:Len
SData(k)=datenum(Convert_date(StockData(k1)));
end
for i=1:Len
if SData(i) break;
end
kappa=i;%起始位置
end
for i=1:Len
if SData(i) break;
end
lambda=i;%终止位置
end
%分配内存
TestDate=zeros(lambda-kappa+11);
Oprice=zeros(lambda-kappa+11);
Cprice=zeros(lambda-kappa+11);
Highprice=zeros(lambda-kappa+X1);
Hprice=zeros(lambda-kappa+11);
Lowprice=zeros(lambda-kappa+11);
Lprice=zeros(lambda-kappa+11);
price_max20=zeros(lambda-kappa+11);
Hb20=zeros(lambda-kappa+1X);
Lb20=zeros(lambda-kappa+1X);
price_min20=zeros(lambda-kappa+11);
%赋值
for i=1:lambda-kappa+1
TestDate(i)=StockData(kappa+i-11);
if kappa disp(‘不合适的回测开始时间!请返回!‘);
break;
else
Oprice(i)=StockData(kappa+i-12);
Lprice(i)=StockData(kappa+i-14);
Hprice(i)=StockData(kappa+i-13);
Cprice(i)=StockData(kappa+i-15);
end
end
for i=1:lambda-kappa+X
Highprice(i)=StockData(kappa+i-X-13);
Lowprice(i)=StockData(kappa+i-X-14);
end
for i=1:lambda-kappa+1
for j=1:X
Hb20(ij)= Highprice(i+j-1);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3973 2016-04-04 08:56 turtle_original\BTest_databa
文件 153 2016-04-02 05:26 turtle_original\toolkits\Convert_date.m
文件 241 2016-04-04 01:22 turtle_original\toolkits\CPcalc.m
文件 320 2016-04-04 16:34 turtle_original\toolkits\OperBuy.m
文件 315 2016-04-04 16:33 turtle_original\toolkits\OperEmpty.m
文件 316 2016-04-04 16:31 turtle_original\toolkits\OperHold.m
文件 330 2016-04-04 16:32 turtle_original\toolkits\OperSell.m
文件 913 2016-04-04 17:30 turtle_original\toolkits\Turtle_Conds.m
文件 3459 2016-04-04 18:25 turtle_original\Turtle_strategy.m
目录 0 2018-01-12 00:10 turtle_original\toolkits
目录 0 2018-01-12 00:10 turtle_original
----------- --------- ---------- ----- ----
10020 11
评论
共有 条评论