《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 7479|回复: 106
收起左侧

[源码] 【原创】一个基于支持向量机的量化交易策略

    [复制链接]

该用户从未签到

发表于 2016-10-11 14:05:50 | 显示全部楼层 |阅读模式
本帖最后由 Masque 于 2016-10-12 10:15 编辑

分享一个简单的运用支持向量机(SVM)的量化交易策略。
思路是对之前一段时间的高、低、收数据用svmtrain函数进行二分类,从而预测下一根bar的涨跌。我还加上了双均线系统进行过滤。

源代码如下:

function svm(lags1,lags2,freq,shareNum)

%---------------------策略初始化与是否日内平仓---------------%
% traderDailyCloseTime(145000);
targetList = traderGetTargetList();
HandleList = traderGetHandleList();


%---------------------策略提取数据---------------%
[marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(1).Market,targetList(1).Code); % 读取仓位信息
[BarNumber,BarTime,BarOpen,BarHigh,BarLow,BarClose,BarVolume,BarTurnOver,BarOpenInterest] = traderGetCurrentBar(targetList(1).Market,targetList(1).Code);
if(BarNumber<lags1)
    return;
end
[Time,Open,High,Low,Close,Volume,Turnover,Openinterest] = traderGetKData(targetList(1).Market,targetList(1).Code,'min',freq, 0-lags1, 0,false,'NA'); % 读取K线数据
if(length(Time)<lags2)
    return;
end

%---------------------策略计算与基本逻辑---------------%
H=High;
L=Low;
C=Close;
statesData=diff(Close)>0;
trainData=[H,L,C];
trainData__=trainData(end-lags2+1:end-1,:);
statesData__=statesData(end-lags2+2:end);
SVMstruct=svmtrain(trainData__,statesData__,'kernel_function','rbf');
y=svmclassify(SVMstruct,trainData(end,:));
con1=mean(Close(end-4:end))>mean(Close(end-29:end)); % 均线过滤
con2=mean(Close(end-4:end))<mean(Close(end-29:end));

%----------------------策略主体-------------------------------%
if  y(end)>0&&marketposition <=0&&con1
          traderBuy(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','buy1');  % 做多
end

if  y(end)<=0&&marketposition>=0&&con2
         traderSellShort(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','sell1'); % 做空
end

end
在股指期货上进行回测,60分钟频率,从2014/06/01到2016/07/01,结果如下:




这个策略还没有加上止损和头寸管理,所以回撤比较大,还有许多可以完善的地方。大家一起交流学习哈~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册账号

x

评分

参与人数 1贝壳 +8 收起 理由
faruto + 8 感谢您分享自己珍贵的资料

查看全部评分

该用户从未签到

发表于 2017-6-5 01:55:36 | 显示全部楼层
去年有和你一样的想法,不过没有编写出来,今年基本有这个能力了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2017-6-23 11:07:39 | 显示全部楼层
支持一下,这个标题在知网上看见过,只是一个想法,想来看看实现。
回复 支持 反对

使用道具 举报

签到天数: 4 天

[LV.2]偶尔看看I

发表于 2017-1-31 19:28:05 | 显示全部楼层
支持一下,这个标题在知网上看见过,只是一个想法,想来看看实现。
回复 支持 反对

使用道具 举报

签到天数: 49 天

[LV.5]常住居民I

发表于 2016-10-14 08:18:46 | 显示全部楼层
ajjfkdla;sdlgjljl
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2016-10-17 12:21:45 | 显示全部楼层
谢谢你的分享,非常感谢
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2016-10-21 15:21:21 | 显示全部楼层
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2016-10-24 10:43:14 | 显示全部楼层
下载学习一下
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2016-10-25 11:20:58 | 显示全部楼层
回复 支持 反对

使用道具 举报

签到天数: 2 天

[LV.1]初来乍到

发表于 2016-10-28 00:18:47 | 显示全部楼层
非常感谢,一起学习下
回复 支持 反对

使用道具 举报

签到天数: 16 天

[LV.4]偶尔看看III

发表于 2016-10-28 09:20:34 | 显示全部楼层
很牛的代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 陕ICP备08102094号  

GMT+8, 2018-4-26 09:50 , Processed in 0.129229 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表