1.Pivot Point交易法

1.1枢轴点(Pivot Point)

这里先建立一个概念:

P= ( H + L + 2C ) / 4 {H代表高价位, L代表低价位, C代表收市价}

这个计算出的P值,是当时的市场绝对均价,下文用到P值公式是变体。

Pivot Point是一套非常“单纯”的阻力支持体系,至今已经广泛的用在股票、期货、国债、指数等高成交量的商品上。经典的Pivot Point是7点系统,就是7个价格组成的,目前广泛使用的13点系统,其实都是一样的,不过是多加了6个价格罢了,适用于大成交量的商品,也适用于Day Trade。

1.2原理公式:

pivot:= (high + low + close) / 3; (用前一天的最高、最低和收盘)
r1:= 2×pivot - low;
s1:= 2×pivot - high;
r2:= pivot + (r1-s1);
s2:= pivot - (r1-s1);
r3:= high - (2×(low - pivot));
s3:= low - (2×(high - pivot));
sm1:=(pivot+s1)/2;
sm2:=(s1+s2)/2;
sm3:=(s2+s3)/2;
rm1:=(pivot+r1)/2;
rm2:=(r1+r2)/2;
rm3:=(r2+r3)/2;

pivot:= (high + low + close) / 3; (用前一天的最高、最低和收盘)

r1:= 2×pivot - low;

s1:= 2×pivot - high;

r2:= pivot + (r1-s1);

s2:= pivot - (r1-s1);

r3:= high - (2×(low - pivot));

s3:= low - (2×(high - pivot));

sm1:=(pivot+s1)/2;

sm2:=(s1+s2)/2;

sm3:=(s2+s3)/2;

rm1:=(pivot+r1)/2;

rm2:=(r1+r2)/2;

rm3:=(r2+r3)/2;

pivot是所谓的轴心,就是阻力系统的中心,其他r/s的都是阻力和支持,带m的是2条阻力的中心价。
1、 pivot有吸引作用,在没有大的多头或是空头进场的情况下,价格是在r1和s1之间围绕轴心运动的,但是运动可能是没有规律的。
2、 在强烈的多头或空头的推动下,价格会突破s1-r1区域,这时就有趋势了,但是还是在正常的价格运动范围之内。在这个范围内会有强烈的方向感,并且多数时间是靠近r1、r2或是s1、s2的价格运动,中间区域停留的时间不长。
3、极端价格,没有特殊的利空或利好消息是不会到的。这个价格是比较重大意义的,往往伴随着特殊的情况,如单顶的v字反转等,是有可能短跑跑成马拉松的机会,一般情况是日内交易者不能放过的机会。
4、 其他的带m的价格都有靠稳的作用,但做出入场的参考意义不大。

2.本文使用Pivot Point交易法原理公式的变体

使用5个关键点. 包括Pivot Point, Support 1 (支撑点1), Resistance 1 (阻力点1), Support 2 (支撑点2), Resistance 2 (阻力点2). 有些交易员使用更多的支撑和阻力点, 例如Support 3 (支撑点3) and Resistance 3 (阻力点3).

R2 = P + (H - L) = P + (R1 - S1)
R1 = (P x 2) - L
P = (H + L + C) / 3
S1 = (P x 2) - H
S2 = P - (H - L) = P - (R1 - S1)

S 代表支撑点, R 代表阻力点, P代表pivot point, H代表高价位, L代表低价位, C代表收市价.

2.1仓位管理,出场设置改进

1.突破两种不同level的支撑(阻力)位,有不同的仓位权重。

2.出场加入滚动止盈止损

3.策略代码分

3.1策略文件

