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

策略思路:

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

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

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

08b05ce0d596c72a04d00d75c1365631.gif

2017-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-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社区-策略资源获取~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值