@禅;您能否帮我将以下Tradestation代码转换为MT4:插入的代码{Choppy Market Index Function这个函数返回一个从0到100的值。一个较低的值表示较高的市场犹豫不决(choppiness),而一个较高的值表示一个趋势市场。唯一的输入是我们回顾的条数。}输入:periodLength(Numeric); Vars:num(0),denom(1);如果(periodLengthlt; gt; 0)则开始denom =最高(高,periodLength) - 最低(低,periodLength); num =关闭#91; periodLength-1#93; - 关; num = AbsValue(num); ChoppyMarketIndex = 0.0; if(denomlt; gt; 0)then ChoppyMarketIndex = numdemon * 100;结束;你有没有注意到这个函数是如何由其他函数组成的?我们使用Highest和Lowest函数计算了denom(分母)。我们通过使用AbsValue(返回数字的绝对值)函数来计算num(分子)。这个函数中唯一令人困惑的代码片段可能是:插入代码关闭#91; periodLength-1#93; - 关闭您可能会问,为什么我们从periodLength减去1。这是一个很好的问题。如果您将今天的收盘价纳入计算中,那么30天前的收盘价将以Close [29]为参考。记住Close [1]是昨天的收盘价,而不是今天的收盘价。既然我们希望我们的指数在0到100之间,我们就消除了市场下跌的负面信号。我们只对绝对距离感兴趣。这是我想出来的,但不知道它编码是否正确:插入代码double ChoppyMarketIndex(int periodLength){double num = 0;双denom = 0; if(periodLength!= 0){denom = High#91; iHighest(Symbol(),PERIOD_D1,MODE_HIGH,periodLength,0)#93; - 低#91; iLowest(符号(),PERIOD_D1,MODE_LOW,periodLength,0)#93 ;; num =关闭#91; periodLength-1#93; - 关闭#91; 1#93 ;; num = MathAbs(num);/denom = MathAbs(denom); } if(denom!= 0){return(NormalizeDouble(numdenom * 100,0)); } } 提前致谢,