900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 用matlab画kdj指标 【每日一策】Matlab量化交易策略之 KDJ择时

用matlab画kdj指标 【每日一策】Matlab量化交易策略之 KDJ择时

时间:2020-08-06 00:49:16

相关推荐

用matlab画kdj指标 【每日一策】Matlab量化交易策略之 KDJ择时

策略思路:

入场:K值上穿30或者K值上穿D值 买入股票

出场:K值下穿70或者K值下穿D值 卖出股票

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

-3-8 15:36:04 上传

下载附件 (77.37 KB)

策略代码:

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(barnum30 && K(end-1)<30; EntryLong2=K(end)<30 && 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-');% 做多情况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-');% 做多情况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社区-策略资源获取~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。