Pivot Point其实就是所谓的轴心点了,了解它的,应该知道它是很单纯的阻力支撑系统。我刚开始接触它的时候,都是每天自己算一下再画线,麻烦的很,最后学了这程序化,才把它做成一个简单代码,画出来了。先看它的算法吧,如下:
pivot:= (high + low + close) / 3;(用前一天的最高、最低和收盘)
r1:= 2*pivot - low;
s1:= 2*pivot - high;
r2:= pivot + (r1-s1);
s2:= pivot - (r1-s1);
r3:= high + 2 * (pivot-low);
s3:= low - 2 * (high - pivot);
pivot是所谓的轴心,就是阻力系统的中心,其他r/s的都是阻力和支撑了。
看了这算法,会点代码的哥们,直接代入都行了,我们来看一个很粗略的代码,如下:
Vars
Numeric pivot;
Numeric r1;
Numeric r2;
Numeric r3;
Numeric s1;
Numeric s2;
Numeric s3;
Begin
pivot=(HighD(1)+LowD(1)+CloseD(1))/3; //代入的就是昨天的最高价、最低价跟收盘价了。//
r1=2*pivot-lowD(1);
s1=2*pivot-HighD(1);
r2=pivot+(r1-s1);
s2=pivot-(r1-s1);
r3=HighD(1)+(2 * (pivot-LowD(1)));
s3=LowD(1)-(2 * (HighD(1)-pivot));
PlotNumeric("pivot",pivot,0,White);
PlotNumeric("r1",r1,0,red);
PlotNumeric("r2",r2,0,red);
PlotNumeric("r3",r3,0,red);
PlotNumeric("s1",s1,0,green);
PlotNumeric("s2",s2,0,green);
PlotNumeric("s3",s3,0,green);
End
这段没什么好解读的了吧,先声明相应的变量,再就是直接代入相应数值就可以计算出来的。再来看一段经过细致处理的代码,这是TB论坛里illidanyl这哥们写的,如下:
Vars
Numeric PivotPoint;
Numeric R1;
Numeric R2;
Numeric R3;
Numeric S1;
Numeric S2;
Numeric S3;
Numeric SM1;
Numeric SM2;
Numeric SM3;
Numeric RM1;
Numeric RM2;
Numeric RM3;
NumericSeries DClose;
NumericSeries DHigh;
NumericSeries DLow;
NumericSeries HH;
NumericSeries LL;
Begin
If(BarStatus == 0) //先假如当前为第一根k线的。//
{
DClose = Open;//变量DClose = 开盘价。//
DHigh = Open;//变量DHigh= 开盘价。//
DLow = Open;//变量DLow = 开盘价。//
HH = Open; //变量HH = 开盘价。//
LL = Open; //变量LL = 开盘价。//
}
Else //只要不是第一根k线的,进行下列处理。//
{
If(Date != Date[1]) //假如当前日期不等于昨天日期的。//
{
DClose = Close[1]; //变量DClose = 昨天收盘价Close[1] 。//
DHigh = HH;//变量DHigh = 变量HH。//
DLow = LL; //变量DLow = 变量LL。//
HH = Open; //变量HH = 开盘价。//
LL = Open;//变量LL=开盘价。//
}
If(Low[1] < LL) //假如昨天最低价小于变量LL,其实就是小于开盘价的。//
LL = Low[1]; //变量LL = 昨天最低价Low[1]。//
If(High[1] > HH) //假如昨天最高价大于变量HH,其实就是大于开盘价了。//
HH = High[1];//变量HH=昨天最高价High[1]。//
}
//下面就是依据算法来了,都是直接代入相应数值计算就可以的。//
PivotPoint = (DHigh + DLow + DClose * 2) / 4; //这里细致处理就是先用昨天收盘价乘以2,最后除以4,这可以除尽。不像除以3,存在数值除不尽的,不好取值。//
R1 = PivotPoint * 2 - DLow;
S1 = PivotPoint * 2 - DHigh;
R2 = PivotPoint + (R1 - S1);
S2 = PivotPoint - (R1 - S1);
R3 = DHigh - 2 * (DLow - PivotPoint);
S3 = DLow - 2 * (DHigh - PivotPoint);
//下面这些是经过再次处理的数值,但意义我不知道有没有用的,因为我一般直接去掉这个的。//
SM1 = (PivotPoint + S1) / 2;
SM2 = (S1 + S2) / 2;
SM3 = (S2 + S3) / 2;
RM1 = (PivotPoint + R1) / 2;
RM2 = (R1 + R2) / 2;
RM3 = (R2 + R3) / 2;
//画出相应的线了。//
PlotNumeric("R3",R3,0,Red);
PlotNumeric("R2",R2,0,Red);
PlotNumeric("R1",R1,0,Red);
PlotNumeric("PivotPoint",PivotPoint,0,White);
PlotNumeric("S1",S1,0,Green);
PlotNumeric("S2",S2,0,Green);
PlotNumeric("S3",S3,0,Green);
PlotNumeric("RM1",RM1,0,Red);
PlotNumeric("RM2",RM2,0,Red);
PlotNumeric("RM3",RM3,0,Red);
PlotNumeric("SM3",SM3,0,Green);
PlotNumeric("SM2",SM2,0,Green);
PlotNumeric("SM1",SM1,0,Green);
End
仔细对比两个图,你会发现它们画出来的线是不一样的,因为它们对应的昨天收盘价、最高价和最低价是不一致的,你要说哪个画的更标准,我只能说看个人喜好了。因为夜盘九点开始,这当成开盘价。但也有人喜欢早上九点才当成开盘价,所以你可以根据自己喜好,选一个就可以了。我做夜盘的,习惯把夜盘九点当成开盘价,一直用第一个的。