楼主: 挖矿专家
3094 12

[源码分享] 【每日一策】Matlab量化交易策略之 鳄鱼交易法则 [推广有奖]

  • 0关注
  • 74粉丝

讲师

22%

还不是VIP/贵宾

-

威望
0
论坛币
2016 个
通用积分
5.2622
学术水平
21 点
热心指数
21 点
信用等级
21 点
经验
6055 点
帖子
403
精华
0
在线时间
151 小时
注册时间
2017-2-8
最后登录
2017-6-27

楼主
挖矿专家 发表于 2017-3-4 15:15:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
策略名称:鳄鱼交易法则


策略原理:
         以移动平滑均线定义鳄鱼的颚,牙齿和上唇
         寻找机会:必须在鳄鱼睡着(最好是沉睡一阵子的鳄鱼,即BRG三线接近或相互纠缠)时进入市场。在市场建立仓位后,根据混沌法则不断加码。在价格未脱离鳄鱼上唇或下颚时不要主观判断方向。
         进场:寻找有效碎形,在有效碎形的高/低点加/减一档作为买/卖的参考价位。并非所有有效讯号都能获利。
         止损:以鳄鱼的牙齿(红线)作为依据,进场买入时若收盘价低于红线则停损出场,指初期进场时的止损。
         加仓:第一个有效碎形触发后,建立原始仓位。之后可根据AC,AO等指标同向进场,例如价格在红线之上一直买入。也可以沿途不做任何加码动作。
         出场:收盘低于鳄鱼牙齿(红线)或者鳄鱼上唇(绿线);出场价格在5根连续相同颜色的bar的低点加一档;AO、AC、碎形的反向讯号。


回测曲线(由Auto-trader软件提供回测报告):


鳄鱼交易法则.png

策略代码:

function  Strategy1(default_unit,default_exitway,freq)%


targetList  =  traderGetTargetList();  

%获取目标资产信息

HandleList  =  traderGetHandleList();

%获取账户句柄

global  enterprice;

global  enterbar;

for  k=1:length(targetList);


        %--------------------仓位、K线、当前bar的提取-----------------------------%

        %获取当前仓位

        [marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);

        %策略中每次取数据的长度

        lags=80;

%          dlags=10;

        barnum=traderGetCurrentBar(targetList(k).Market,targetList(k).Code);

        %数据长度限制

        if(barnum<lags)

                continue;

        end

        %获取K线数据

        [time,open,high,low,close,volume,~,~]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq,  0-lags,  0,false,'FWard');

%          [Dtime,Dopen,Dhigh,Dlow,Dclose,Dvolume,~,~]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'day',1,  0-dlags,  0,false,'FWard');

        if  length(close)<lags

                continue;

        end;        

        %-------------------------交易逻辑-------------------------------%

        %----------入场信号--------------------%

        unit=1;

        price=(high+low)/2;

        bline=ma(price(1:end-8+1),13);

        rline=ma(price(1:end-5+1),8);

        gline=ma(price(1:end-3+1),5);

        price=price(8:end);

        high=high(8:end);

        low=low(8:end);

        close=close(8:end);

        rline=rline(4:end);

        gline=gline(6:end);

        AO=ma(price,5)-ma(price,34);

        AC=ma((AO-ma(AO,5)),5);

        %  判断鳄鱼是否在睡觉

        state=zeros(length(gline),1);

        for  i=1:length(state)

                if  bline(i)>rline(i)  &&  rline(i)>gline(i)    %  空头排列

                        state(i)=-1;

                elseif  bline(i)<rline(i)  &&  rline(i)<gline(i)    %  多头排列

                        state(i)=1;

                else  %  非趋势排列

                        state(i)=0;

                end;

        end;

        sleepinterval=10;

        issleep=ones(length(gline),1);

        for  i=sleepinterval:length(issleep)

                vector=state(i-sleepinterval+1:i);

                if  sum(vector)==sleepinterval  ||  sum(vector)==-sleepinterval

                        issleep(i)=0;

                end;

        end;

        len=30;        %  考察区间

        con1=sum(issleep(end-len+1:end))==len;    %  连续len个bar鳄鱼是睡着的


        %  寻找最近的向上碎形,与向下碎形

        i=length(high)-2;

        upsx=[];

        while  i>=length(high)-len+3

                if  high(i)>max(high(i+1:i+2))  &&  high(i)>max(high(i-2:i-1))  &&  high(i)>bline(i)    %  有效向上碎形

                        upsx=[upsx;i];

                end;

                i=i-1;

        end;

        i=length(high)-2;

        dnsx=[];

        while  i>=length(high)-len+3

                if  low(i)<min(low(i+1:i+2))  &&  low(i)<min(low(i-2:i-1))  &&  low(i)<bline(i)    %  有效向下碎形

                        dnsx=[dnsx;i];

                end;

                i=i-1;

        end;

        %  开仓条件:沉睡的鳄鱼,突破上碎形/下碎形

        buycon=0;

        sellshortcon=0;

        if  ~isempty(upsx)  &&  con1

                upline=max(high(upsx));

                buycon=close(end)>upline  &&  close(end-1)<upline;

        end;

        if  ~isempty(dnsx)  &&  con1

                dnline=min(low(dnsx));

                sellshortcon=close(end)<dnline  &&  close(end-1)>dnline;

        end;

        sellcon=close(end)<rline(end);

        buytocovercon=close(end)>rline(end);


