

为什么这里的代码获取的两个值是不一致的?
我现在想获取某一个区间的最小值,那如何获取?
我有个猜测 倒腾半天没有搞出来该怎么验证
b1-a1 会出现负数,highest和lowest里面用了for
测试了一下 for 如果是 to负数 ,就直接跳过了 不会进入循环
然后会出现什么就不知道了
也可能不止这一个地方会出现问题
你说的应该有道理
出现了负值
怎么突然开始挖坟
还真是。。。
上面一个同学
周六跟的贴.......7号的
他跟了帖却没有发任何代码。
嘿 有道理!~!!!
我有个猜测 倒腾半天没有搞出来该怎么验证
b1-a1 会出现负数,highest和lowest里面用了for
测试了一下 for 如果是 to负数 ,就直接跳过了 不会进入循环
然后会出现什么就不知道了
也可能不止这一个地方会出现问题
他这种条件在0轴以上计算没问题
0轴以下是负数
0轴以上也没对,用abs也没对
我猜还跟用序列变量做参数的函数,调取一次才传一次参数,传入序列参数重新组成了新的序列变量作为下一次调用的计算基础
如果周期数不断在变化,有可能单独存储的序列就乱了。
以上是我的猜测
所以,我想验证 highest和lowest函数在计算的时候,到底是取的哪几根bar上的值,但是还没想出来该怎么print
我自定义了一个函数,不传入序列变量,只传入周期数计算,数据就是正确的了。
Defs
//此处添加策略函数
Numeric LL_my (Integer K)
{
//print("\n");
//print("===============");
Integer i;
Array<Numeric> arr;
for i = 1 to k
{
ArrayPushBack(arr, low[i]);
////print("CurrentBar=" + text(CurrentBar));
////print("datetime=" + DateTimeToString(date + time));
////print("low["+text(i)+"]=" + text(low[i]));
}
numeric result = LowestArray(arr);
// result = Lowest(low[1],K); //错误写法,不过其实我没有理解为什么这样传给lowest不行,但是一个个传给diy函数却可以
Return result ;
}那问题就简单了
应该是est函数内部算法
自己改写一下就行了
看看源码应该知道问题在哪了
我印象中
ave函数以前也是
后来官方改过一次
avgFC以前也是这样
不让传参数
自己重新一个
源码我也还是看不出问题
因为源码上也看不出哪些bar的数据传进来了 哪些没有
就尴尬了
当我啥也没说😊
我也遇到了同样的问题,lowest(low[a] , b) ,当a=1,b=2的时候 ,与lowest(low[1] , 2) , 得出来的不一样。
确定没放在条件语句里, 直接隶属于onbar下面
是Range[0:DataCount-1] 下层
这个代码,确定值是不一样的,没想明白原因,也没放条件里,也没去回溯值,怎么就会不一样呢

这里L[a1]的问题。a1在每根bar上的值如果不一样,那么传入函数内部的回溯对象也不一样,会导致函数内部的值产生错误。这个问题需要深入理解函数传入参数及函数执行的机制。
这就跟我猜的差不多了,肯定是a1发生变化,导致传参以后内部数据发生变化了。
一开始就是因为没提供这些线索才无法确认问题出在哪里
真不是a1发生变化了,因为只要在那个地方写个循环,用a1,就会得出根lowest不一样的正确值,如果是参数变化了,用a1也是一样的

我一直觉得程序员是不太会争论问题的,因为代执行结果会说明一切。
talk is cheap,show me the code
我做了测试,我写在主程序里,两个结果是一样的
没放条件语句,onbar里面写的, 只不过a1和b1是变量,如果a1和b1,固定不变的话值是对的,但是问题是为什么a1和b1发生变化,它就不一致了呢,没想明白原因。而且那个莫名其秒的值怎么出来的

按照你的描述完全无法复现你说的结果
这个代码,确定值是不一样的,没想明白原因,也没放条件里,也没去回溯值,怎么就会不一样呢
我把lowest函数,重新写了一个,加了一个回溯数的参数,直接把a1,给进去,他计算的就没有问题!!
lowest1(L, a1-ba, a1);
您好!您这段代码是不是放在一个条件语句里?