本帖最后由 sdfg123 于 2017-2-15 17:19 编辑
策略名称:PivotPoint
策略说明:
系统不断跟踪实时交易价格,根据前一交易日计算得到的六个价位作为触发条
件,当当前价位达到触发价格时,产生交易信号,系统自行执行交易策略。因
此我们的具体交易策略如下:
1) 趋势跟踪策略:
在空仓情况下,若盘中价格超过买入突破价,则认为出现上升趋势,开仓做多;
在空仓情况下,若盘中价格跌破卖出突破价,则认为出现下降趋势,开仓做空;
2) 反转趋势策略:
当日内最高价超过上观察价后,盘中价格出现回落,且进一步跌破卖出反转价
构成的支撑线时,即在该点位(反手、开仓)做空;
当日内最低价跌破下观察价后,盘中价格出现反弹,且进一步超过反转买入价
构成的阻力线时,即在该点位(反手、开仓)做多;
回测曲线:
1.png (81.89 KB, 下载次数: 1)
2017-2-15 17:18 上传
策略代码:
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)
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)
s(i).OrderID2=traderDirectSell(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','反转做空');
s(i).switch3=0;
end
if close(end)
s(i).OrderID3=traderDirectSell(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','突破做多');
s(i).switch4=0;
end
if close(end)
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)
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)
traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','close');
s(i).OrderID4=0;
end
end
更多免费策略下载请登录 ww w.atrader.com.cn/stra.php