楼主: 挖矿专家
2901 2

[源码分享] 【每日一策】Matlab量化交易策略之 SMA-ADX系统(simple) [推广有奖]

  • 0关注
  • 74粉丝

讲师

22%

还不是VIP/贵宾

-

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

楼主
挖矿专家 发表于 2017-3-27 15:30:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
SMA-ADX
策略原理:
         多头入场:价格大于65日均线,最高价大于均线,ADX均值大于20,最高价大于最近20日最高价上0.5倍ATR
         空头入场:价格小于65日均线,最低价小于均线,ADX均值大于20,最低价小于最近20日最低价下0.5倍ATR
         多头平仓:价格跌破均线
         空头平仓:价格突破均线

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

SMA-ADX.png


策略源码:

function Strategy1(default_unit,default_exitway,freq)%targetList = traderGetTargetList(); %获取目标资产信息HandleList = traderGetHandleList();%获取账户句柄for k=1:length(targetList);        %--------------------仓位、K线、当前bar的提取-----------------------------%    %获取当前仓位    [marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);    %策略中每次取数据的长度    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');    if length(close)<lags        continue;    end;       %-------------------------交易逻辑-------------------------------%    %----------入场信号--------------------%    [PDIma,NDIma,ADX]=DMI(close,high,low,14,14);    TRvalue=TR(close,high,low);    ATR=ma(TRvalue,20);    ADXma=ma(ADX,18);    ma1=ma(close,65);    highest=est(high,1);    lowest=est(low,-1);    buycon=close(end)>ma1(end) && highest(end-1)>ma1(end) && ADXma(end)>20 && high(end)>max(high(end-20:end-2))+0.5*ATR(end);    sellshortcon=close(end)<ma1(end) && lowest(end-1)<ma1(end) && ADXma(end)>20 && low(end)<min(low(end-20:end-2))-0.5*ATR(end);    sellcon=close(end)<ma1(end);    buytocovercon=close(end)>ma1(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;    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;    end; endend
更多免费策略源码下载请登录DigQuant社区-策略资源下载~



二维码

扫码加我 拉你入群

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

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

关键词:simple

沙发
ghjktdf 发表于 2017-3-28 10:10:07
为啥没有16年的回测~

藤椅
挖矿专家 发表于 2017-3-29 11:15:24
回测时间可以自己调的

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

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