全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 量化投资
3442 17
2017-03-07
策略思路:

对两条均线的20组参数循环,满足金叉分数+1
         当分数大于12分时,多头入场,
         当有仓位时,分数小于8分,则平仓出场

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

均线打分.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=90;    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 length(close)<lags || length(Dclose)<dlags        continue;    end;        %-------------------------交易逻辑-------------------------------%    %----------入场信号--------------------%    points=0;    for i=1:20        sma=ma(close,i);        lma=ma(close,4*i);        if sma(end)>lma(end)            points=points+1;        end;    end;    buycon=points>12;    sellshortcon=points<8;    if default_exitway==1        sellcon=points<8;        buytocovercon=points>12;    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; endend

更多免费策略源码下载请登录 DigQuant社区(原atrader社区)-策略资源下载~


二维码

扫码加我 拉你入群

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

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

全部回复
2017-3-7 17:27:01
这个不错~
二维码

扫码加我 拉你入群

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

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

2017-3-7 18:17:32
感谢支持,大家一起学习~
二维码

扫码加我 拉你入群

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

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

2017-3-7 19:20:00
不错,加油
二维码

扫码加我 拉你入群

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

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

2017-3-8 14:13:15
{:3_52:}
二维码

扫码加我 拉你入群

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

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

2017-3-8 15:47:24
当分数大于12分时,多头入场,
当有仓位时,分数小于8分,则平仓出场


这个思路不错~
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群