全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 量化投资
3795 4
2017-03-08
策略思路:

入场:K值上穿30或者K值上穿D值 买入股票
出场:K值下穿70或者K值下穿D值 卖出股票

回测曲线(由Auto-trader提供回测报告)

KDJ择时.png

策略代码:

function KDJYH(p1,p2,p3) % KDJ优化.% 其中,len为在多少日内全部完成突破targetList = traderGetTargetList(); % 在RunBackTest中选择好的标的.%获取目标资产信息HandleList = traderGetHandleList(); % %获取账户信息%=================================================================% RunBackTest的参数设置% p1=14;% p2=3;% p3=3;%=================================================================global s; % 定义cc为全局变量if isempty(s) % 判断cc是否为空值    for i=1:length(targetList)        s(i).time=0;        s(i).BarNLong=0;        s(i).openprice=0;        s(i).stopprice=0;        s(i).highprice=0;    endendfor i = 1:length(targetList) % 每个股票过一遍    [marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(i).Market,targetList(i).Code);    %获取当前仓位        lags=40; % lags为策略需要往前获取多少天    %策略中每次取数据的长度        barnum=traderGetCurrentBar(targetList(i).Market,targetList(i).Code); % K线的序号,后面会增加,前面的值对应的日期固定.    if(barnum<lags)        continue;    end    % 数据长度限制,排除了前lags根k线        [time0,~,~,~,~,volume0,~,~] = traderGetKData(targetList(i).Market,targetList(i).Code,'day',1, 0-lags, 0,true,'FWard'); % 补齐    if volume0(end)==0        continue;    end    % 防止停牌的情况    %------------------------------------------------------------------------------------------------------------------------------------------------------------------------------    % 策略开始部分    [time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(targetList(i).Market,targetList(i).Code,'day',1, 0-lags, 0,false,'FWard');        if length(close)<25        continue;    end    [K,D,J]=traderKDJ(p1,p2,p3,targetList(i).Market,targetList(i).Code,'day',1,0-lags,0,false,'FWard');        EntryLong1=K(end)>30 && K(end-1)<30;    EntryLong2=K(end)<30 && K(end)>D(end) && K(end-1)<D(end-1);   % ===============================================================================================================    ExitLong1=K(end)<70 && K(end)<D(end) && K(end-1)>D(end-1);  % K在70以下,KD产生死叉    ExitLong2=K(end)<70 && K(end-1)>70; % ===============================================================================================================        shareNum=floor(100000000/300/close(end)/100)*100;        if marketposition ==0 && EntryLong1 && time(end)>=datenum('1-Jan-2014');% 做多情况1        orderID1=traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buy1'); % 开多单        strcat(datestr(time(end)),targetList(i).Market,targetList(i).Code) % 把做多的时间和股票显示出来    end        if marketposition ==0 && EntryLong2 && time(end)>=datenum('1-Jan-2014');% 做多情况2        orderID1=traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buy1'); % 开多单        strcat(datestr(time(end)),targetList(i).Market,targetList(i).Code) % 把做多的时间和股票显示出来    end     if marketposition > 0 && ExitLong1 && floor(time(end))~=s(i).time; % 平仓情况1        traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','sell1');    end        if marketposition > 0 && ExitLong2 && floor(time(end))~=s(i).time; % 平仓情况2        traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','sell1');    endend


更多免费策略源码下载请登录DigQuant社区-策略资源获取~

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-3-8 16:26:15
楼主格式乱掉了~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-3-9 10:05:30
65425856 发表于 2017-3-8 16:26
楼主格式乱掉了~
贴过来就乱掉了,想要下载的话建议去digquant网站上去下,有更完整的函数库
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-3-9 16:56:20
挖矿专家 发表于 2017-3-9 10:05
贴过来就乱掉了,想要下载的话建议去digquant网站上去下,有更完整的函数库
这个好,方便太多,我都懒得复制了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-3-13 10:34:19
65425856 发表于 2017-3-9 16:56
这个好,方便太多,我都懒得复制了
哈哈
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群