设为首页收藏本站

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

Lowest函数出现错误 [复制链接]

Rank: 1

精华
0
UID
264118
积分
13
帖子
6
主题
3
阅读权限
10
注册时间
2018-4-4
最后登录
2018-5-15
跳转到指定楼层
1#
发表于 2018-5-15 15:51:04 |只看该作者 |倒序浏览
各位大神,我做了段移动止盈的代码,调用了HIGHEST 和 LOWEST 函数,在测试时LOWEST函数出现错误信号,在做空的时候,在同一根BAR上出现开平仓,而HIGHEST函数不会,不知是什么原因?求大神指点一下。
代码如下:
  //移动止盈代码
        OpenCount = CurrentBar - GetGlobalVar(1); //计算开仓K线到当前K线的个数
        If(MarketPosition == 1  )
        {
                MostHigh=Highest(High , OpenCount); //计算开仓后到当前K线为止的最高价
                If(MostHigh-GetGlobalVar(0)>=WinPoint*MinMove*PriceScale) //开仓后最大浮盈(以价格计算)超过止盈起始值
                {BuyStopWin = MostHigh-(MostHigh - GetGlobalVar(0)) * StopWin;} //计算止盈价格
                If(Close <= BuyStopWin) //达到止盈条件时止盈
                {Sell(0, Min(Open, BuyStopWin));}
        }
        If(MarketPosition == -1 )
        {
                MostLow=Lowest(Low , OpenCount);
                If(GetGlobalVar(0)-MostLow >=WinPoint*MinMove*PriceScale)
                {SellStopWin = MostLow + (GetGlobalVar(0) - MostLow) * StopWin;}
                If(Close >= SellStopWin)
                {BuyToCover(0, Max(Open, SellStopWin));}
        }

测试结果如下图:
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2018-5-15 16:58:53 |只看该作者
highest,lowest等是序列函数,不可以放在条件内进行运算,否则可能因为取值的受限而导致运算结果有误。
建议使用中间变量,在条件外将lowest赋值给中间变量,再将中间变量代入条件中使用即可。

使用道具 举报

Rank: 1

精华
0
UID
264118
积分
13
帖子
6
主题
3
阅读权限
10
注册时间
2018-4-4
最后登录
2018-5-15
3#
发表于 2018-5-15 17:13:21 |只看该作者
小米 发表于 2018-5-15 16:58
highest,lowest等是序列函数,不可以放在条件内进行运算,否则可能因为取值的受限而导致运算结果有误。
建 ...

1、同样的函数,HIGHEST就没出现问题,真奇怪。
2、我已经设置了中间变量,MOSTHIGH 和 MOSTLOW,但MOSTHIGH没问题,而MOSTLOW有问题。
3、该错误不一定是由LOWEST函数引起的,可能是其他原因造成的。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
4#
发表于 2018-5-16 08:48:36 |只看该作者
useboy 发表于 2018-5-15 17:13
1、同样的函数,HIGHEST就没出现问题,真奇怪。
2、我已经设置了中间变量,MOSTHIGH 和 MOSTLOW,但MOSTH ...

1,highest与lowest是一样的逻辑,一样的用法。。你所说的highest没有问题只是碰巧在当前的运算下没有遇到问题而已。。建议还是以前面所说的方式来使用,善用中间变量。
2,可以使用commentary来调试一下问题到底在哪里
3,建议使用序列变量来替换你代码中的全局变量,再看看。

使用道具 举报

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

bottom

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

GMT+8, 2024-4-25 13:58

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部