全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 量化投资
1461 2
2016-10-12
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

附件列表
绩效.png

原图尺寸 85.74 KB

绩效.png

多头权益曲线.png

原图尺寸 126.53 KB

多头权益曲线.png

权益曲线.png

原图尺寸 115.28 KB

权益曲线.png

买卖点.png

原图尺寸 24.98 KB

买卖点.png

二维码

扫码加我 拉你入群

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

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

全部回复
2016-12-23 12:59:39
看起来 还好
二维码

扫码加我 拉你入群

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

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

2016-12-23 21:36:21
请问,这是啥程序软件啊?界面不错
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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