设为首页收藏本站

 找回密码
 注册
查看: 2040|回复: 8
打印 上一主题 下一主题

关于zigzag函数的理解问题 [复制链接]

Rank: 1

精华
0
UID
247665
积分
19
帖子
14
主题
5
阅读权限
10
注册时间
2017-2-23
最后登录
2019-9-29
跳转到指定楼层
1#
发表于 2019-9-19 22:07:35 |只看该作者 |倒序浏览
zigzag函数的系统代码如下:
Params
        Numeric RetracePct(3);
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;
                        PreBar = CurrentBar;
                       
                }               
        }
If( NewTL)
        {
                PlotNumeric("ZigZag",SwingPrice,0,-1,1);
               
        }Else If(UpdateTL)
        {
                If (UpDn == UpDn[1])
                {
                        Unplot("ZigZag",PreBar - PreBar[1]+1);
                        PlotNumeric("ZigZag",SwingPrice,0,-1,1);
                  
                }Else
                {
                        PlotNumeric("ZigZag",SwingPrice,0,-1,1);
                       
                }
        }                               
End

我想找到上一个转折点到当前的索引值,并用 PlotString("txt","转折点",Close,Red)画在图上;应该怎样实现?

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2019-9-20 11:18:49 |只看该作者
If (UpDn == UpDn[1])
                {
                        Unplot("ZigZag",PreBar - PreBar[1]+1);
                        PlotNumeric("ZigZag",SwingPrice,0,-1,1);
                                                PlotString("txt","转折点",Close,Red,1);
                  
                }Else
                {
                        PlotNumeric("ZigZag",SwingPrice,0,-1,1);
                                                PlotString("txt","转折点",Close,Red,1);
                        
                }

使用道具 举报

Rank: 1

精华
0
UID
247665
积分
19
帖子
14
主题
5
阅读权限
10
注册时间
2017-2-23
最后登录
2019-9-29
3#
发表于 2019-9-20 11:50:56 |只看该作者
小米 发表于 2019-9-20 11:18
If (UpDn == UpDn[1])
                {
                        Unplot("ZigZag",PreBar - PreBar[1]+1) ...

老师,不对啊,我这么写了,标出来的转折点明显多了。比zigzag函数画出来的连线的转折点多的多。

这个对于你们来说简单的问题,困扰我好几天了。

跪求帮忙找到真正的转折点把,我知道是未来函数,没想在当前BAR就标出来,只想把历史上真正的转折点找出来。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
4#
发表于 2019-9-20 13:21:16 |只看该作者
hunter1988 发表于 2019-9-20 11:50
老师,不对啊,我这么写了,标出来的转折点明显多了。比zigzag函数画出来的连线的转折点多的多。

这个对 ...

Params
        Numeric RetracePct(3);
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;
                        PreBar = CurrentBar;
                        
                }               
        }
If( NewTL)
        {
                PlotNumeric("ZigZag",SwingPrice,0,-1,1);
                                PlotString("txt","转折点",Close,Red,1);
               
        }Else If(UpdateTL)
        {
                If (UpDn == UpDn[1])
                {
                        Unplot("ZigZag",PreBar - PreBar[1]+1);
                        PlotNumeric("ZigZag",SwingPrice,0,-1,1);
                                                Unplot("txt",PreBar - PreBar[1]+1);
                                                PlotString("txt","转折点",Close,Red,1);
                  
                }Else
                {
                        PlotNumeric("ZigZag",SwingPrice,0,-1,1);
                                                PlotString("txt","转折点",Close,Red,1);
                        
                }
        }                                
End

使用道具 举报

Rank: 1

精华
0
UID
247665
积分
19
帖子
14
主题
5
阅读权限
10
注册时间
2017-2-23
最后登录
2019-9-29
5#
发表于 2019-9-21 22:12:33 |只看该作者
本帖最后由 hunter1988 于 2019-9-21 22:14 编辑
小米 发表于 2019-9-20 13:21
Params
        Numeric RetracePct(3);
Vars        


谢谢老师,我是忘记把标错的点删除了,少了一句Unplot("txt",PreBar - PreBar[1]+1);

