相似文件
换一批
经管之家送您一份
应届毕业生专属福利!
求职就业群
感谢您参与论坛问题回答
经管之家送您两个论坛币!
+2 论坛币
最近收集了近百个量化交易策略,准备以系列的方式发出来,将好东西分享给大家~
策略名称:PivotPoint
思路说明: 系统不断跟踪实时交易价格,根据前一交易日计算得到的六个价位作为触发条件,当当前价位达到触发价格时,产生交易信号,系统自行执行交易策略。因此我们的具体交易策略如下:
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
为尊重作者原创权益,附上作者信息 作者:chao9002 来源:http://www.atrader.com.cn/stra.php
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
|