以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  求老师把这个函数 改成金字塔的  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=87808)

--  作者:落生1
--  发布时间:2015/11/27 16:28:49
--  求老师把这个函数 改成金字塔的
Params
Numeric RetracePct(2);
Vars
NumericSeries SwingPrice;
Numeric SwingHighPrice;
Numeric SwingLowPrice;
NumericSeries PreBar(0);
NumericSeries UpDn(0);
Bool SaveSwing(False);
Bool NewTL(False);
Bool UpdateTL(False);
begin
If(CurrentBar == 0)
SwingPrice = Close;
SwingHighPrice = SwingHigh( 1, Close, 1,2);
SwingLowPrice = SwingLow( 1, Close, 1, 2 );
If (SwingHighPrice <> -1)
{
If(UpDn <=0 && SwingHighPrice >= SwingPrice * (1+RetracePct*0.01))
{
UpDn = 1;
NewTL = True;
SaveSwing = True;
}Else If(UpDn == 1 && SwingHighPrice >= SwingPrice)
{
UpdateTL = True;
SaveSwing = True;
}

If(SaveSwing)
{
SwingPrice = SwingHighPrice;
PreBar = CurrentBar;
}
}Else If(SwingLowPrice <> -1)
{
If(UpDn >=0 && SwingLowPrice <= SwingPrice * (1-RetracePct*0.01))
{
UpDn = -1;
NewTL = True;
SaveSwing = True;
}Else If(UpDn == -1 && SwingLowPrice <= SwingPrice)
{
UpdateTL = True;
SaveSwing = True;
}

If(SaveSwing )
{
SwingPrice = SwingLowPrice;


--  作者:yukizzc
--  发布时间:2015/11/27 16:35:56
--  

请把函数的说明标注下,或者把您的思路整理下用中文描述。


--  作者:落生1
--  发布时间:2015/11/27 16:41:39
--  

1对计算位置进行初期化
1.1
判断是否是第一次进行高低点计算,如果是,则设定计算位置为除去ExtDepth个图形最初的部分。
1.2
如果之前已经计算过,找到最近已知的三个拐点(高点或低点),将计算位置设置为倒数第三个拐点之后,重新计算最后的拐点。

2.从步骤1已经设置好的计算位置开始,将对用于存储高低点的变量进行初始化,准备计算高低点
2.1
计算ExtDepth区间内的低点,如果该低点是当前低点,则进行2.1.1的计算,并将其记录成一个低点。
2.1.1
如果当前低点比上一个低点值小于相对点差(ExtDeviation);并且之前ExtBackstepBars的记录的中,高于当前低点的值清空。
2.2
高点的计算如同2.1以及分支处理2.1.1

3.从步骤1已经设置好的计算位置开始,定义指标高点和低点
3.1
如果开始位置为高点,则接下来寻找低点,在找到低点之后,将下一个寻找目标定义为高点
3.2
如果开始位置为低点,则与3.1反之。