金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 4928|回复: 9

只计算满足条件数据的标准差

[复制链接]

245

主题

475

帖子

475

积分

等级: 免费版

注册:
2021-6-15
曾用名:
发表于 2022-10-25 16:40 | 显示全部楼层 |阅读模式
您好,请问,在K线的序列数据中,如何只算收盘价大于20日均线的差值的最近60个有效(满足C>MA60)数据的标准差,麻烦直接给公式吧,谢谢!
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-10-25 17:16 | 显示全部楼层
[PEL] 复制代码
MA20:MA(C,20);
V1:=if(c>ma20,c,0);

LEN:=SUMBARS(V1<>0,60);

x:=sum(v1,len)/60;//均值

sum1:=0;
for i=0 to len-1 do 
begin 
if V1[BARPOS-i]<>0 then sum1:=sum1+pow(c[BARPOS-i]-x,2);
end 

result:SQRT(sum1/60);
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

245

主题

475

帖子

475

积分

等级: 免费版

注册:
2021-6-15
曾用名:
 楼主| 发表于 2022-10-25 18:32 | 显示全部楼层
技术009 发表于 2022-10-25 17:16
[mw_shl_code=pel,true]MA20:MA(C,20);
V1:=if(c>ma20,c,0);

谢谢
回复

使用道具 举报

245

主题

475

帖子

475

积分

等级: 免费版

注册:
2021-6-15
曾用名:
 楼主| 发表于 2022-10-25 19:16 | 显示全部楼层
技术009 发表于 2022-10-25 17:16
[mw_shl_code=pel,true]MA20:MA(C,20);
V1:=if(c>ma20,c,0);

截图202210251913421120.png
您好,我按您的公式测试了一下,发现标准差无值,另外其中“SUM1”代表什么,我没太理解,他也没有值的状态,麻烦看一下什么原因?谢谢!


补充内容 (2022-10-25 20:30):
其中“SUM1=0”代表什么意思?
截图202210251913569616.png
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-10-26 08:22 | 显示全部楼层
你怎么运行的,我本地都有值的。序列模式下运行的?
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

245

主题

475

帖子

475

积分

等级: 免费版

注册:
2021-6-15
曾用名:
 楼主| 发表于 2022-10-26 08:41 | 显示全部楼层
技术009 发表于 2022-10-26 08:22
你怎么运行的,我本地都有值的。序列模式下运行的?

对,我是序列模式下运行的,不可以吗?另外请指点一下,“SUM1=0”是何用意,可以解决那类问题?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-10-26 08:42 | 显示全部楼层
本帖最后由 技术009 于 2022-10-26 08:43 编辑

不能序列。
你既然要这个标准差,那你应该知道它的算法的吧。里面有一个累计值的过程,这个sum就是了。建议你百度看下标准差算法。

上面代码算法是按照STDP函数算法处理的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

245

主题

475

帖子

475

积分

等级: 免费版

注册:
2021-6-15
曾用名:
 楼主| 发表于 2022-10-26 08:54 | 显示全部楼层
我按您的原公式改动了一下,去掉了for to 语句这样可以用序列模式了吧,您看正确吗? 另外如果计算估算标准差,是把最后的一个60改为59吗?谢谢您!
MA20:MA(C,20);
V1:=if(c>ma20,c,0);
LEN:=SUMBARS(V1<>0,60);
x:=sum(v1,len)/60;//均值

y:=IF(v1<>0,POW(c-x,2),0);//后为改动部分
SUM1:=SUM(y,len);
result:SQRT(SUM1/60);




回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-10-26 08:56 | 显示全部楼层
不可以。这样做完全无效。你自己把V1直接改成C,你对比下 你这个算的和 函数stdp算的一样不一样。

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

245

主题

475

帖子

475

积分

等级: 免费版

注册:
2021-6-15
曾用名:
 楼主| 发表于 2022-10-26 08:59 | 显示全部楼层
技术009 发表于 2022-10-26 08:56
不可以。这样做完全无效。你自己把V1直接改成C,你对比下 你这个算的和 函数stdp算的一样不一样。

谢谢,我在研究一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-6-8 15:22 , Processed in 0.161093 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表