欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 如何筛选出“主流”平均值?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2861人关注过本帖树形打印复制链接

主题:如何筛选出“主流”平均值?

帅哥哟,离线,有人找我吗?
yanxc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小飞侠 帖子:2046 积分:2707 威望:0 精华:1 注册:2011/6/14 14:49:49
如何筛选出“主流”平均值?  发帖心情 Post By:2014/7/4 12:26:04    Post IP:171.88.42.75[只看该作者]

例如,过去几天的增长率分别是:0.06、0.05、0.05、0.07、0.01、0.07、0.08、0.09、0.06、-0.02、0.07、0.08

 

希望把距离其他值最远的0.01、-0.02去掉,或者直接取得最“主流”的值0.07(它与其他数值的差距都在0.02之内,而0.01、-0.02距离大家都太远,视为异常)。

 

比较笨的算法,就是计算所有数值之间的差,“差<=0.02”的次数最多的那个值就是我们要找的数,在这里就是0.07

 

请问这个代码该怎么写呢?

或者有没有简单的函数可以直接表达这个意思?即计算抛弃掉与其他值的差比较大的少数值之后的平均值。


 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/7/4 13:16:07    Post IP:58.246.57.26[只看该作者]

把这个赋值给一个数组

然后用sort排序

获取中间的数值



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
yanxc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小飞侠 帖子:2046 积分:2707 威望:0 精华:1 注册:2011/6/14 14:49:49
  发帖心情 Post By:2014/7/4 14:48:10    Post IP:171.88.42.75[只看该作者]

以下是引用jinzhe在2014/7/4 13:16:07的发言:

把这个赋值给一个数组

然后用sort排序

获取中间的数值

能举个例子吗?如何获取“中间”的数值


 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/7/4 14:55:01    Post IP:58.246.57.26[只看该作者]

比如你数组总共有10个元素,那么在排序之后就使用第五个元素

 



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
yanxc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小飞侠 帖子:2046 积分:2707 威望:0 精华:1 注册:2011/6/14 14:49:49
  发帖心情 Post By:2014/7/4 15:18:36    Post IP:171.88.42.75[只看该作者]

以下是引用jinzhe在2014/7/4 14:55:01的发言:

比如你数组总共有10个元素,那么在排序之后就使用第五个元素

 


我要的并非这个结果啊。你这个是取中值。

 

我要的是排除掉离“主体”比较远的值,取剩下主流部分的均值。


 回到顶部
帅哥哟,离线,有人找我吗?
yanxc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小飞侠 帖子:2046 积分:2707 威望:0 精华:1 注册:2011/6/14 14:49:49
  发帖心情 Post By:2014/7/4 15:22:15    Post IP:171.88.42.75[只看该作者]

比如以一周的 H-ref(H,1) 值来排序,其中2个特别离谱,离得很远,就不要了。剩下的5个比较接近,取平均值。

如何做?


 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/7/4 15:44:04    Post IP:58.246.57.26[只看该作者]

举个简单的例子,如果你的元素太多太复杂的话,那么这样的也没用了

 

variable:ss=0,kk=0;
hh:H-ref(H,1);
h1:ref(hh,1);
h2:ref(hh,2);
h3:ref(hh,3);
h4:ref(hh,4);
if (hh-h1)<=0.02 and (hh-h2)<=0.02 and (hh-h3)<=0.02 and (hh-h4)<=0.02 then begin
      ss:=ss+hh;
      kk:=kk+1;
end

if (h1-hh)<=0.02 and (h1-h2)<=0.02 and (h1-h3)<=0.02 and (h1-h4)<=0.02 then begin
      ss:=ss+h1;
      kk:=kk+1;
end
if (h2-h1)<=0.02 and (h2-hh)<=0.02 and (h2-h3)<=0.02 and (h2-h4)<=0.02 then begin
      ss:=ss+h2;
      kk:=kk+1;
end

if (h3-h1)<=0.02 and (h3-h2)<=0.02 and (h3-hh)<=0.02 and (h3-h4)<=0.02 then begin
      ss:=ss+h2;
      kk:=kk+1;
end
if (h4-h1)<=0.02 and (h4-h2)<=0.02 and (h4-h3)<=0.02 and (h4-hh)<=0.02 then begin
      ss:=ss+h4;
      kk:=kk+1;
end
avg:ss/kk;



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
yanxc
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小飞侠 帖子:2046 积分:2707 威望:0 精华:1 注册:2011/6/14 14:49:49
  发帖心情 Post By:2014/7/5 13:10:53    Post IP:171.88.42.75[只看该作者]

以下是引用jinzhe在2014/7/4 15:44:04的发言:

举个简单的例子,如果你的元素太多太复杂的话,那么这样的也没用了

 

variable:ss=0,kk=0;
hh:H-ref(H,1);
h1:ref(hh,1);
h2:ref(hh,2);
h3:ref(hh,3);
h4:ref(hh,4);
if (hh-h1)<=0.02 and (hh-h2)<=0.02 and (hh-h3)<=0.02 and (hh-h4)<=0.02 then begin
      ss:=ss+hh;
      kk:=kk+1;
end

if (h1-hh)<=0.02 and (h1-h2)<=0.02 and (h1-h3)<=0.02 and (h1-h4)<=0.02 then begin
      ss:=ss+h1;
      kk:=kk+1;
end
if (h2-h1)<=0.02 and (h2-hh)<=0.02 and (h2-h3)<=0.02 and (h2-h4)<=0.02 then begin
      ss:=ss+h2;
      kk:=kk+1;
end

if (h3-h1)<=0.02 and (h3-h2)<=0.02 and (h3-hh)<=0.02 and (h3-h4)<=0.02 then begin
      ss:=ss+h2;
      kk:=kk+1;
end
if (h4-h1)<=0.02 and (h4-h2)<=0.02 and (h4-h3)<=0.02 and (h4-hh)<=0.02 then begin
      ss:=ss+h4;
      kk:=kk+1;
end
avg:ss/kk;

 

这个方法有问题啊。

 

实际情况是,可能没有一个值 是与其他每个值的差都小于0.02的。

必须“抛弃”某一两个偏离主流数据比较远的值,才找得出我们想要的那个值。

 

比如顶楼的0.01就远离了其他值的区间,需要去掉它才行。


 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/7/7 9:29:09    Post IP:58.246.57.26[只看该作者]

那这样就不行了,你要的东西太智能了,你去高级区发帖问问


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/7/7 9:30:05    Post IP:58.246.57.26[只看该作者]

或者是

if kk=0 then drawtext(islastbar,close,'没有满足符合项');

if kk<>0 then avg:ss/kk;



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部