Lowest函数出现错误
各位大神,我做了段移动止盈的代码,调用了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));}
}
测试结果如下图:
highest,lowest等是序列函数,不可以放在条件内进行运算,否则可能因为取值的受限而导致运算结果有误。
建议使用中间变量,在条件外将lowest赋值给中间变量,再将中间变量代入条件中使用即可。 小米 发表于 2018-5-15 16:58 static/image/common/back.gif
highest,lowest等是序列函数,不可以放在条件内进行运算,否则可能因为取值的受限而导致运算结果有误。
建 ...
1、同样的函数,HIGHEST就没出现问题,真奇怪。
2、我已经设置了中间变量,MOSTHIGH 和 MOSTLOW,但MOSTHIGH没问题,而MOSTLOW有问题。
3、该错误不一定是由LOWEST函数引起的,可能是其他原因造成的。 useboy 发表于 2018-5-15 17:13 static/image/common/back.gif
1、同样的函数,HIGHEST就没出现问题,真奇怪。
2、我已经设置了中间变量,MOSTHIGH 和 MOSTLOW,但MOSTH ...
1,highest与lowest是一样的逻辑,一样的用法。。你所说的highest没有问题只是碰巧在当前的运算下没有遇到问题而已。。建议还是以前面所说的方式来使用,善用中间变量。
2,可以使用commentary来调试一下问题到底在哪里
3,建议使用序列变量来替换你代码中的全局变量,再看看。
页:
[1]