设为首页收藏本站

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

请教一个关于Highest(close,BarsSinceEntry)的问题 [复制链接]

Rank: 2

精华
0
UID
81
积分
79
帖子
17
主题
4
阅读权限
30
注册时间
2007-8-7
最后登录
2019-3-31
跳转到指定楼层
1#
发表于 2007-11-15 11:50:40 |只看该作者 |倒序浏览
if (MarketPosition==1)
        {
             if (CrossOver(CLOSE-CLOSE,MACDDIFF)  or p2 )
           {
                sell;
            }

           if (close<=(AvgEntryPrice*0.98))
           {
             sell;
                }
               
           if (close/Highest(close,BarsSinceEntry)<0.97)
           {
             sell;
           }

       if (Highest(close,BarsSinceEntry)/AvgEntryPrice>1.02 and close<=AvgEntryPrice)
           {
         sell;
           }
        }

这段程序是关于平多,我测试过,当时Highest(close,BarsSinceEntry)没起作用,我的意图是用来计算从第一个建仓位置到当前收盘价的最高值,不知道哪位大侠能解答一下,哪地方出问题了

[ 本帖最后由 nopain 于 2007-11-15 11:57 编辑 ]

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
2#
发表于 2007-11-15 11:59:59 |只看该作者
Highest(Close,BarsSinceEntry);返回建仓之后(不包括建仓Bar的收盘价)到当前Bar的收盘价的最高值!
Highest(Close,BarsSinceEntry+1);返回建仓之后到当前Bar的收盘价的最高值!

如果您觉得不对,可以将这个值通过以下代码输出进行调试!

  1. Commentary("HighestOfClose = "+ Text(Highest(Close,BarsSinceEntry)));
复制代码


如何使用Commentary请参见下贴第1楼Q9:
http://www.tradeblazer.net/forum/thread-905-1-1.html

[ 本帖最后由 nopain 于 2007-11-15 12:02 编辑 ]

使用道具 举报

Rank: 2

精华
0
UID
81
积分
79
帖子
17
主题
4
阅读权限
30
注册时间
2007-8-7
最后登录
2019-3-31
3#
发表于 2007-11-15 13:09:30 |只看该作者

回复 #2 nopain 的帖子

显示的都是N/A,这个是什么原因造成的呢?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
4#
发表于 2007-11-15 13:17:04 |只看该作者
只有在建仓之后,这个值才是有效的!您应该去看建仓后的Bar

使用道具 举报

Rank: 2

精华
0
UID
81
积分
79
帖子
17
主题
4
阅读权限
30
注册时间
2007-8-7
最后登录
2019-3-31
5#
发表于 2007-11-15 13:23:18 |只看该作者

回复 #4 nopain 的帖子

我整体的程序算是这个样子吧
  if (P1)//P1是开仓条件
        {
        buy;
        }
       
        if (MarketPosition==1)
        {
        h2=Highest(close,BarsSinceEntry);

        Commentary("HighestOfClose = "+ Text(Highest(close,BarsSinceEntry)));

           if (close<=(AvgEntryPrice*0.98))
           {
             sell;
                }
               
           if (close/h2<0.97)
           {
             sell;
           }

       if (h2/AvgEntryPrice>1.02 and close<=AvgEntryPrice)
           {
         sell;
           }
        }

你说,如果没有持仓,它能进入if (MarketPosition==1) 吗?如果没进去这个判断,它怎么可能执行 Commentary的命令,所以我看到N/A肯定是建仓后的BAR,没有持仓的BAR根本就不会有这个值

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
6#
发表于 2007-11-15 13:34:22 |只看该作者
您没有提供完整的代码,所以我不知道您的问题原因,以下是一个操作例子:

1、我们先新建一个交易指令Demo,代码如下:
  1. Begin

  2.         If(Open > Close[1] + (High[1]-Low[1])*0.3)
  3.         {
  4.                 Buy(1,Open);
  5.         }

  6.         If(MarketPosition == 1)
  7.         {
  8.                 Commentary("HighestOfClose = "+ Text(Highest(Close,BarsSinceEntry+1)));
  9.         }
  10. End
