楼主: 挖矿专家
2382 17

[源码分享] 【每日一策】Matlab量化交易策略之 底部钓鱼交易系统 [推广有奖]

  • 0关注
  • 74粉丝

讲师

22%

还不是VIP/贵宾

-

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

楼主
挖矿专家 发表于 2017-2-24 11:23:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
策略名称:底部钓鱼交易系统
策略原理:

         构造收盘与开盘之间的绝对值均线corange
             最高与最低之间的绝对值均线hlrange
         做多条件:当前价格减开盘价大于corange(end-1)
                   最高价减最低价大于hlrange(end-1)
                   最低价出现在近期


回测曲线:


底部钓鱼交易系统.png

策略代码:

function  Strategy1(default_unit,default_exitway,freq)%


targetList  =  traderGetTargetList();  

%获取目标资产信息

HandleList  =  traderGetHandleList();

%获取账户句柄

global  entry;

for  k=1:length(targetList);


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

        %获取当前仓位

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

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

        dlags=20;

        lags=80;

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

        %数据长度限制

        if(barnum<lags)

                continue;

        end

        %获取K线数据

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

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

        if  length(close)<lags  ||  length(Dclose)<dlags

                continue;

        end

        %  虚拟交易所初始手数


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

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

        TRvalue=TR(close,high,low);

        ATR=ma(TRvalue,20);

        corange=ma(abs(close-open),20);

        hlrange=ma(high-low,20);

        len1=25;

        mlow=low(end-len1+1:end);

        [~,mi_num]=min(mlow);

        bcon1=mi_num>=len1-6  &&  mi_num<=len1-2;

        bcon2=close(end)-open(end)>corange(end-1);

        bcon3=high(end)-low(end)>hlrange(end-1);

        s(1).buycon=bcon1  &&  bcon2  &&  bcon3;

        mhigh=high(end-len1+1:end);

        [~,ma_num]=max(mhigh);

        scon1=ma_num>=len1-6  &&  ma_num<=len1-2;

        scon2=open(end)-close(end)>corange(end-1);

        scon3=high(end)-low(end)>hlrange(end-1);

        s(1).sellshortcon=scon1  &&  scon2  &&  scon3;


        %------------被动出场操作------------------%

        %找到未平仓的订单

        remain=remainorder(entry,k);

        %对未平仓的订单进行平仓判断及操作

        for  i=1:length(remain.entrybar);

                %  进仓以来的bar个数

                barsinceentry=barnum-remain.entrybar(i);

                backlen=20;        %  回溯的长度(进仓bar之前)

                longstopcon=0;

                shortstopcon=0;

                %  回溯的信息提取

                [backtime,backopen,backhigh,backlow,backclose,~,~,~]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq,  0-barsinceentry-backlen,  0,false,'FWard');

                %  根据出场方式计算出场条件

                if  remain.entryexitway(i)==1;

                        AFinitial=0;

                        AFparam=0.02;

                        AFmax=0.2;

                        Firstbarmultp=1;    %影响第一根bar的止损价,调高表示可忍受的回撤越多

                        [longstopcon,shortstopcon,exitline]=exit1(backopen,backhigh,backlow,backclose,remain.entrydirection(i),backlen,AFinitial,AFparam,AFmax,Firstbarmultp);

                elseif  remain.entryexitway(i)==2;

                        initialATRparam=2;

                        AF=0.02;

                        minATRparam=1;

                        [longstopcon,shortstopcon,exitline]=exit2(backopen,backhigh,backlow,backclose,remain.entrydirection(i),backlen,initialATRparam,AF,minATRparam);

                elseif  remain.entryexitway(i)==3;

                        [longstopcon,shortstopcon,exitline]=exit3(backopen,backhigh,backlow,backclose,remain.entrydirection(i),backlen);

                elseif  remain.entryexitway(i)==4

                        startpoint=10;

                        percent=0.3;

                        TRmutlp=1;

                        [longstopcon,shortstopcon,exitline]=exit4(backopen,backhigh,backlow,backclose,remain.entrydirection(i),backlen,startpoint,percent,TRmutlp);

                elseif  remain.entryexitway(i)==5;

                        stdlen=19;

                        initialstdparam=2;

                        minstdparam=1;

                        AF=0.2;

                        [longstopcon,shortstopcon,exitline]=exit5(backopen,backhigh,backlow,backclose,remain.entrydirection(i),backlen,stdlen,initialstdparam,minstdparam,AF);  

                elseif  remain.entryexitway(i)==6;

