对沪深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;
- end
- end
更多免费策略源码下载请登录DigQuant社区-策略资源下载~