请选择 进入手机版 | 继续访问电脑版
楼主: 邓jane
1275 2

[源码分享] 今年以来收益率超过50%的MACD策略源代码分享,求大神交流指正~ [推广有奖]

  • 0关注
  • 0粉丝

小学生

71%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
68 点
帖子
8
精华
0
在线时间
6 小时
注册时间
2013-12-6
最后登录
2017-1-11

邓jane 发表于 2016-10-12 16:58:08 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
function MACD(freq,shareNum)%
%买卖原则为:
%dif-dea均为正,且dif上扬,买入信号参考。
%dif-dea均为负,且dif下跌,卖出信号参考。

targetList = traderGetTargetList();
%获取目标资产信息
HandleList = traderGetHandleList();
%获取账户句柄
for i=1:length(targetList);
   
    %--------------------仓位、K线、当前bar的提取-----------------------------%
    %获取当前仓位
    [marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(i).Market,targetList(i).Code);
    %策略中每次取数据的长度
    lags=300;
   barnum=traderGetCurrentBar(targetList(i).Market,targetList(i).Code);
   if(barnum<lags)
        continue;
   end
    %获取K线数据
    [time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(targetList(i).Market,targetList(i).Code,'min',freq, 0-lags, 0,false,'FWard');
  % [Dtime,Dopen,Dhigh,Dlow,Dclose,Dvolume,Dturnover,Dopeninterest] = traderGetKData(targetList(k).Market,targetList(k).Code,'day',1,0-dlags, 0,false,'FWard');
   
    %-------------------------交易逻辑-------------------------------%
%得到MACD指标
[ema12]=traderEMA(12,targetList(i).Market,targetList(i).Code,'day',1, 0-lags, 0,false,'FWard');
[ema26]=traderEMA(26,targetList(i).Market,targetList(i).Code,'day',1, 0-lags, 0,false,'FWard');
dif=ema12-ema26;
dea=zeros(length(dif),1);
       for j=2:length(dif)
            dea(j,1)=2/10*dif(j,1)+8/10*dea(j-1,1);%在DEA里,C=DIF,N=9,所以EMA(DIF,9)=2/10*今天的DIF+8/10*昨天的DIF
        end
macd=(dif-dea)*2;
%macd=MACD(close,12,26,9);

%交易条件        
con1= dif(end)>dif(end-1) &&dif(end)>dea(end); %MACD金叉:DIF由下向上突破DEA,为买入信号。
con2= dif(end)<dif(end-1) && dif(end)<dea(end) ; %MACD死叉:DIF由上向下突破DEA,为卖出信号。
con3= macd(end)>0&macd(end-1)<0;%MACD值由负变正,市场由空头转为多头。
con4= macd(end-1)>0&macd(end)<0;%MACD值由正变负,市场由多头转为空头。
con5= dif(end)>0&&dea(end)>0 && dif(end)>dea(end);  %DIF与DEA均为正值,即都在零轴线以上时,大势属多头市场,DIFF向上突破DEA,可作买。
con6= dif(end)<0&&dea(end)<0&&dif(end)<dea(end);  %DIFF与DEA均为负值,即都在零轴线以下时,大势属空头市场,DIFF向下跌破DEA,可作卖。

      if marketposition==0 && con1;
           orderID1=traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buy1');%开多单  
          % traderStopLossByOrder(HandleList(1),orderID1,stopTar,'Percent','market','stoplossS');%对订单百分比止损
           %traderStopTrailingByOrder(HandleList(1),orderID1,profitTar,'Percent',pct,'Percent','market','trailingS');%对订单百分比跟踪止盈
      end
   
      if marketposition==0 && con2;
          orderID2=traderSellShort(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','sell1');%开空单  
          %traderStopLossByOrder(HandleList(1),orderID2,stopTar,'Percent',shareNum,'market','stoplossB');%对订单百分比止损
          %traderStopTrailingByOrder(HandleList(1),orderID2,profitTar,'Percent',pct,'Percent','market','trailingB');%对订单百分比跟踪止盈
      end
      if marketposition>0&&con3 && con6;
         traderSellShort(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','sell1');%开空单
      end
      if marketposition<0&&con4 && con5;
          traderBuyToCover(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buy1');
      end
end

end

二维码

扫码加我 拉你入群

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

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

关键词:MACD 源代码 收益率 Mac ACD 源代码 收益率

绩效.png
多头权益曲线.png
权益曲线.png
买卖点.png
3862161 在职认证  发表于 2016-12-23 12:59:39 |显示全部楼层 |坛友微信交流群
看起来 还好

使用道具

xiaoping2367 发表于 2016-12-23 21:36:21 |显示全部楼层 |坛友微信交流群
请问,这是啥程序软件啊?界面不错

使用道具

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

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 01:45