资源简介

matlab量化择时模型回测代码

资源截图

代码片段和文件信息

%% Test回测程序
% 脚本程序
%@ xuhuaxuan
% 程序实现测试所使用的MATLAB版本:MATLAB R2010b(7.11.0)

%% clean work
clear;
clc;
close all;
%%  Load Data
A = xlsread(‘IF_5min_20100826-20130315.xlsx‘);
%% Initialization
% 构造IF(每日K线)
per = 54;
IF=zeros(length(A)/per5);
IF(:1) = 1:length(A)/per;
for t1=1:length(A)/per
    midHigh = A((t1-1)*per+13);
    midLow = A((t1-1)*per+14);
    for t2=1:per
        midHigh = max([A((t1-1)*per+t23)midHigh]);
        midLow = min([A((t1-1)*per+t24)midLow]);
        IF(t12:5)=[A((t1-1)*per+12)midHighmidLowA(t1*per5)];
    end
end
len = length(A);
EquityDay = zeros(length(IF)1);
EquityDay(22) = 50e4;

RSV9 = zeros(length(IF)1);
%RSV9= RSV9(20:end);
K9=zeros(length(IF)1);
%K9 = K9(20:end);
D9 = zeros(length(IF)1);
%D9 = D9(20:end);

RSV14 = zeros(length(IF)1);
%RSV14= RSV14(20:end);
K14=zeros(length(IF)1);
%K14 = K14(20:end);
D14 = zeros(length(IF)1);
%D14 = D14(20:end);

TR = zeros(length(IF)1);
%TR = TR(20:end);

ATR = zeros(length(IF)1);
%ATR = ATR(20:end);
ADX = zeros(length(IF)1);
%% 策略过程初始化
% 开多标签 1 多一手 0 无 
LongFlag = 0;
% 开空标签 1 空一手 0 无
ShortFlag = 0;
% 记录多头序列
LongS = zeros(len1);
LongSmax = zeros(len1);
LongSlen = 1;
% 记录空头序列
ShortS = zeros(len1);
ShortSmin = zeros(len1);
ShortSlen = 1;
% 记录操作胜率次数
winLen=0;
%% calc ADX
HIGH=A(13);
HIGH1=A(13);
LOW =A(14);
LOW1 =A(14);
CLOSE = A(15);
N=14;
M=14;
K9(221) = (IF(215)-min(IF(13:214)))/(max(IF(13:213))-min(IF(13:214)))*100;
D9(221)=K9(221);
K14(221)= (IF(215)-min(IF(8:214)))/(max(IF(8:213))-min(IF(8:214)))*100;
D14(221)=K14(221);

currentLow =  A(22*per+14);
currentHigh =  A(22*per+13);
ATR(221)=max([IF(223)-IF(224)abs(IF(223)-IF(225))abs(IF(224)-IF(225))]);

ADX(221)=max([IF(223)-IF(224)abs(IF(223)-IF(225))abs(IF(224)-IF(225))]);
        
for i=23:length(IF)
    if i >=23
        EquityDay(i1) = EquityDay(i-11);
    end
    % 计算当天资金流
    if LongFlag == 1 && ShortFlag == 0
        EquityDay(i1) = EquityDay(i-11) + (IF(i5)-IF(i-15))*300;
    end
    if ShortFlag == 1 && LongFlag == 0
        EquityDay(i1) = EquityDay(i-11) + (IF(i-15)-IF(i5))*300;
    end
    
    L9 = min(IF((i-9):(i-1)4));
    H9 = max(IF((i-9):(i-1)3));
    RSV9(i-11)=(IF(i-15)-L9)/(H9-L9)*100;
    K9(i-11)=2/3*K9(i-21)+1/3*RSV9(i-11);
    D9(i-11)=2/3*D9(i-21)+1/3*K9(i-11);
            
    L14 = min(IF((i-14):(i-1)4));
    H14 = max(IF((i-14):(i-1)3));
    RSV14(i-11)=(IF(i-15)-L14)/(H14-L14)*100;
    K14(i-11)=2/3*K14(i-21)+1/3*RSV14(i-11);
    D14(i-11)=2/3*D14(i-21)+1/3*K14(i-11);
    
    for j =1:per
        MA5 = (IF(i-4:i-15)+A((i-1)*per+j5))/5;
        MA10 = (IF(i-9:i-15)+A((i-1)*per+j5))/10;
        MA20 = (IF(i-19:i-15)+A((i-1)*per+j5))/20;
        LongSmax(LongSlen) = max([LongSmax(LongSlen)A((i-1)*per+j5)]);
        ShortSmin(LongSlen) = min([ShortSmin(LongSlen)A((i-1)*per+j5)]);
   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5243  2013-07-11 23:43  huice2.m

----------- ---------  ---------- -----  ----

                 5243                    1


评论

共有 条评论