全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 量化投资
2505 9
2017-02-17
回测标的:沪深300
回测区间:2012年1月1日至2016年11月11日
选股:选出当前处于100日低点的股票
进场:将资金等分为5份,将1份资金的1/7买入股票,当该股票下降10%时,追加买入1份资金的2/7。当股票再下降10%,追加买入1份资金的4/7。
出场:   止损出场:第三次加仓后再下降10%   
           止盈出场:无论第几次加仓,只要上涨10%,平仓止盈。

回测曲线:

QQ图片20170217100611.png

策略代码:

function  nsjctest(tc,  lags)%

targetList  =  traderGetTargetList();  

%获取目标资产信息

HandleList  =  traderGetHandleList();

%获取账户信息

%策略中每次取数据的长度

barnum=traderGetCurrentBar(targetList(1).Market,targetList(1).Code);

if(barnum<lags)

        return;

end

global  pricerecord

global  buytime;


%  [~,open2,~,~,close2,~,~,openinterest2]  =  traderGetKData(targetList(301).Market,targetList(301).Code,'day',1,  0-21,  0,true,'FWard');

%  if(length(open2)  <  21)

%          return;

%  end


%数据长度限制

%  len1  =  5;

%  len2  =  20;

len  =  60;

for  i  =  1:50


[time,open,high,low,close,volume,~,openinterest]  =  traderGetKData(targetList(i).Market,targetList(i).Code,'day',1,  0-lags-3,  0,false,'FWard');

[ValidCash,~,~,~,~]  =  traderGetAccountInfo(HandleList(1));

valid  =  tc  -  sum(buytime  ==  1)  *  3  /  7  /  5  *  tc  -  sum(buytime  ==  2)  *  4  /  7  /  5  *  tc  -  sum(buytime  ==  3)  /  5  *  tc;

con3  =  ValidCash  >=  valid;

if(length(close)>lags)

        %con1  =  mean(close(end-len+1:end))  >  mean(close(end-len:end-1));

        %[adx]=traderADX(14,14,targetList(i).Market,targetList(i).Code,  'day',  1,  -50,  0,false,  'FWard');

        %con1  =  adx(end)  <  20  &&  adx(end)  >  -20;

        con1  =  1;


if  buytime(i)  ==  0

        con0  =  close(end)  <  min(low(1:end-1))  *  1.1  &&  close(end)  >  min(low(1:end-1))  *  1;

        if  con0  &&  con1  &&  con3

                shareNum  =  floor(tc  /  5  /  close(end)  /  7  *  1  /  100)  *  100;

                if  shareNum  >=  100

                orderID=traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buy');

                pricerecord(i)  =  close(end);

                buytime(i)  =  buytime(i)  +    1;

                end

        end

end


if  buytime(i)  ==  1  &&  close(end)  <  pricerecord(i)  *  0.9  &&  con1  &&  con3

        shareNum  =  floor(tc  /  5  /  close(end)  /  7  *  2  /  100)  *  100;

        if  shareNum  >=  200

        orderID=traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buy');

        pricerecord(i)  =  close(end);

        buytime(i)  =  buytime(i)  +    1;

        end

end


if  buytime(i)  ==  2  &&  close(end)  <  pricerecord(i)  *  0.9  &&  con1  &&  con3

        shareNum  =  floor(tc  /  5  /  close(end)  /  7  *  4  /  100)  *  100  ;

        if  shareNum  >=  400

        orderID=traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buy');

        pricerecord(i)  =  close(end);

        buytime(i)  =  buytime(i)  +    1;

        end

end


if  close(end)  >  pricerecord(i)  *  1.1

        traderSell  (HandleList(1),  targetList(i).Market,targetList(i).Code,  'all',0,'market','sell');

        pricerecord(i)  =  0;

        buytime(i)  =  0;

end


if  (buytime(i)  ==  3  &&  close(end)  <  pricerecord(i)  *  0.9)  %||  (~con1  &&  close(end)  <  pricerecord(i)  *  0.95)

        traderSell  (HandleList(1),  targetList(i).Market,targetList(i).Code,  'all',0,'market','sell');

        pricerecord(i)  =  0;

        buytime(i)  =  0;

end


end

end

end


更多策略请登录atrader社区-策略服务 下载:  www.atrader.com.cn/stra.php



附件列表
QQ图片20170217095903.png

原图尺寸 84.8 KB

QQ图片20170217095903.png

二维码

扫码加我 拉你入群

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

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

全部回复
2017-2-18 13:38:45
看起来还不错
二维码

扫码加我 拉你入群

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

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

2017-2-18 17:00:43
感谢支持~
二维码

扫码加我 拉你入群

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

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

2017-2-22 18:22:01
每天一个策略,真是不赞不行了
二维码

扫码加我 拉你入群

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

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

2017-2-23 11:20:02
哈哈,欢迎持续关注~
二维码

扫码加我 拉你入群

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

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

2017-2-23 15:49:12
ghjktdf 发表于 2017-2-22 18:22
每天一个策略,真是不赞不行了
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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