楼主: 挖矿专家
1087 2

[源码分享] 【每日一策】Matlab量化交易策略源码之 网格资金管理 [推广有奖]

  • 0关注
  • 74粉丝

讲师

22%

还不是VIP/贵宾

-

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

楼主
挖矿专家 发表于 2017-3-22 14:55:47 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
策略原理:
          将资金分为N份,采取随机抛点的形式入场,止损为10%,止盈为11%
          如果该份资金获利超过11%,则上移止盈止损线,且启动下一份资金抛点入场。
          只有多头入场


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

网格资金管理.png

策略源码:

function Strategy1(default_unit,default_exitway,freq)%targetList = traderGetTargetList(); %获取目标资产信息HandleList = traderGetHandleList();%获取账户句柄global entrybar;global record;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');    if length(close)<lags        continue;    end;        %-------------------------交易逻辑-------------------------------%    %----------入场信号--------------------%    stoplossratio=0.01;    stopearnratio=0.011;    remain_num=find(record.isopen==1);    remain.isopen=record.isopen(remain_num);    remain.isearn=record.isearn(remain_num);    remain.pivotprice=record.pivotprice(remain_num);    remain.entrybar=record.entrybar(remain_num);    remain.unit=record.unit(remain_num);    [ValidCash,MarketCap,OrderFrozen,MarginFrozen,PositionProfit] = traderGetAccountInfo(HandleList(1));    [~,~,Multiple,~,~,~,~,~,~] = traderGetFutureInfo(targetList(k).Market,targetList(k).Code);    remain_share=10-length(remain_num);    con1=0;    if remain_share~=0;        con1=1;        buyunit=fix(ValidCash/remain_share/close(end)/Multiple);    end;    for i=1:length(remain_num)        index=remain_num(i);%         barsinceentry=barnum-remain.entrybar(i);%         [~,entryopen,entryhigh,entrylow,entryclose,~,~,~] = traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq, 0-barsinceentry, 0,false,'FWard');%         enterprice=entryclose(1);        if close(end)<remain.pivotprice(i)-stoplossratio*remain.pivotprice(i) % 触发止损线            orderID2=traderDirectSell(HandleList(1),targetList(k).Market,targetList(k).Code,remain.unit(i),0,'market','sell');            if orderID2==0                continue;            end;            record.isopen(index)=0;        elseif close(end)>remain.pivotprice(i)+stopearnratio*remain.pivotprice(i) % 触发止盈线            record.pivotprice(index)=close(end);            record.isearn(index)=2;        end;    end;    con2=randi([1 10],1,1)==1;    con3=isempty(find(remain.isearn==1,1));    buycon=con1 && con2 && con3;    %---------------------------入场操作--------------------------------%    if buycon        orderID1=traderDirectBuy(HandleList(1),targetList(k).Market,targetList(k).Code,buyunit,0,'market','buy');        if orderID1==0            continue;        end;        record.pivotprice=[record.pivotprice,close(end)];        record.isearn=[record.isearn,1];        record.isopen=[record.isopen,1];        record.unit=[record.unit,buyunit];        record.entrybar=[record.entrybar,barnum];    end;endend


更多免费策略源码下载请登录DigQuant社区-策略资源下载~
二维码

扫码加我 拉你入群

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

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


沙发
ghjktdf 发表于 2017-3-23 10:43:27
资金管理类策略很少见啊

藤椅
挖矿专家 发表于 2017-3-23 20:00:15
感谢支持~

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

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