楼主: 挖矿专家
6972 11

[交易策略] Matlab量化交易策略之 均线系统 [推广有奖]

  • 0关注
  • 74粉丝

讲师

22%

还不是VIP/贵宾

-

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

楼主
挖矿专家 发表于 2017-2-16 10:24:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
策略名称:均线系统策略说明:
         多头入场:5日均线上穿65日均线且当前价格大于200日均线
         空头入场:5日均线下穿65日均线且当前价格小于200日均线
         出场:动态跟踪止损出场


回测曲线:


QQ图片20170216102017.png

策略代码:

function  Strategy1(default_unit,default_exitway,freq)%


targetList  =  traderGetTargetList();  

%获取目标资产信息

HandleList  =  traderGetHandleList();

%获取账户句柄

global  entrybar;

for  k=1:length(targetList);


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

        %获取当前仓位

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

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

        lags=200;

        dlags=20;

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

        %数据长度限制

        if(barnum<lags)

                continue;

        end

        if(barnum<dlags)

                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,~,~]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'day',1,  0-dlags,  0,false,'FWard');

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

                continue;

        end;        

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

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

        TRvalue=TR(Dclose,Dhigh,Dlow);

        ATR=ma(TRvalue,10);

        ma2=ma(close,200);

        ma0=ma(close,5);

        ma1=ma(close,65);

        buycon=ma0(end)>ma1(end)  &&  ma0(end-1)<ma1(end-1)  &&  close(end)>ma2(end);

        sellshortcon=ma0(end)<ma1(end)  &&  ma0(end-1)>ma1(end-1)  &&  close(end)<ma2(end);

        if  default_exitway==1

                sellcon=ma0(end)<ma1(end)  &&  ma0(end-1)>ma1(end-1);

                buytocovercon=ma0(end)>ma1(end)  &&  ma0(end-1)<ma1(end-1);

        elseif  default_exitway==2

                TRvalue=TR(close,high,low);

                ATR=ma(TRvalue,4);

                barsinceentry=barnum-entrybar(k);

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

                range=4*ATR(end-1);

                [sellcon,buytocovercon]=exitway1(entryopen,entryclose,entryhigh,entrylow,marketposition,range);

        elseif  default_exitway==3

                barsinceentry=barnum-entrybar(k);

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

                enterprice=entryclose(1);

                percent=0.5;

                ATRparam=1;

                sellcon=0;

                buytocovercon=0;

                if  marketposition>0

                        stoplossprice=enterprice-ATRparam*ATR(end);

                        stopearnprice=enterprice+ATRparam*ATR(end);

                        [sellcon,buytocovercon]=exitway3(entryopen,entryclose,entryhigh,entrylow,marketposition,stoplossprice,stopearnprice,percent);

                elseif  marketposition<0

                        stoplossprice=enterprice+ATRparam*ATR(end);

                        stopearnprice=enterprice-ATRparam*ATR(end);

                        [sellcon,buytocovercon]=exitway3(entryopen,entryclose,entryhigh,entrylow,marketposition,stoplossprice,stopearnprice,percent);

                end;

        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


更多策略请登录atrader社区下载 http://www.atrader.com.cn/stra.php?mod=model&pid=145


软件下载: http://www.atrader.com.cn/software.php



二维码

扫码加我 拉你入群

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

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


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

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

本帖被以下文库推荐

沙发
Mahone666 发表于 2017-2-20 13:41:33
谢谢分享,我也是做matlab量化的,主要研究方向是多因子选股,欢迎加群交流。Matlab量化-交流 155600983(已满),Matlab量化-交流2群 117392934(可加)。

藤椅
lixuewei3 发表于 2017-2-21 10:29:59
期待以后多分享

板凳
ghjktdf 发表于 2017-2-22 13:23:58
楼主私货真心多

报纸
挖矿专家 发表于 2017-2-22 15:45:54
感谢支持~

地板
挖矿专家 发表于 2017-2-23 19:02:23
顶!d=====( ̄▽ ̄*)b

7
ghjktdf 发表于 2017-2-25 16:00:19
帮顶

8
ghjktdf 发表于 2017-2-27 11:46:46
楼主大赞~

9
edycolor 发表于 2017-2-27 18:30:44
不得不说双均线是最经典的策略。。。楼主不错哦~

10
3862161 在职认证  发表于 2017-2-28 09:58:15
edycolor 发表于 2017-2-27 18:30
不得不说双均线是最经典的策略。。。楼主不错哦~
最好趋势策略就是均线策略

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

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