以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  简单排序功能  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=87734)

--  作者:zxsd
--  发布时间:2015/11/25 16:54:56
--  简单排序功能
 逐K线模式下

本周期,5条MA(5)、MA(10)、MA(20)、MA(30)、MA(60)中,离1000这条线最近的是哪根线?

请指点

--  作者:jinzhe
--  发布时间:2015/11/25 17:01:06
--  

使用hod2函数

赋值的5个数组为

x[1]:=abs(ma5-1000);

.....

x[5]:=abs(ma60-1000);

 

然后按照hod2函数说明里面的范例做处理

[此贴子已经被作者于2015/11/25 17:01:12编辑过]

--  作者:zxsd
--  发布时间:2015/11/25 17:22:06
--  
 那么:
CU排名:HOD2(X,5,X[1]),LINETHICK0;
这里面的三个参数X,5,X[1]还可以在括号内做计算么?
比如X[1]+aaa或者5-2之类的
[此贴子已经被作者于2015/11/25 17:22:44编辑过]

--  作者:jinzhe
--  发布时间:2015/11/25 17:25:22
--  

那要重新再赋值一个数组了

y[1]:=x[1]+aaa;

类似这样的


--  作者:zxsd
--  发布时间:2015/11/26 10:40:33
--  
 斑竹,昨天还想到一个问题

就是说这5根线怎么区分开1000以上的和1000以下的?(就是说,1000以上的离1000最近排序,以及以下的最近排序)想不到一个简单直观的办法

--  作者:jinzhe
--  发布时间:2015/11/26 10:45:17
--  

这个没办法处理


--  作者:zxsd
--  发布时间:2015/11/26 12:35:55
--  
以下是引用jinzhe在2015/11/26 10:45:17的发言:

这个没办法处理

有没有这种办法,比如,设置两个数组一个放大于1000的线一个放小于1000的线
线判断大于1000的还是小于1000后赋值给对应数组,不对应的赋DARWNULL,然后再分别给两个数组HOD2排序

那么这里有三个问题:
1。drawnull能否赋值给数组
2。drawnull能否参加比较,怎么个算法
3。如果不用drawnull而用零呢?能否赋值?算法是什么?
--  作者:fly
--  发布时间:2015/11/26 13:39:59
--  

2楼写的,就是求离1000最近的。

 

drawnull是无效数,不行

 

下面以IF为例写的,与3500比较的一个尝试例子,供您参考

runmode:0;
VARIABLE: d[3]=0,x[3]=0;

 

ma5:=ma(close,5);
ma10:=ma(close,10);
ma20:=ma(close,20);

 

ma5d:if(ma5>3500,ma5,3500);
ma5x:=if(ma5<3500,ma5,3500);
ma10d:if(ma10>3500,ma10,3500);
ma10x:=if(ma10<3500,ma10,3500);
ma20d:if(ma20>3500,ma20,3500);
ma20x:=if(ma20<3500,ma20,3500);


d[1]:=ma5d-3500;
d[2]:=ma10d-3500;
d[3]:=ma20d-3500;

 

ma5排名:LOD2(d,3,d[1]),LINETHICK0;
ma10排名:LOD2(d,3,d[2]),LINETHICK0;
ma20排名:LOD2(d,3,d[3]),LINETHICK0;

[此贴子已经被作者于2015/11/26 14:15:07编辑过]

--  作者:zxsd
--  发布时间:2015/11/26 17:07:04
--  
 非常感谢
有一个不明白的就是:

d[1]:=ma5d-3500;
d[2]:=ma10d-3500;
d[3]:=ma20d-3500;

 

ma5排名:LOD2(d,3,d[1]),LINETHICK0;
ma10排名:LOD2(d,3,d[2]),LINETHICK0;
ma20排名:LOD2(d,3,d[3]),LINETHICK0;


这个里面,
LOD2(d,3,d[1]),LINETHICK0;

如果d[1]等于零,那么是排第一还是无效还是最后?如果排第一那么上面的方法里ma5d:if(ma5>3500,ma5,3500);只要不满足条件都会赋值3500,这些都是第一了



--  作者:fly
--  发布时间:2015/11/26 17:13:58
--  

8楼写的代码 ,可以直接在图上加载显示。你可以分析一下

 

从逻辑上看,d[X]为0,说明对应均线已经在3500以下了,是你7楼说的另一个数组的数据了