设为首页收藏本站

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

PivotPoint策略(附源码) [复制链接]

精华
0
UID
247176
积分
162
帖子
72
主题
68
阅读权限
0
注册时间
2017-2-14
最后登录
2017-5-18
跳转到指定楼层
1#
发表于 2017-2-27 14:22:38 |只看该作者 |倒序浏览
策略思路:
系统不断跟踪实时交易价格,根据前一交易日计算得到的六个价位作为触发条
件,当当前价位达到触发价格时,产生交易信号,系统自行执行交易策略。因
此我们的具体交易策略如下:
1) 趋势跟踪策略:
在空仓情况下,若盘中价格超过买入突破价,则认为出现上升趋势,开仓做多;
在空仓情况下,若盘中价格跌破卖出突破价,则认为出现下降趋势,开仓做空;
2) 反转趋势策略:
当日内最高价超过上观察价后,盘中价格出现回落,且进一步跌破卖出反转价
构成的支撑线时,即在该点位(反手、开仓)做空;
当日内最低价跌破下观察价后,盘中价格出现反弹,且进一步超过反转买入价
构成的阻力线时,即在该点位(反手、开仓)做多;

策略代码:
function  PivotPoint(freq2,shareNum)      %上面五个为输入参数
%  Freq  为输入时间频率
%---------------------策略初始化与是否日内平仓---------------%
%  traderDailyCloseTime(145000);          %  每天14:50分平仓        如果没有日内平仓,去掉这句话就可以了。
targetList  =  traderGetTargetList();  %获取交易标的句柄
HandleList  =  traderGetHandleList();  %获取账户句柄
global  s;
lags=3;
%---------------------策略提取数据---------------%
for  i=1:length(targetList)
        [time,open,high,low,close,volume,turnover,openinterest]  =  traderGetKData(targetList(i).Market,targetList(i).Code,'day',freq2,  0-lags,  0,false,'FWard');  %提取数据,从当前开始往前取lags个数据
        
        BarNumber=traderGetCurrentBar(targetList(i).Market,targetList(i).Code);
        
        if  length(close)<lags
                continue;
        end
        
        mp=traderGetAccountPosition(HandleList(1),targetList(i).Market,targetList(i).Code);
      
        t=datevec(time(end));
        if  t(4)==9&&t(5)<35;
                s(i).switch1=1;
                s(i).switch2=1;
                s(i).switch3=0;
                s(i).switch4=1;
                s(i).switch5=1;
                s(i).switch6=0;
               
                s(i).OrderID1=0;
                s(i).OrderID2=0;
                s(i).OrderID3=0;
                s(i).OrderID4=0;
                continue;
        end
        
        if  t(4)==14&&t(5)>50  &&  mp~=0
                traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','反转做空')
                continue;
        end
        %%  计算轨迹
        
        HH=high(end-1);%  上一个交易日的最高价
        LL=low(end-1);  %  上一个交易日的最低价
        CC=close(end-1);  %  上一个交易日的收盘价
        
        pp=(HH+LL+2*CC)/4;
        
        R3=pp+(HH-LL)+(pp-LL);
        R2=pp+(HH-LL);
        R1=pp+(HH-pp);
        S1=pp-(HH-pp);
        S2=pp-(HH-LL);
        S3=pp-(HH-LL)-(HH-pp);
        
        
        
        
        %%  判断状态下单
        if  close(end)>R3  &&  s(i).switch1==1;
                s(i).OrderID1=traderDirectBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','突破做多');
                s(i).switch1=0;
        end
        
        if  close(end)>R2  &&  s(i).switch2==1
                s(i).switch2=0;
                s(i).switch3=1;
        end
        
        if    s(i).switch3==1  &&  close(end)<R1
                s(i).OrderID2=traderDirectSell(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','反转做空');
                s(i).switch3=0;
        end
        
        if  close(end)<S3  &&  s(i).switch4==1
                s(i).OrderID3=traderDirectSell(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','突破做多');
                s(i).switch4=0;
        end
        
        if  close(end)<S2  &&  s(i).switch5==1
                s(i).switch5=0;
                s(i).switch6=1;
        end
        
        if    s(i).switch6==1  &&  close(end)>S1
                s(i).OrderID4=traderDirectBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','反转做多');
                s(i).switch6=0;
        end
        
        
        if  s(i).OrderID1~=0  &&  close(end)<R2
                traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','close');
                s(i).OrderID1=0;
        end
        
        if  s(i).OrderID2~=0  &&  close(end)>R2
                traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','close');
                s(i).OrderID2=0;
        end
        
        if  s(i).OrderID3~=0  &&  close(end)>S2
                traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','close');
                s(i).OrderID3=0;
        end
        
        if  s(i).OrderID4~=0  &&  close(end)<S2
                traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','close');
                s(i).OrderID4=0;
        end
        
        
        
end

更多免费策略源码下载请登录atrader社区-策略服务下载,http://www.atrader.com.cn/stra.php
您需要登录后才可以回帖 登录 | 注册

bottom

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

GMT+8, 2024-4-20 15:36

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部