以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 请教循环语句中的赋值问题 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=165466) |
-- 作者:马立秋 -- 发布时间:2018/9/11 17:09:11 -- 请教循环语句中的赋值问题 //这个指标是实现30天内成交量排序 能直观看到那天最大量 最小量 input:n(30,1,9999); vv:=vol; dt:=datacount;// tmp:=sort(vv,0,dt-n+1,dt);//取消这句 最终显示为当前向前推30-1的倒排序28 29 30 怎么会这样呢? vvv:v,volstick; sp:=c*0;//提前声明c为序列变量 并将每日价格赋值为 0 for i=dt downto dt-n+1 do begin //从最后周期向前循环 for j=dt downto dt-n+1 do begin //从最后周期向前循环 if vvv[j]=vv[i] then sp[j]:=i; end; end; drawnumber(barpos>dt-n,v,sp-(dt-n),0),pxup50,align0; ------------------------------------------------------------------ 老师,请教2个问题? 1、这句话“tmp:=sort(vv,0,dt-n+1,dt);”意思是排序赋值给tmp,对吧?但是这个赋值后面的代码中没有被使用到,可是又不能删除,删除了这个指标的值就变化了。这是怎么回事呢?这个赋值tmp是如何参与计算的呢? 2、这句循环的意思是不是这样理解? if vvv[j]=vv[i] then //如果 j日的量=i日的量 sp[j]:=i; //j的循环=序列数据量
[此贴子已经被作者于2018/9/11 17:10:33编辑过]
|
-- 作者:FireScript -- 发布时间:2018/9/11 17:30:40 -- 1.sort排序改变了 vv的值情况,也就是使得VV的值进行了排序了,但不影响vol本身。 2.这个注释没怎么看明白呢。
|
-- 作者:马立秋 -- 发布时间:2018/9/12 9:13:33 -- 1、排序后的值,不是已经赋值个tmp了吗?后期使用的话,不是应该要调用tmp吗?上面的语句中vv=vol啊!这应该如何理解呢? 2、那个注释是我理解后写的。不知道对不对?正确的该如何理解呢?
|
-- 作者:FireScript -- 发布时间:2018/9/12 9:51:43 -- 1.sort返回的只是数据量,就是你参与排序的数据量。排序结果体现在VV的改变上。vv:=vol 是复制出来一个和vol值一样的变量保存排序结果而已。因为后面还需要对排序和未排序的进行对比。 2. 序号 1 2 3 4 5 6 12 13 14 15 16 17 14 16 12 17 13 15 2组数据,红色一组已经排序了(vv),黄色一组是原始数据(vvv)。 上面那个代码的操作举例说明: 取红色有序数值倒数第一个值,17 在黄色数值中进行依次对比,序号(从左到右)为4的黄色数据值也等于17,保存这个序号。然后继续下一个红色数据16,继续在黄色数组中寻找对应的值,以此类推。 最后的sp结果: 3 5 1 6 2 4 其实就是获取原始数组每个值的在这6个数字里面的排名而已。 |
-- 作者:马立秋 -- 发布时间:2018/9/12 11:15:22 -- 多谢“FireScript”老师 我再消化消化
|