function PivotPoints( freq,stop_rate )
%UNTITLED5 Summary of this function goes here
% Detailed explanation goes here
HandleList=traderGetHandleList();
TargetList=traderGetTargetList();
global TT
global eprice
if isempty(TT)||isempty(eprice)
TT=zeros(length(TargetList),1);
eprice=zeros(length(TargetList),1);
end
[ValidCash,MarketCap,OrderFrozen,MarginFrozen,PositionProfit] = traderGetAccountInfo(HandleList);
lags=60;
for i=1:length(TargetList)
%提取数据
[name,lastTD,Multiple,MinMove,TradingFeeOpen,TradingFeeClose,TradingFeeCloseToday,LongMargin,ShortMargin] = traderGetFutureInfo(TargetList(i).Market,TargetList(i).Code);
[time,open,high,low,close,volume,turnover,openinterest]=traderGetKData(TargetList(i).Market,TargetList(i).Code,‘day’,freq,0-lags,0,false,‘FWard’);
[Position,Frozen,AvgPrice] = traderGetAccountPosition(HandleList,TargetList(i).Market,TargetList(i).Code);
if length(close)<lags
continue;
end
%仓位处理
sharenum1=floor((ValidCash+MarketCap)0.4/length(TargetList)/close(end)/Multiple);
sharenum2=floor((ValidCash+MarketCap)0.8/length(TargetList)/close(end)/Multiple);
%支撑阻力位描述
P=(high(end-1)+close(end-1)+low(end-1))/3;
buylin1=P+(high(end-1)-low(end-1));
buylin2=high(end-1)+2
(P-low(end-1));
selllin1=P-(high(end-1)-low(end-1));
selllin2=low(end-1)-2
(high(end-1)-P);
if TT(i)1
eprice(i)=AvgPrice;
TT(i)=0;
end
%交易操作
if Position0
if close(end)>buylin1&&close(end)>mean(close(end-4:end))
orderID=traderBuy(HandleList,TargetList(i).Market,TargetList(i).Code,sharenum1,0,‘Market’,‘buy’);
if orderID~=0
TT(i)=1;
end
elseif close(end)>buylin2&&close(end)>mean(close(end-4:end))
orderID=traderBuy(HandleList,TargetList(i).Market,TargetList(i).Code,sharenum2,0,‘Market’,‘buy’);
if orderID~=0
TT(i)=1;
end
elseif close(end)<selllin1&&close(end)<mean(close(end-4:end))
orderID=traderSellShort(HandleList,TargetList(i).Market,TargetList(i).Code,sharenum1,0,‘Market’,‘sell’);
if orderID~=0
TT(i)=1;
end
elseif close(end)<selllin2&&close(end)<mean(close(end-4:end))
orderID=traderSellShort(HandleList,TargetList(i).Market,TargetList(i).Code,sharenum2,0,‘Market’,‘sell’);
if orderID~=0
TT(i)=1;
end
end
elseif Position>0
if close(end)>eprice(i)(1+3stop_rate)
eprice(i)=close(end);
elseif close(end)<eprice(i)(1-stop_rate)
traderPositionTo(HandleList,TargetList(i).Market,TargetList(i).Code,0,0,‘Market’,‘stoplong’);
end
else
if close(end)<eprice(i)
(1-3stop_rate)
eprice(i)=close(end);
elseif close(end)>eprice(i)
(1+stop_rate)
traderPositionTo(HandleList,TargetList(i).Market,TargetList(i).Code,0,0,‘Market’,‘stoplong’);
end
end
end
end

3.2执行文件

TargetList(1).Market = ‘DCE’;
TargetList(1).Code = ‘JM0000’;
TargetList(2).Market = ‘SHFE’;
TargetList(2).Code = ‘RB0000’;
stop_rate=0.05;
freq=1;
AccountList(1) = {‘FutureBackReplay’};
traderRunBacktest(‘PivotPoints’,@PivotPoints,{ freq,stop_rate },AccountList(1),TargetList,‘min’,60,20100103,20161101,‘FWard’);

4.回测表现

对螺纹钢和焦煤期货自2010年1月至2016年11月进行60分钟级别回测

©著作权归作者所有:来自51CTO博客作者点宽Digquant的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 星环科技作为典型厂商代表入选《2021爱分析·中国人工智能应用趋
  2. 百度指数是什么意思?其中的数值又代表什么?
  3. Tomcat控制台日志输出到本地文件
  4. 【DB笔试面试756】在Oracle的DG中,有哪些重要的参数,它们分别代表
  5. 【js效果】倒计时
  6. 【DB笔试面试692】在Oracle中,V$SYSSTAT中的CLASS列分别代表什么?
  7. 【DB笔试面试94】在MySQL中,VARCHAR与CHAR的区别是什么?VARCHAR(50
  8. mfs changelog日志解析
  9. 「课代表」帮你总结了全网最全的Redis知识点

随机推荐

  1. android XMl 解析神奇xstream 五: 把复杂
  2. 欢迎访问Android中国
  3. Android监听手机软键盘的弹起和关闭
  4. Android笔记:SlidingDrawer
  5. Android 自定义ViewGroup 实战篇 -> 实现
  6. It’s Android Time
  7. [置顶] android Studio 配置LUA 开发环境
  8. Android界面开发简介
  9. 在 Android(安卓)字符串资源中直接使用 E
  10. Android中Shape和Selector的结合使用。