sdfg123 发表于 2017-2-28 16:18

网格资金管理策略(附源码)

策略原理:
          将资金分为N份,采取随机抛点的形式入场,止损为10%,止盈为11%
          如果该份资金获利超过11%,则上移止盈止损线,且启动下一份资金抛点入场。
          只有多头入场

策略代码:
function  Strategy1(default_unit,default_exitway,freq)%
targetList  =  traderGetTargetList();  %获取目标资产信息HandleList  =  traderGetHandleList();%获取账户句柄global  entrybar;global  record;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');        if  length(close)<lags                continue;        end;                %-------------------------交易逻辑-------------------------------%        %----------入场信号--------------------%        stoplossratio=0.01;        stopearnratio=0.011;        remain_num=find(record.isopen==1);        remain.isopen=record.isopen(remain_num);        remain.isearn=record.isearn(remain_num);        remain.pivotprice=record.pivotprice(remain_num);        remain.entrybar=record.entrybar(remain_num);        remain.unit=record.unit(remain_num);          =  traderGetAccountInfo(HandleList(1));        [~,~,Multiple,~,~,~,~,~,~]  =  traderGetFutureInfo(targetList(k).Market,targetList(k).Code);        remain_share=10-length(remain_num);        con1=0;        if  remain_share~=0;                con1=1;                buyunit=fix(ValidCash/remain_share/close(end)/Multiple);        end;        for  i=1:length(remain_num)                index=remain_num(i);%                  barsinceentry=barnum-remain.entrybar(i);%                  [~,entryopen,entryhigh,entrylow,entryclose,~,~,~]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq,  0-barsinceentry,  0,false,'FWard');%                  enterprice=entryclose(1);                if  close(end)<remain.pivotprice(i)-stoplossratio*remain.pivotprice(i)  %  触发止损线                        orderID2=traderDirectSell(HandleList(1),targetList(k).Market,targetList(k).Code,remain.unit(i),0,'market','sell');                        if  orderID2==0                                continue;                        end;                        record.isopen(index)=0;                elseif  close(end)>remain.pivotprice(i)+stopearnratio*remain.pivotprice(i)  %  触发止盈线                        record.pivotprice(index)=close(end);                        record.isearn(index)=2;                end;        end;        con2=randi(,1,1)==1;        con3=isempty(find(remain.isearn==1,1));        buycon=con1  &&  con2  &&  con3;        %---------------------------入场操作--------------------------------%        if  buycon                orderID1=traderDirectBuy(HandleList(1),targetList(k).Market,targetList(k).Code,buyunit,0,'market','buy');                if  orderID1==0                        continue;                end;                record.pivotprice=;                record.isearn=;                record.isopen=;                record.unit=;                record.entrybar=;        end;endend




sdfg123 发表于 2017-3-1 12:56

策略源码下载:ww w.atrader.com.cn/stra.php?mod=model&pid=150
页: [1]
查看完整版本: 网格资金管理策略(附源码)