转折点公式的学习

转折点公式的学习

首页休闲益智CNTR更新时间:2024-05-07

为了测试一些想法和策略,需要实现一些行情上的功能,而这些功能是基于pivot转折点来开发和延伸的。所以在这里花点时间,完全理解这个公式的逻辑,第一是为未来更好的使用,第二是为了借鉴其思路,之后开发类似的函数/指标。

TB公式如下:

//------------------------------------------------------------------------

// 简称: Pivot

// 名称: 求转折

// 类别: 用户函数

// 类型: 内建函数

// 输出: 布尔型

//------------------------------------------------------------------------

Params

Series<Numeric> Price(1); //数值型序列值

Numeric Length(10); //周期数

Numeric LeftStrength(1); //转折点左边Bar数

Numeric RightStrength(1); //转折点右边Bar数

Numeric Instance(1); //波峰点回溯值

Numeric HiLo(1); //1 - 求高点, -1 - 求低点

NumericRef PivotPrice; //转折点数值

NumericRef PivotBar; //转折点回溯索引

Vars

Numeric CandidatePrice( 0 );

Numeric LengthCntr( 0 );

Numeric StrengthCntr( 0 );

Numeric InstanceCntr( 0 );

Bool PivotTest( False);

Bool InstanceTest( False ) ;

Begin

InstanceCntr = 0 ;

InstanceTest = False ;

LengthCntr = RightStrength ;

While (LengthCntr < Length && (!InstanceTest ))

{

CandidatePrice = Price[LengthCntr] ;

PivotTest = True ;

StrengthCntr = LengthCntr 1 ;

While (PivotTest && StrengthCntr - LengthCntr <= LeftStrength )

{

If (( HiLo == 1 And CandidatePrice < Price[StrengthCntr] ) Or ( HiLo == -1 And CandidatePrice > Price[StrengthCntr] ))

PivotTest = False;

Else

StrengthCntr = StrengthCntr 1 ;

}

StrengthCntr = LengthCntr - 1 ;

While (PivotTest && (LengthCntr - StrengthCntr) <= RightStrength )

{

If (( HiLo == 1 And CandidatePrice <= Price[StrengthCntr] ) Or ( HiLo == -1 And CandidatePrice >= Price[StrengthCntr] ))

PivotTest = False;

Else

StrengthCntr = StrengthCntr - 1 ;

}

If (PivotTest)

InstanceCntr = InstanceCntr 1 ;

If (InstanceCntr == Instance)

InstanceTest = True;

Else

LengthCntr = LengthCntr 1 ;

}

If (InstanceTest )

{

PivotPrice = CandidatePrice ;

PivotBar = LengthCntr ;

Return True;

}Else

{

PivotPrice = -1 ;

PivotBar = -1 ;

Return False;

}

End

//------------------------------------------------------------------------

// 编译版本 GS2010.12.08

// 版权所有 TradeBlazer Software 2003-2025

// 更改声明 TradeBlazer Software保留对TradeBlazer平

// 台每一版本的TradeBlazer公式修改和重写的权利

//------------------------------------------------------------------------

这个公式的逻辑如下:

1. 定义参数和变量

参数:

- Price: 数值型序列值

- Length: 周期数

- LeftStrength: 转折点左边Bar数,即所确定的转折点左边最少的bar数量

- RightStrength: 转折点右边Bar数,即所确定的转折点右边最少的bar数量,也是数据比较的起点。

- Instance: 波峰点回溯值

- HiLo: 1-求高点,-1-求低点

变量:

- CandidatePrice: 候选价格

- LengthCntr: 周期计数器

- StrengthCntr: 转折点计数器

- InstanceCntr: 波峰点计数器

- PivotTest: 转折点测试

- InstanceTest: 波峰点测试

- PivotPrice: 转折点数值

- PivotBar: 转折点回溯索引

2. 初始化变量

将InstanceCntr、InstanceTest、LengthCntr、CandidatePrice、PivotPrice和PivotBar全部初始化为0或False。

3. 循环每个周期

在一个while循环中,从周期数的RightStrength位置开始,逐一往后检查每个周期,直到周期数Length,或找到预期波峰点为止。判断波峰点的符合条件的标准是,该周期的某个价格是最高值(如果HiLo=1),或该周期的某个价格是最低值(如果HiLo=-1),且满足转折点左边Bar数的要求。

4. 检查波峰点右边

如果找到波峰点,就从该波峰点的下一个周期(LengthCntr-1)开始往前检查RightStrength个周期,看是否有符合转折点条件的周期,即找到价格最高(如果HiLo=1)或者价格最低(如果HiLo=-1)的周期,且满足转折点右边Bar数的条件。

5. 检查波峰点回溯值

如果找到了符合条件的波峰点,就记录下来。并将InstanceCntr加1,InstanceTest标记为True,以便继续寻找波峰点的回溯值。

6. 检查是否找到目标波峰点

如果InstanceCntr等于Instance,则说明已经找到目标波峰点,将PivotPrice设置为候选价格,将PivotBar设置为LengthCntr,函数返回True。

7. 返回结果

如果成功找到波峰点则返回True,否则将PivotPrice和PivotBar设置为-1,函数返回False。

思考与应用:

思考:这个公式非常好,无论是实用性,延展性还是可借鉴思路,都是很好的一个样例。当然理解公式的过程中,我也经历了几个困惑不解的地方,后来慢慢一点点也攻克完全理解了。而重点就在于对Left/RightStrength这两个参数的正确理解。

拓展:有了这个pivot公式之后,就可以使用Swinghigh,Swinghighbar,Swinglow,Swinglowbar这4个公式来确定转折点的价格和回溯值了。

测试:SwingHighPrice = SwingHigh( 1, Close, 1,2); SwingLowPrice = SwingLow( 1, Close, 1, 2 );这是个简单的找到顶底分形的公式,且没有未来函数,找到的点要等到下一周期的高低点成立才能确定,因此,当高低点确定后,图中的bar定位,和高低的价格定位,都需要向前回溯一个周期。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved