设为首页收藏本站

 找回密码
 注册
查看: 2698|回复: 0
打印 上一主题 下一主题

DualThrust策略源码 [复制链接]

精华
0
UID
247176
积分
162
帖子
72
主题
68
阅读权限
0
注册时间
2017-2-14
最后登录
2017-5-18
跳转到指定楼层
1#
发表于 2017-3-3 11:48:59 |只看该作者 |倒序浏览
策略说明:

多头进场条件:收盘价大于根据前一根bar的开高低收构造的通道的上轨
空头进场条件:收盘价小于根据前一根bar的开高低收构造的通道的下轨

多头出场条件:止损0.5%,盈利超过1%启动跟踪止盈,回撤盈利的20%出场
空头出场条件:止损0.5%,盈利超过1%启动跟踪止盈,回撤盈利的20%出场


策略代码:

function  DualThrust(Freq,shareNum,N,k1,k2,stopTar,profitTar,pct)        %上面8个为输入参数
%  ---------------------Dual  Thrust  Strategy-------------------------
%  Freq  为输入时间频率
%  shareNum  为操作的手数
%  len  为计算使用的长度
%  k1  为价格上轨乘数,当k1<k2时,多头相对容易被触发,当k1>k2时,空头相对容易被触发
%  k2  为价格下轨乘数
%  stopTar  为止损参数
%  profitTar  为跟踪止盈参数
%  pct  为跟踪止盈回撤参数
%----------------------策略初始化与是否日内平仓------------------------%
traderDailyCloseTime(145000);%  每天14:50分平仓        如果没有日内平仓,去掉这句话就可以了。
targetList  =  traderGetTargetList();  %获取交易标的句柄
HandleList  =  traderGetHandleList();  %获取账户句柄
[marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(1).Market,targetList(1).Code);  %获取当前仓位状况
lags=25;
%----------------------策略提取数据------------------------%
[time,open,high,low,close]  =  traderGetKData(targetList(1).Market,targetList(1).Code,'day',Freq,  -lags,  0,false,'FWard');  %提取数据,从当前开始往前取lags个数据
%---------------------策略计算与基本逻辑-------------------%
if  length(close)<lags
        return;
end
        HH=max(high(end-N:end-1));%  前  len  根  BAR  的  high  的最高价
        HC=max(close(end-N:end-1));%  前  len  根  BAR  的  close  的最高价
        LC=min(close(end-N:end-1));%  前  len  根  BAR  的  close  的最低价
        LL=min(low(end-N:end-1));%  前  len  根  BAR  的  low  的最低价
        range=max(HH-LC,HC-LL);  %  浮动区间
        upper=open(end)+k1*range;  %  价格上轨
        lower=open(end)-k2*range;  %  价格下轨
%----------------------策略主体----------------------------%
      if    marketposition==0
            if  close(end)>upper      %  突破价格上轨,做多
                  orderID1=traderBuy(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','buyopen');  
                  traderStopLossByOrder(HandleList(1),orderID1,stopTar,'Percent','market','stoplossS');
                  traderStopTrailingByOrder(HandleList(1),orderID1,profitTar,'Percent',pct,'Percent','market','trailingS');
            end
            if  close(end)<lower      %  突破价格下轨,做空
                  orderID2=traderSellShort(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','sellopen');  
                  traderStopLossByOrder(HandleList(1),orderID2,stopTar,'Percent','market','stoplossB');
                  traderStopTrailingByOrder(HandleList(1),orderID2,profitTar,'Percent',pct,'Percent','market','trailingB');
            end
      end
end


更多免费策略源码下载请登录atrader社区-策略服务,http://www.atrader.com.cn/stra.php

DualThrust策略源码下载:http://www.atrader.com.cn/stra.php?mod=model&pid=72
您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-4 11:18

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部