sdfg123 发表于 2017-3-7 12:23:48

均线打分策略

策略思路:

对两条均线的20组参数循环,满足金叉分数+1
         当分数大于12分时,多头入场,
         当有仓位时,分数小于8分,则平仓出场

策略源码:

function Strategy1(default_unit,default_exitway,freq)%

targetList = traderGetTargetList();
%获取目标资产信息
HandleList = traderGetHandleList();
%获取账户句柄
global entrybar;
for k=1:length(targetList);
   
    %--------------------仓位、K线、当前bar的提取-----------------------------%
    %获取当前仓位
    =traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);
    %策略中每次取数据的长度
    lags=90;
    dlags=20;
    barnum=traderGetCurrentBar(targetList(k).Market,targetList(k).Code);
    %数据长度限制
    if(barnum<lags)
        continue;
    end
    if(barnum<dlags)
        continue;
    end
    %获取K线数据
    = traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq, 0-lags, 0,false,'FWard');
    = traderGetKData(targetList(k).Market,targetList(k).Code,'day',1, 0-dlags, 0,false,'FWard');
    if length(close)<lags || length(Dclose)<dlags
        continue;
    end;   
    %-------------------------交易逻辑-------------------------------%
    %----------入场信号--------------------%
    points=0;
    for i=1:20
        sma=ma(close,i);
        lma=ma(close,4*i);
        if sma(end)>lma(end)
            points=points+1;
        end;
    end;
    buycon=points>12;
    sellshortcon=points<8;
    if default_exitway==1
        sellcon=points<8;
        buytocovercon=points>12;
    end;
    %---------------------------入场操作--------------------------------%
    if sellcon && marketposition>0
        orderID1=traderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');
        if orderID1==0
            continue;
        end;
    end;
    if buytocovercon && marketposition<0
        orderID2=traderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');
        if orderID2==0
            continue;
        end;
    end;
    if buycon && marketposition<=0
        buyunit=default_unit;
        orderID3=traderBuy(HandleList(1),targetList(k).Market,targetList(k).Code,buyunit,0,'market','buy');
        if orderID3==0
            continue;
        end;
        entrybar(k)=barnum;
    end;
    if sellshortcon && marketposition>=0
        sellshortunit=default_unit;
        orderID4=traderSellShort(HandleList(1),targetList(k).Market,targetList(k).Code,sellshortunit,0,'market','sell');
        if orderID4==0
            continue;
        end;
        entrybar(k)=barnum;
    end;
end
end

更多免费策略源码下载请登录 DiqQuant社区-策略资源下载,http://www.digquant.com.cn/stra.php

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