如果我想加一个判断,来实现开仓:
1.如果上一个转折点的价格比上上一个转折点是上涨的,则价格回落至涨幅的1/2,开多;
2.如果上一个转折点的价格比上上一个转折点是下跌的,则价格反弹至涨幅的1/2,开空;

我自己写了一个:

If( NewTL)
        {
                PlotNumeric("ZigZag",SwingPrice,0,-1,1);
                                PlotString("txt","转折点",Close,Blue,1);//输出转折点;
                                //在这里开仓的条件语句,应怎样描述上一个和上上一个转折点,不太会。请老师指点。
               
        }Else If(UpdateTL)
        {
                If (UpDn == UpDn[1])
                {
                        Unplot("ZigZag",PreBar - PreBar[1]+1);
                        PlotNumeric("ZigZag",SwingPrice,0,-1,1);
                                    Unplot("txt",PreBar - PreBar[1]+1);//删除标错的转折点;
                                     PlotString("txt","转折点",Close,Green,1);//输出转折点;
                                   //以下是开仓语句(请老师帮忙看一下写的对不对?);
                                  If (C(PreBar - PreBar[1]+1)>C(PreBar - PreBar[1]+1+1) And C==(C(PreBar - PreBar[1]+1)+C(PreBar - PreBar[1]+1+1))/2)//上一个转折点比上上一个转折点是上涨的,且当前价格回落至涨幅的1/2;
                                              Buy(1,Close);//开多;
                                Else if(C(PreBar - PreBar[1]+1)<C(PreBar - PreBar[1]+1+1) And C==(C(PreBar - PreBar[1]+1)+C(PreBar - PreBar[1]+1+1))/2) //上一个转折点比上上一个转折点是下跌的,且当前价格反弹至跌幅的1/2;
                                        Sell(1,Close);//开空;

                  
                }Else
                {
                        PlotNumeric("ZigZag",SwingPrice,0,-1,1);
                                         PlotString("txt","转折点",Close,Red,1);
                                        //在这里开仓的条件语句,应怎样描述上一个和上上一个转折点,不太会。请老师指点。
                        
                }
        }                                
End

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
6#
发表于 2019-9-23 10:08:10 |只看该作者
hunter1988 发表于 2019-9-21 22:12
谢谢老师,我是忘记把标错的点删除了,少了一句Unplot("txt",PreBar - PreBar[1]+1);

如果我想加一个判 ...

zigzag是转折点是使用未来数据计算得到的。。
用其来做买卖点是一个完全不可取的想法,根本没法实际交易的。

使用道具 举报

Rank: 1

精华
0
UID
247665
积分
19
帖子
14
主题
5
阅读权限
10
注册时间
2017-2-23
最后登录
2019-9-29
7#
发表于 2019-9-23 22:54:59 |只看该作者
小米 发表于 2019-9-23 10:08
zigzag是转折点是使用未来数据计算得到的。。
用其来做买卖点是一个完全不可取的想法,根本没法实际交易 ...

老师,我知道zigzag是未来函数。我没想用它来交易。

我的本意:找一段上涨行情,然后回调至涨幅的1/2,开多。

怎样寻找一段上涨行情呢?利用zigzag函数啊,比如上一个转折点比上上一个转折点有20%的涨幅,我等回落一半的时候买。

如果不用zigzag函数,老师给个指导意见,怎么实现我的思路呢?

使用道具 举报

Rank: 1

精华
0
UID
247665
积分
19
帖子
14
主题
5
阅读权限
10
注册时间
2017-2-23
最后登录
2019-9-29
8#
发表于 2019-9-29 11:58:00 |只看该作者
小米 发表于 2019-9-23 10:08
zigzag是转折点是使用未来数据计算得到的。。
用其来做买卖点是一个完全不可取的想法,根本没法实际交易 ...

老师,我的贴子算沉了吗?

我知道zigzag是未来函数,但是我采用了其他的使用方法,请老师指导一下如何实现我的思路?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
9#
发表于 2019-9-29 13:27:58 |只看该作者
hunter1988 发表于 2019-9-29 11:58
老师,我的贴子算沉了吗?

我知道zigzag是未来函数,但是我采用了其他的使用方法,请老师指导一下如何实 ...

抱歉呢,没有什么指导意见可给到您的。。自己试一下吧。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-4-26 12:25

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部