lowest函数两种写法获取的值不一致
为什么这里的代码获取的两个值是不一致的?我现在想获取某一个区间的最小值,那如何获取?
为什么这里的代码获取的两个值是不一致的?我现在想获取某一个区间的最小值,那如何获取?
我有个猜测 倒腾半天没有搞出来该怎么验证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);
您好!您这段代码是不是放在一个条件语句里?