IndicatorBuffers(6);
在init 内部。
ArraySort(ind_buffer5,barss,1,MODE_DESCEND);
这是要干什么?为什么? 指标数组好象不能排序吧,排后成什么了?
你似乎是要找最近130个bar 以来的Close和MA的差值的最大值, 那就编程查找,不要用sort吧。
或者使用自定义数组,复制130个,再排,不要用指标数组排序
IndicatorBuffers(6);
在init 内部。
ArraySort(ind_buffer5,barss,1,MODE_DESCEND);
这是要干什么?为什么? 指标数组好象不能排序吧,排后成什么了?
你似乎是要找最近130个bar 以来的Close和MA的差值的最大值, 那就编程查找,不要用sort吧。
或者使用自定义数组,复制130个,再排,不要用指标数组排序
“你似乎是要找最近130个bar 以来的Close和MA的差值的最大值”,不仅如此,我还要找他们依次的三个“峰值”的平均数值!所以才要排序,
但是没想到这个ArraySort不能给指标数值排序的。没想到要这么复杂,按照我上边的虽然导入到图表编译后可以显示,但是有时会有错误。
所以还是要请教您“ 那就编程查找,不要用sort”中编程的逻辑算法,这个没想出来(抱歉我没学过编程,只是自学了下MQL4=_=)!
另外“使用自定义数组,复制130个”这个方式我还没见过怎么复制,有没有指标的例子?或者您给一段代码?谢谢!麻烦您了!!
double array1[130];
ArrayCopy(array1,ind_buffer5,0,0,130);
ArraySort(array1,WHOLE_ARRAY,0,MODE_DESCEND);
然后这个用来计算SMAX7。
至于SMIN8用什么算,我不明白你的意思,既然排序了,ind_buffer5[barss-1]是什么?没排的? 那么下次呢?
double array1[130];
ArrayCopy(array1,ind_buffer5,0,0,130);
ArraySort(array1,WHOLE_ARRAY,0,MODE_DESCEND);
然后这个用来计算SMAX7。
至于SMIN8用什么算,我不明白你的意思,既然排序了,ind_buffer5[barss-1]是什么?没排的? 那么下次呢?
谢谢您的回复!“SMIN8用什么算”也是这个意思,不过我用“ind_buffer5[barss-1]“ 是用的从小到大数的三个数组
barss-1 就是倒数第二个,barss-2 是倒数第三个,不知这样用对否?
谢谢DxdCn 老师的指点,根据您的方法,我的问题“2,黄色线正常计算但是红色线出现随价格变化慢慢变小的情况”解决了,
但是问题“1,在主图添加指标后不会显示,必须在代码编译器里点击编译按钮才会在主图显示,”还是没能够解决,看来还要麻烦您!
请见谅!我把重新编辑好的文件传上来,您下载了看下,这个问题到底是怎么个原因?
在主图添加指标后不会显示
必须在代码编译器里点击编译按钮才会在主图显示,输出数据正常。
但切换图表周期后同样不显示,输出数据是错误的,如下图:
barss-1 就是倒数第二个,barss-2 是倒数第三个,
也是这个意思 是什么意思? 要知道排序会不到移动顺序, 那么随时间推移,barss-1附近实际大约是有记录以来排序后的从高到低的第barss-1个值。 这部分代码意思 跟那 130个最近值的最大值 完全不同。所以我不知道你什么意思。
???三个数组?
你的 barss=130; 倒数? 从哪里数是倒数? 又是从哪里排序的?排的什么?
问问题,请首先自己表达清晰,不然无法网络交流的。请自己修改吧。
刷新问题,请在init里或者start里使用 RefreshRates();