sdfg123 发表于 2017-4-1 11:54:35

MATrading 附源码

策略思路:

对沪深300全市场扫描
买入条件:
1 短均线大于长均线
2 最近N个交易日短均线大于长均线的次数满足某个阈值
3 当前交易日的长均线值处于某个高位

出场条件:
止损:价格跌破入场价的一定百分比
止盈:价格高出入场价的一定百分比


策略源码: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)
   
    = 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社区-策略资源下载~http://www.digquant.com.cn/stra.php

MATrading 策略源码下载:http://www.digquant.com.cn/stra.php?mod=model&pid=119
页: [1]
查看完整版本: MATrading 附源码