楼主: 挖矿专家
3448 17

[源码分享] 【每日一策】Matlab量化交易策略之 均线打分 [推广有奖]

  • 0关注
  • 74粉丝

讲师

22%

还不是VIP/贵宾

-

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

楼主
挖矿专家 发表于 2017-3-7 10:23:31 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
策略思路:

对两条均线的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社区)-策略资源下载~


二维码

扫码加我 拉你入群

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

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


已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
fantuanxiaot + 44 + 44 + 4 + 4 + 4 精彩帖子

总评分: 经验 + 44  论坛币 + 44  学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

本帖被以下文库推荐

沙发
65425856 发表于 2017-3-7 17:27:01
这个不错~

藤椅
挖矿专家 发表于 2017-3-7 18:17:32
感谢支持,大家一起学习~

板凳
peppep 发表于 2017-3-7 19:20:00
不错,加油

报纸
hsf1117 发表于 2017-3-8 14:13:15
{:3_52:}

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


这个思路不错~

7
挖矿专家 发表于 2017-3-9 10:09:25
感谢支持

8
65425856 发表于 2017-3-9 16:51:07
ghjktdf 发表于 2017-3-8 15:47
当分数大于12分时,多头入场,
当有仓位时,分数小于8分,则平仓出场
同赞~这个还是不错的

9
aguangzx 在职认证  发表于 2017-3-10 18:40:31
我感觉如果在这个思路之上,配合评分分仓操作可能资金线平滑些

10
挖矿专家 发表于 2017-3-13 10:30:48
aguangzx 发表于 2017-3-10 18:40
我感觉如果在这个思路之上,配合评分分仓操作可能资金线平滑些
受教了~

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

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