策略说明:
对沪深300全市场扫描
买入条件:
1 短均线大于长均线
2 最近N个交易日短均线大于长均线的次数满足某个阈值
3 当前交易日的长均线值处于某个高位
出场条件:
止损:价格跌破入场价的一定百分比
止盈:价格高出入场价的一定百分比
回测曲线(由Auto-Trader提供回测报告):
策略代码:
function MATrading(ShareNum,Freq,N1,N2)global s;%获取账户句柄targetList = traderGetTargetList(); %获取交易标的句柄HandleList = traderGetHandleList();pctloss=0.05;pctprofit=0.2;pctclose=0.02;lags=25;for j=1:length(targetList) [time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(targetList(j).Market,targetList(j).Code,'day',Freq, -lags, 0,false,'FWard'); if length(close)<lags continue; end mp = traderGetAccountPosition(HandleList(1),targetList(j).Market,targetList(j).Code); MAs=ma(close,N1); MAl=ma(close,N2); %% 开仓条件 opencon1=MAs(end)>MAl(end); a=sum( MAs(end-N1+1:end-1) > MAl(end-N1+1:end-1) ); opencon2=(a==0); opencon3=(MAl(end)/MAl(end-1))>0.995; opencon4=close(end-1)>0.9*max(high(end-10:end-1)); %% 开仓 if mp==0 && opencon1 && opencon2 && opencon3 && opencon4 OrderID=traderDirectBuy(HandleList(1),targetList(j).Market,targetList(j).Code,ShareNum,0,'market','1'); s(j).openprice=traderOrderFilledPrice(HandleList(1),OrderID); end %% 平仓条件 closecon1=close(end)<(1-pctloss)*(s(j).openprice); closecon2=close(end)>(1+pctprofit)*(s(j).openprice); b=(max(high(end-N1+1:end))-min(low(end-N1+1:end)))/mean(close(end-N1:end)); closecon3=b<pctclose; %% 平仓 if mp>0 && closecon1 && closecon2 && closecon3 traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,0,0,'market','1'); s(j).openprice=0; endend
更多免费策略源码下载请登录DigQuant社区(原atrader社区)-策略资源下载~