資源簡介
海龜策略的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
評論
共有 條評論