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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 求波幅平均值

   

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


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

主题:求波幅平均值

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


加好友 发短信
等级:管理员 帖子:26631 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/8/7 14:43:17    Post IP:180.169.30.6[显示全部帖子]

你的问题,通过yukizzc的方式也处理不了,这个是应sma(ema)函数算法造成的,数据发生过变化其值就可能发生变化,尤其是数据量的影响。

建议你限制死数据起始位置、

[此贴子已经被作者于2017/8/7 14:44:52编辑过]


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26631 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/8/7 15:02:20    Post IP:180.169.30.6[显示全部帖子]

说的就是这个


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26631 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/8/7 16:32:44    Post IP:180.169.30.6[显示全部帖子]

限定其实位置是通过,k线时间坐标轴上右键进行的。

至于你说的代替方式,要看你自己是有什么替代方案了。

 

[此贴子已经被作者于2017/8/7 16:42:26编辑过]


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26631 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/8/7 22:53:01    Post IP:180.158.246.145[显示全部帖子]

抱歉,前面在代码分析方向上有问题,在没有认为增加k线参与计算时,是不会造成起始位置出现变化的。所以前面说的问题不是这个原因影响的。
代码修改部分见红色部分、

RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:SMA(RSV,3,1),LINETHICK1;
D:SMA(K,3,1),LINETHICK1;
J:=3*K-2*D;
//KD金死叉 
bjKDjc:cross(K,D),linethick0;
bjKDsc:cross(D,K),linethick0;
bar:sumbars(bjkdjc=1 or bjkdsc=1,100);//取得100个波段占用的周期数

// KD 平均波段值,同时作为钝化的辅助定义。
BoDuanLLV:ref(llv(l,5),sumbars(bjkdjc,1)),linethick0;                     //波段低点
BoDuanHHV:ref(hhv(h,5),sumbars(bjkdsc,1)),linethick0;          //波段高点
if   bjkdjc or bjkdsc then
 begin
      frontBoFu:=abs(BoDuanHHV-BoDuanLLV),linethick0;
      my_bar:=BARPOS; //记录在金叉或死叉时k线所在位置,作为求平均波段的其中一个计算因子。
 end
else
 BEGIN
  frontBoFu:=0; //非金叉死叉的情况下,序列变量frontBoFu赋值为0.那么求100个波段的总和就是bar个周期范围内非0的总和,而不受k线变化的影响
 end


pjBoFu : sum(frontBoFu,bar)/my_bar;                           //平均波段值
bjKDFrontBoFuMulti: FrontBoFu[my_bar]/pjBoFu,linethick0;       //前一波大于平均波段倍数


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26631 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/8/8 14:35:43    Post IP:180.169.30.6[显示全部帖子]

什么位置明白的可以直接问,前面的分析方向不对给你造成的不便,深表歉意。
[此贴子已经被作者于2017/8/8 14:35:59编辑过]


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26631 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/8/8 22:33:07    Post IP:180.158.246.16[显示全部帖子]

问题1,不理解什么问题,贴图可以使用ie浏览器
问题2. 这个是数据量不足造成的,需要你扩从数据最低要满足100个波段的数据参与计算,否则自然数值出现




编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26631 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/8/9 11:04:25    Post IP:180.169.30.6[显示全部帖子]

1.这个问题有回到了sma递归算法问题上去了,使用的数据量不同,sma在之后的返回结果自然会影响到相关变量

2.问题2的原因是因为  my_bar:BARPOS; 这个因为k线数据量不断增加barpos定位的值就越大,造成后面其作为分母参与计算的值pjBoFu越来越小,同时也造成了FrontBoFu[my_bar]/pjBoFu越开越大,反比关系。

 

 

 

[此贴子已经被作者于2017/8/9 11:09:47编辑过]


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26631 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/8/9 14:39:51    Post IP:180.169.30.6[显示全部帖子]

我在问题二中已经说明了具体原因。这种问题你只能限制自己的k线使用量。你因为不断调试扩充数据造成BARPOS越来越大,自然就会这样。

 

因为  my_bar:BARPOS; 这个因为k线数据量不断增加barpos定位的值就越大,造成后面其作为分母参与计算的值pjBoFu越来越小,同时也造成了FrontBoFu[my_bar]/pjBoFu越开越大,反比关系。

 

要么你自己控制数据量的计算,或者你能提供更好的处理逻辑、

 

 

下面是进行从新调整的,之前是sum(frontBoFu,bar)占整个的参与计算范围的比例,现在改成100个波段的sum(frontBoFu,bar)之和占100个波段数据量的比例

要是这种方式也不行,那就没办法了,但是不会像前面造成这么大的变动

pjBoFu : sum(frontBoFu,bar)/bar;                           //平均波段值
bjKDFrontBoFuMulti: FrontBoFu[my_bar]/pjBoFu,linethick0;       //前一波大于平均波段倍数

[此贴子已经被作者于2017/8/9 14:50:08编辑过]


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26631 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2017/8/9 15:42:51    Post IP:180.169.30.6[显示全部帖子]

22楼中的问题,请你仔细看下21楼中的红字表述部分。其中递归算法的sma有一定影响,但是不会这大,根本原因是其中的一个因子使用了barpos这个量作为计算分母造成的。在这个算法中递归计算的sma的结果与barpos作为分母影响比较,微乎其微了。

 

 

21楼中的代码已经调整了pjBoFu参与分母计算的变量,之前是pjBoFu : sum(frontBoFu,bar)/my_bar;

从逻辑梳理上理解,求平均值通过波段总和除以100个波段的周期总数。更为合理一些。
你可以在看一下,另外,你的这个需求实现中本地测试情况下在进行for循环处理,效率会变得很低。

 

pjBoFu : sum(frontBoFu,bar)/bar;                           //平均波段值     

bjKDFrontBoFuMulti: FrontBoFu[my_bar]/pjBoFu,linethick0;       //前一波大于平均波段倍数

 

[此贴子已经被作者于2017/8/9 15:56:34编辑过]


编程无捷径,技巧靠积累。
 回到顶部