相似文件
换一批
经管之家送您一份
应届毕业生专属福利!
求职就业群
感谢您参与论坛问题回答
经管之家送您两个论坛币!
+2 论坛币
回测标的:沪深300
回测区间:2012年1月1日至2016年11月11日
选股:选出当前处于100日低点的股票
进场:将资金等分为5份,将1份资金的1/7买入股票,当该股票下降10%时,追加买入1份资金的2/7。当股票再下降10%,追加买入1份资金的4/7。
出场: 止损出场:第三次加仓后再下降10%
止盈出场:无论第几次加仓,只要上涨10%,平仓止盈。
回测曲线:
策略代码:
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
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
|