复制代码


2、把这个交易指令放到图表里面,随便选一个品种,最好是日线。
界面如下:


[ 本帖最后由 nopain 于 2007-11-15 13:38 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 2

精华
0
UID
81
积分
79
帖子
17
主题
4
阅读权限
30
注册时间
2007-8-7
最后登录
2019-3-31
7#
发表于 2007-11-15 13:52:59 |只看该作者

回复 #6 nopain 的帖子

你这个例子是对的,但还是有问题
一、我将BarsSinceEntry+1换为BarsSinceEntry,即
Begin

        If(Open > Close[1] + (High[1]-Low[1])*0.3)
        {
                Buy(1,Open);
        }

        If(MarketPosition == 1)
        {
                Commentary("HighestOfClose = "+ Text(Highest(Close,BarsSinceEntry+1)));
        }
End
就不对了,它的显示值是N/A

第二,我不修改BarsSinceEntry+1,但我在其中加个平仓条件,即Highest(Close,BarsSinceEntry+1)比当前收盘大于1.03,我则平仓,你去测试一下结果,也是不对的,这个highest(Close,BarsSinceEntry+1)的值都是所有BAR中的最高值,而不是从开仓以来的最高值
Begin

        If(Open > Close[1] + (High[1]-Low[1])*0.3)
        {
                Buy(1,Open);
        }

        If(MarketPosition == 1)
        {
                Commentary("HighestOfClose = "+ Text(Highest(Close,BarsSinceEntry+1)));
                               
                                if (Highest(Close,BarsSinceEntry+1)/close>1.03)
                                {
                                 sell;
                                }
        }
End

使用道具 举报

Rank: 2

精华
0
UID
81
积分
79
帖子
17
主题
4
阅读权限
30
注册时间
2007-8-7
最后登录
2019-3-31
8#
发表于 2007-11-15 13:58:08 |只看该作者

回复 #7 xlynmy 的帖子

不好意思,上面第一问题中的程序应该是
Begin

        If(Open > Close[1] + (High[1]-Low[1])*0.3)
        {
                Buy(1,Open);
        }

        If(MarketPosition == 1)
        {
                Commentary("HighestOfClose = "+ Text(Highest(Close,BarsSinceEntry)));
        }
End
将BarsSinceEntry+1换为BarsSinceEntry

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
9#
发表于 2007-11-15 13:58:44 |只看该作者
1、我写的时候就测试过,是可以正常运行的,只是建仓Bar显示的值不对,后面的都是正确的。
2、刚测试了,没有问题。

使用道具 举报

Rank: 2

精华
0
UID
81
积分
79
帖子
17
主题
4
阅读权限
30
注册时间
2007-8-7
最后登录
2019-3-31
10#
发表于 2007-11-15 14:44:15 |只看该作者
第一个问题,将BarsSinceEntry+1换为BarsSinceEntry,程序是这样的
Begin

        If(Open > Close[1] + (High[1]-Low[1])*0.3)
        {
                Buy(1,Open);
        }

        If(MarketPosition == 1)
        {
                Commentary("HighestOfClose = "+ Text(Highest(Close,BarsSinceEntry)));
        }
End
效果图是这样的(用PTA指数)

显示的值是N/A

第二个问题,不修改你DEMO中的BarsSinceEntry+1,加个平仓条件,程序是这样的
Begin

        If(Open > Close[1] + (High[1]-Low[1])*0.3)
        {
                Buy(1,Open);
        }

        If(MarketPosition == 1)
        {
                Commentary("HighestOfClose = "+ Text(Highest(Close,BarsSinceEntry+1)));
                                
                                if (Highest(Close,BarsSinceEntry+1)/close>1.03)
                                {
                                 sell;
                                }
        }
End
效果图是这样的(用铜指数)

显示的值是82918,是铜历史最高点,而不是此次开仓以来的最高点
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

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

bottom

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

GMT+8, 2024-5-22 09:37

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部