%          TRvalue=TR(close,high,low);

%          ATR=ma(TRvalue,20);

%          p=2;

%          barsinceentry=barnum-enterbar;

%          [~,entryopen,entryhigh,entrylow,entryclose,~,~,~]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq,  0-barsinceentry,  0,false,'FWard');

%          highvalue=max(entryhigh(1:end-1));

%          lowvalue=min(entrylow(1:end-1));

%          sellcon=close(end)<highvalue-p*ATR(end-1);

%          buytocovercon=close(end)>lowvalue+p*ATR(end-1);

        if  buytocovercon  &&  marketposition<0

                orderID1=traderBuyToCover(HandleList(1),targetList(k).Market,targetList(k).Code,'all',0,'market','buy');

                if  orderID1==0

                        continue;

                end;

        end;

        if  sellcon  &&  marketposition>0

                orderID1=traderSell(HandleList(1),targetList(k).Market,targetList(k).Code,'all',0,'market','sell');

                if  orderID1==0

                        continue;

                end;

        end;

        if  buycon  &&  marketposition<=0

                orderID1=traderBuy(HandleList(1),targetList(k).Market,targetList(k).Code,unit,0,'market','buy');

                if  orderID1==0

                        continue;

                end;

                enterprice=close(end);

                enterbar=barnum;

        end;

        if  sellshortcon  &&  marketposition>=0

                orderID1=traderSellShort(HandleList(1),targetList(k).Market,targetList(k).Code,unit,0,'market','sellshort');

                if  orderID1==0

                        continue;

                end;

                enterprice=close(end);

                enterbar=barnum;

        end;

end

end



更多免费策略源码下载请登录digquant社区-策略资源下载~



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:收盘价 加仓 最好

沙发
65425856 发表于 2017-3-4 15:45:51
楼主干货满满啊

藤椅
tarany9346 发表于 2017-3-4 23:20:38
谢谢楼主!!简直不能更棒!一定好好学习

板凳
挖矿专家 发表于 2017-3-6 14:23:24
atrader 社区已经更名为 digquant 社区,迁移至 www.digquant.com.cn

报纸
peppep 发表于 2017-3-7 19:21:06
干货满满啊

地板
difsky 发表于 2017-3-8 08:27:24
签到还要发贴。

7
挖矿专家 发表于 2017-3-8 11:28:14
difsky 发表于 2017-3-8 08:27
签到还要发贴。
(⊙o⊙)…

8
65425856 发表于 2017-3-8 15:53:45
挖矿专家 发表于 2017-3-6 14:23
atrader 社区已经更名为 digquant 社区,迁移至 www.digquant.com.cn
(⊙o⊙)哦,有时间去看看

9
挖矿专家 发表于 2017-3-9 10:07:28
感谢支持

10
65425856 发表于 2017-3-9 16:54:06
楼主是真爱粉啊

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2026-1-28 21:05