策略名称:顺势加仓策略思路说明:回测标的: 沪深300成分股中任选10只
择时指标: 20日均线斜率
14日ADX
择时标准:
买入:20日均线斜率 > 0 & 14日ADX大于10
卖出:20日均线 < 0
择时原理
跟踪20日均线上升趋势,避免大的亏损
14日ADX反映近期的趋势强度,只做强度较大的趋势,防止在震荡市中产生过多的损失
权益曲线:
策略代码:
function ssjctest(len)%
targetList = traderGetTargetList();
HandleList = traderGetHandleList();
barnum=traderGetCurrentBar(targetList(1).Market,targetList(1).Code);
if(barnum<len)
return;
end
for i = 101 : 110
[ValidCash,~,~,~,~] = traderGetAccountInfo(HandleList(1));
[marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(i).Market,targetList(i).Code);
[~,~,~,~,close,~,~,~] = traderGetKData(targetList(i).Market,targetList(i).Code,'day',1, 0-len, 0,false,'FWard');
if length(close) > len
[adx]=traderADX(14,14,targetList(i).Market,targetList(i).Code, 'day', 1, -50, 0,false, 'FWard');
slope = (mean(close(end-len+1:end)) - mean(close(end-len:end-1))) / mean(close(end-len:end-1));
if marketposition == 0 &&ValidCash > 0 && slope > 0 && adx(end) > 10
shareNum = floor(ValidCash / 10 / close(end) / 100) * 100
if shareNum > 100
orderID=traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buy');
%traderStopLossByOrder(HandleList(1), orderID, 5, 'Percent', 'market','stoploss'); %止损条件
end
%traderStopProfitByOrder(HandleList(1), orderID, 10,'Percent', 'market', 'stopprofit');
end
if marketposition > 0 && slope < 0
traderSell (HandleList(1), targetList(i).Market,targetList(i).Code, 'all',0,'market','sell');
end
end
end
end
为尊重作者原创权益,附上作者信息
作者:miaohua 来源:http://www.atrader.com.cn/stra.php