期货软件TB系统源代码解读系列30-Pivot Point

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

仔细对比两个图,你会发现它们画出来的线是不一样的,因为它们对应的昨天收盘价、最高价和最低价是不一致的,你要说哪个画的更标准,我只能说看个人喜好了。因为夜盘九点开始,这当成开盘价。但也有人喜欢早上九点才当成开盘价,所以你可以根据自己喜好,选一个就可以了。我做夜盘的,习惯把夜盘九点当成开盘价,一直用第一个的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容