%                          if  remain.entrydirection(i)==1;

%                                  if  barsinceentry==20

%                                          longstopcon=1;

%                                  end;

%                          elseif  remain.entrydirection(i)==-1;

%                                  if  barsinceentry==20

%                                          shortstopcon=1;

%                                  end;

%                          end;

                        if  remain.entrydirection(i)==1;

                                if  high(end)>max(high(end-20:end-1))

                                        longstopcon=1;

                                end;

                        elseif  remain.entrydirection(i)==-1;

                                if  low(end)<min(low(end-20:end-1))

                                        shortstopcon=1;

                                end;

                        end;

                end;

                %  出场执行

                if  longstopcon

                        orderID1=traderDirectSell(HandleList(1),targetList(k).Market,targetList(k).Code,remain.entryunit(i),0,'market','totalbuy');

                        entry.record{k}(remain.num(i))=0;

                end;

                if  shortstopcon

                        orderID1=traderDirectBuy(HandleList(1),targetList(k).Market,targetList(k).Code,remain.entryunit(i),0,'market','totalbuy');

                        entry.record{k}(remain.num(i))=0;

                end;

        end;


        %---------------------------加仓--------------------------------%

        %----------------策略1----------------------%

        %再次找到未平仓的订单

        remain=remainorder(entry,k);

        %  找到策略i的marketposition

        s=mptaking(s,remain);

        %---------------------------入场操作--------------------------------%

        %----------------策略1----------------------%

        if  s(1).buycon  &&  s(1).marketposition==0

                buyunit=default_unit;

                orderID1=traderDirectBuy(HandleList(1),targetList(k).Market,targetList(k).Code,buyunit,0,'market','totalbuy');

                [~]=entryalter(k,barnum,1,1,buyunit,default_exitway,1);

                %  合约号,barnum,方向,开关,手数,出场,策略

        end;

        if  s(1).sellshortcon  &&  s(1).marketposition==0

                sellshortunit=default_unit;

                orderID1=traderDirectSell(HandleList(1),targetList(k).Market,targetList(k).Code,sellshortunit,0,'market','totalbuy');

                [~]=entryalter(k,barnum,-1,1,sellshortunit,default_exitway,1);

                %  合约号,barnum,方向,开关,手数,出场,策略

        end;  

end

end


更多免费策略源码请登录atrader社区-策略服务下载~



二维码

扫码加我 拉你入群

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

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

关键词:交易系统 最低价 绝对值 开盘价 收盘

已有 1 人评分经验 论坛币 收起 理由
fantuanxiaot + 33 + 33 精彩帖子

总评分: 经验 + 33  论坛币 + 33   查看全部评分

沙发
ghjktdf 发表于 2017-2-24 14:16:32
钓大鱼?哈哈

藤椅
挖矿专家 发表于 2017-2-24 15:45:05
可以试试哦~

板凳
3862161 在职认证  发表于 2017-2-24 16:03:43
ghjktdf 发表于 2017-2-24 14:16
钓大鱼?哈哈

报纸
ghjktdf 发表于 2017-2-25 15:56:42

地板
ghjktdf 发表于 2017-2-27 11:44:08
帮顶~

7
65425856 发表于 2017-2-28 13:39:30
这个挺有意思的

8
挖矿专家 发表于 2017-3-1 11:15:24
哈哈,可以多关注,每天都会发一个新策略的~

9
65425856 发表于 2017-3-1 16:21:06
挖矿专家 发表于 2017-3-1 11:15
哈哈,可以多关注,每天都会发一个新策略的~
楼主厉害呀

10
挖矿专家 发表于 2017-3-2 11:09:37
65425856 发表于 2017-3-1 16:21
楼主厉害呀
欢迎持续关注

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

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