波峰波谷指标函数和波谷函数的高级用法

问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
数字呈现不规律的波动形状,而且值变化也不一定是只朝一个方向,会有反复。请问如何能找出值排名前5的波峰和波谷的大小和位置。有计算相关的函数吗?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以尝试使用heapq模块。
import heapq
numbers = [1, 3, 5, 2, 4, 1.1, 3.5, 4.8, 0.5, 2.4, -1.5]
# 输出元祖第一个元素是index,第二元素是比较的数值
print(heapq.nsmallest(5, enumerate(numbers), key=lambda x: x[1]))
# [(10, -1.5), (8, 0.5), (0, 1), (5, 1.1), (3, 2)]
print(heapq.nlargest(5, enumerate(numbers), key=lambda x: x[1]))
# [(2, 5), (7, 4.8), (4, 4), (6, 3.5), (1, 3)]
当要查找的元素个数相对比较小的时候,函数 nlargest() 和 nsmallest() 是很合适的。 如果你仅仅想查找唯一的最小或最大(N=1)的元素的话,那么使用min()和max()函数会更快些。 类似的,如果N的大小和集合大小接近的时候,通常先排序这个集合然后再使用切片操作会更快点 (sorted(items)[:N] 或者是 sorted(items)[-N:] )。 需要在正确场合使用函数nlargest() 和 nsmallest()才能发挥它们的优势 (如果N快接近集合大小了,那么使用排序操作会更好些)。
nums = [1,2,3,2,4,5,4,3,2,1,8,9,10,11,10,9,8]
peaks = []
troughs = []
for idx in range(1, len(nums)-1):
if nums[idx-1] & nums[idx] & nums[idx+1]:
peaks.append((idx, nums[idx]))
if nums[idx-1] & nums[idx] & nums[idx+1]:
troughs.append((idx, nums[idx]))
print(peaks) # [(2, 3), (5, 5), (13, 11)]
print(troughs) # [(3, 2), (9, 1)]
先循环一次找出所有波峰波谷,然后再找出前五
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?→ 不用peak,trough等函数如何找到波峰和波谷?
&&共有<b style="color:#ff人关注过本帖主题:不用peak,trough等函数如何找到波峰和波谷?
金字塔―专业程序化交易量化投资平台客户服务部
----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到
您的宝贵建议或者投诉,请发往邮箱:
金字塔―专业程序化交易量化投资平台客户服务部
----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到
您的宝贵建议或者投诉,请发往邮箱:
金字塔―专业程序化软件提供商金字塔-技术部
-----------------------------------------------------------------------------------------------------工作时间:周一至周五 08:30 - 17:30&& 周末及法定节假日休息波函数的图像中,波峰波谷物理含义是什么?真心不理解波函数,纠结
质点远离平衡位置,速度达到零的时刻。
就是指原子轨道,也就是四个量子数(主量子数,角量子数,磁量子数和自旋量子数)。
关于波函数的三个特征的具体深层含义。例如 波函数给定 由单值性 是否说明粒子在空间某处出现的几率一定。波函数是否具有无穷阶倒数(连续性)。波函数是否是数学工具.
---抛砖引玉---
1.定积分∫A&sup2;x&sup2;dx+∫A&sup2;(a-x)dx=1,结果A=(2/a)(3/a)^&frac12;,
波函数是量子力学中用来描述粒子的德布罗意波的函数。
所谓浪高,是指开阔大洋上由水质点形成的振动的振幅。水质点的振动是由风引起的,风越大,振动也就越大。
浪高,是指振动中,波峰和波谷之间的距离,也就是最高点和最低点...
答: 什么是产筛,什么是血生化筛查,什么是耳聋基因筛查
1.应试教育
2.学分制教育
3.发展性思维教育
答: 你好.生物科学培养掌握生物科学的基本理论、基本知识和实验技能,能够在高等和中等学校进行教学和教学研究的教师及其他教育工作者,并输送部分研究生。
答: 到百度搜索查查
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:1234567891011121314152003年4月 荣获微软MVP称号
2002年12月 VB大版内专家分月排行榜第一2002年11月 VB大版内专家分月排行榜第一2002年10月 VB大版内专家分月排行榜第一2002年9月 VB大版内专家分月排行榜第一2002年8月 VB大版内专家分月排行榜第一2002年7月 VB大版内专家分月排行榜第一2002年6月 VB大版内专家分月排行榜第一2002年5月 VB大版内专家分月排行榜第一
2008年5月 VB大版内专家分月排行榜第二
2008年1月 VB大版内专家分月排行榜第三2007年11月 VB大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。后使用快捷导航没有帐号?注册
查看: 13148|回复: 19
精华0在线时间278 小时UID5525积分1473帖子阅读权限60注册时间最后登录
初级大户, 积分 1473, 距离下一级还需 27 积分
精华0UID5525积分1473帖子主题阅读权限60注册时间最后登录
我编了一段求前两个波峰和波谷的程序(可在交易指令下测试),
但效果还不满意,希望能得到高手的改进,谢谢!Params
& & & & Numeric MyMinLength(5);
& & & & // GV10 最近波峰与当前Bar的Bar计数
& & & & // GV11 最近波峰的值
& & & & // GV12 最近波谷与当前Bar的Bar计数
& & & & // GV13 最近波谷的值
& & & & // GV14 前一个波峰与当前Bar的Bar计数
& & & & // GV15 前一个波峰的值
& & & & // GV16 前一个波谷与当前Bar的Bar计数
& & & & // GV17 前一个波谷的值
& & & &
Vars
& & & & Numeric MyL
& & & & Numeric MyHighB
& & & & Numeric MyH
& & & & Numeric MyL
& & & & Numeric MyLowB
Begin
& & & & If (BarStatus==0)
& & & & {& & & & SetGlobalVar(10,0); SetGlobalVar(11,High); //最近波峰Bar,High
& & & & & & & & SetGlobalVar(12,0); SetGlobalVar(13,Low);&&//最近波谷Bar,Low
& & & & & & & & SetGlobalVar(14,0); SetGlobalVar(15,High);
& & & & & & & & SetGlobalVar(16,0); SetGlobalVar(17,Low);
& & & & }
& & & &
& & & & MyLength = GetGlobalVar(12)+1;//取上一波谷到当前Bar的个数
& & & & MyLength = IIF(MyLength&=MyMinLength,MyMinLength+1,MyLength);//至少保持最小的波峰距离为5个Bar
& & & & MyHighBar = HighestBar(High,MyLength);
& & & & MyHigh = Highest(High,MyLength);
& & & &
& & & & If (GetGlobalVar(10)+1-MyHighBar&=MyMinLength or MyHigh&GetGlobalVar(11))
& & & & {& & & & If (GetGlobalVar(10)+1-MyHighBar&=MyMinLength)
& & & & & & & & {& & & & SetGlobalVar(14,GetGlobalVar(10)); //保留前一个波峰
& & & & & & & & & & & & SetGlobalVar(15,GetGlobalVar(11));
& & & & & & & & }
& & & & & & & & SetGlobalVar(10,MyHighBar);//从上个低谷开始的最高价所在的Bar序数
& & & & & & & & SetGlobalVar(11,MyHigh);& &//从上个低谷开始的最高价
& & & & } Else SetGlobalVar(10,GetGlobalVar(10)+1);
& & & & MyLength = GetGlobalVar(10)+1;//取上一波峰到当前Bar的个数
& & & & MyLength = IIF(MyLength&MyMinLength,MyMinLength+1,MyLength);
& & & & MyLowBar = LowestBar(Low,MyLength);
& & & & MyLow = Lowest(Low,MyLength);
& & & & If (GetGlobalVar(12)+1-MyLowBar&=MyMinLength or MyLow&GetGlobalVar(13))
& & & & {& & & & If (GetGlobalVar(12)+1-MyLowBar&=MyMinLength)
& & & & & & & & {& & & & SetGlobalVar(16,GetGlobalVar(12)); //保留前一个波谷
& & & & & & & & & & & & SetGlobalVar(17,GetGlobalVar(13));
& & & & & & & & }
& & & & & & & & SetGlobalVar(12,MyLowBar);//从上个波峰开始的最低价所在的Bar序数
& & & & & & & & SetGlobalVar(13,MyLow);//从上个波峰开始的最低价
& & & & } Else SetGlobalVar(12,GetGlobalVar(12)+1);
& & & & //验证显示
& & & & Commentary(&CurrBar &+Text(CurrentBar));
& & & & Commentary(&HighestNear &+Text(GetGlobalVar(11))+& Bar &+Text(GetGlobalVar(10)));
& & & & Commentary(&LowestNear&&&+Text(GetGlobalVar(13))+& Bar &+Text(GetGlobalVar(12)));
& & & & Commentary(&HighestFar&&&+Text(GetGlobalVar(15))+& Bar &+Text(GetGlobalVar(14)));
& & & & Commentary(&LowestFar& &&+Text(GetGlobalVar(17))+& Bar &+Text(GetGlobalVar(16)));
& & & &
End复制代码
上善若水,无欲则刚
精华0在线时间278 小时UID5525积分1473帖子阅读权限60注册时间最后登录
初级大户, 积分 1473, 距离下一级还需 27 积分
精华0UID5525积分1473帖子主题阅读权限60注册时间最后登录
请教为什么在实时(BarStatus==2)时,最后一个Bar的计算值的不对的,请高手帮助。谢谢!
上善若水,无欲则刚
精华2在线时间2808 小时UID4130积分19941帖子阅读权限255注册时间最后登录
精华2UID4130积分19941帖子主题阅读权限255注册时间最后登录
最后一个bar的high和low不断在变化,所以有可能不对的
精华0在线时间278 小时UID5525积分1473帖子阅读权限60注册时间最后登录
初级大户, 积分 1473, 距离下一级还需 27 积分
精华0UID5525积分1473帖子主题阅读权限60注册时间最后登录
本帖最后由 efrog 于
20:45 编辑
谢谢,问题就出在这里。增加了BarStatus==1的限制,让最后一个Bar不参与计算,问题就解决了。
实际上最后Bar的High与Low要参与波峰、波谷的比较,在比较之前还不能直接修正目前的波峰、波谷。
修正的程序如下:Params
& & & & Numeric MyMinLength(5);
& & & & // GV10 最近波峰与当前Bar的Bar计数
& & & & // GV11 最近波峰的值
& & & & // GV12 最近波谷与当前Bar的Bar计数
& & & & // GV13 最近波谷的值
& & & & // GV14 前一个波峰与当前Bar的Bar计数
& & & & // GV15 前一个波峰的值
& & & & // GV16 前一个波谷与当前Bar的Bar计数
& & & & // GV17 前一个波谷的值
Vars
& & & & Numeric MyL
& & & & Numeric MyHighB
& & & & Numeric MyH
& & & & Numeric MyL
& & & & Numeric MyLowB
Begin
& & & & If (BarStatus==0)
& & & & {& & & & SetGlobalVar(10,0); SetGlobalVar(11,High); //最近波峰Bar,High
& & & & & & & & SetGlobalVar(12,0); SetGlobalVar(13,Low);&&//最近波谷Bar,Low
& & & & & & & & SetGlobalVar(14,0); SetGlobalVar(15,High);
& & & & & & & & SetGlobalVar(16,0); SetGlobalVar(17,Low);
& & & & }
& & & &
& & & & If (BarStatus==1)
& & & & {& & & & MyLength = GetGlobalVar(12)+1;//取上一波谷到当前Bar的个数
& & & & & & & & MyLength = IIF(MyLength&=MyMinLength,MyMinLength+1,MyLength);//至少保持最小的波峰距离为5个Bar
& & & & & & & & MyHighBar = HighestBar(High,MyLength);
& & & & & & & & MyHigh = Highest(High,MyLength);
& & & &
& & & & & & & & If (GetGlobalVar(10)+1-MyHighBar&=MyMinLength or MyHigh&GetGlobalVar(11))
& & & & & & & & {& & & & If (GetGlobalVar(10)+1-MyHighBar&=MyMinLength)
& & & & & & & & & & & & {& & & & SetGlobalVar(14,GetGlobalVar(10)); //保留前一个波峰
& & & & & & & & & & & & & & & & SetGlobalVar(15,GetGlobalVar(11));
& & & & & & & & & & & & }
& & & & & & & & & & & & SetGlobalVar(10,MyHighBar+1);//从上个低谷开始的最高价所在的Bar序数
& & & & & & & & & & & & SetGlobalVar(11,MyHigh);& &//从上个低谷开始的最高价
& & & & & & & & } Else SetGlobalVar(10,GetGlobalVar(10)+1);
& & & & & & & & MyLength = GetGlobalVar(10)+1;//取上一波峰到当前Bar的个数
& & & & & & & & MyLength = IIF(MyLength&MyMinLength,MyMinLength+1,MyLength);
& & & & & & & & MyLowBar = LowestBar(Low,MyLength);
& & & & & & & & MyLow = Lowest(Low,MyLength);
& & & & & & & & If (GetGlobalVar(12)+1-MyLowBar&=MyMinLength or MyLow&GetGlobalVar(13))
& & & & & & & & {& & & & If (GetGlobalVar(12)+1-MyLowBar&=MyMinLength)
& & & & & & & & & & & & {& & & & SetGlobalVar(16,GetGlobalVar(12)); //保留前一个波谷
& & & & & & & & & & & & & & & & SetGlobalVar(17,GetGlobalVar(13));
& & & & & & & & & & & & }
& & & & & & & & & & & & SetGlobalVar(12,MyLowBar+1);//从上个波峰开始的最低价所在的Bar序数
& & & & & & & & & & & & SetGlobalVar(13,MyLow);//从上个波峰开始的最低价
& & & & & & & & } Else SetGlobalVar(12,GetGlobalVar(12)+1);
& & & & }
& & & & //验证显示
& & & & Commentary(&CurrBar &+Text(CurrentBar));
& & & & Commentary(&HighestNear &+Text(GetGlobalVar(11))+& Bar &+Text(GetGlobalVar(10)));
& & & & Commentary(&LowestNear&&&+Text(GetGlobalVar(13))+& Bar &+Text(GetGlobalVar(12)));
& & & & Commentary(&HighestFar&&&+Text(GetGlobalVar(15))+& Bar &+Text(GetGlobalVar(14)));
& & & & Commentary(&LowestFar& &&+Text(GetGlobalVar(17))+& Bar &+Text(GetGlobalVar(16)));
End复制代码
上善若水,无欲则刚
精华0在线时间278 小时UID5525积分1473帖子阅读权限60注册时间最后登录
初级大户, 积分 1473, 距离下一级还需 27 积分
精华0UID5525积分1473帖子主题阅读权限60注册时间最后登录
目前还有二个问题:
(1)HighestFar、LowestFar的Bar计算有问题
(2)由于使用了Highest和Lowest用户函数,当最远的Bar前有更高或更低值时,这两个函数找到的并不是波峰和波谷。
上善若水,无欲则刚
精华0在线时间93 小时UID3136积分331帖子阅读权限50注册时间最后登录
高级散户, 积分 331, 距离下一级还需 269 积分
精华0UID3136积分331帖子主题阅读权限50注册时间最后登录
你们有什么好的思想 可以实现判断背离吗?
精华0在线时间278 小时UID5525积分1473帖子阅读权限60注册时间最后登录
初级大户, 积分 1473, 距离下一级还需 27 积分
精华0UID5525积分1473帖子主题阅读权限60注册时间最后登录
没有。我的想法是突破前期波峰而又有效回落到波峰一下,或者未有效突破前期波峰而回落,则做空。如有效突破,则少量做多。
反之在谷底,与上述情况类似,则做多。有效突破谷底则少量做空。因为假突破的概率大。
欢迎大家讨论!
上善若水,无欲则刚
精华0在线时间278 小时UID5525积分1473帖子阅读权限60注册时间最后登录
初级大户, 积分 1473, 距离下一级还需 27 积分
精华0UID5525积分1473帖子主题阅读权限60注册时间最后登录
以下代码解决了Bar的计算问题。下一步打算第二个问题,自己编一个函数来同时统计Highest和相应的Bar位置,克服绝对长度的限制。Params
& & & & Numeric MyMinLength(5);
& & & & // GV10 最近波峰与当前Bar的Bar计数
& & & & // GV11 最近波峰的值
& & & & // GV12 最近波谷与当前Bar的Bar计数
& & & & // GV13 最近波谷的值
& & & & // GV14 前一个波峰与当前Bar的Bar计数
& & & & // GV15 前一个波峰的值
& & & & // GV16 前一个波谷与当前Bar的Bar计数
& & & & // GV17 前一个波谷的值
Vars
& & & & Numeric MyL
& & & & Numeric MyHighB
& & & & Numeric MyH
& & & & Numeric MyL
& & & & Numeric MyLowB
Begin
& & & & If (BarStatus==0)
& & & & {& & & & SetGlobalVar(10,0); SetGlobalVar(11,High); //最近波峰Bar,High
& & & & & & & & SetGlobalVar(12,0); SetGlobalVar(13,Low);&&//最近波谷Bar,Low
& & & & & & & & SetGlobalVar(14,0); SetGlobalVar(15,High);
& & & & & & & & SetGlobalVar(16,0); SetGlobalVar(17,Low);
& & & & }
& & & &
& & & & If (BarStatus==1)
& & & & {& & & & MyLength = GetGlobalVar(12)+1;//取上一波谷到当前Bar的个数
& & & & & & & & MyLength = IIF(MyLength&=MyMinLength,MyMinLength+1,MyLength);//至少保持最小的波峰距离为5个Bar
& & & & & & & & MyHighBar = HighestBar(High,MyLength);
& & & & & & & & MyHigh = Highest(High,MyLength);
& & & &
& & & & & & & & If (GetGlobalVar(10)+1-MyHighBar&=MyMinLength or MyHigh&GetGlobalVar(11))
& & & & & & & & {& & & & If (GetGlobalVar(10)+1-MyHighBar&=MyMinLength)
& & & & & & & & & & & & {& & & & SetGlobalVar(14,GetGlobalVar(10)); //保留前一个波峰
& & & & & & & & & & & & & & & & SetGlobalVar(15,GetGlobalVar(11));
& & & & & & & & & & & & }
& & & & & & & & & & & & SetGlobalVar(10,MyHighBar);//从上个低谷开始的最高价所在的Bar序数
& & & & & & & & & & & & SetGlobalVar(11,MyHigh);& &//从上个低谷开始的最高价
& & & & & & & & }
& & & & & & & & SetGlobalVar(10,GetGlobalVar(10)+1); //原有错误,不论是否有新的波峰出现,原有的波峰均无条件远离1Bar
& & & & & & & & SetGlobalVar(14,GetGlobalVar(14)+1);
& & & & & & & & MyLength = GetGlobalVar(10)+1;//取上一波峰到当前Bar的个数
& & & & & & & & MyLength = IIF(MyLength&MyMinLength,MyMinLength+1,MyLength);
& & & & & & & & MyLowBar = LowestBar(Low,MyLength);
& & & & & & & & MyLow = Lowest(Low,MyLength);
& & & & & & & & If (GetGlobalVar(12)+1-MyLowBar&=MyMinLength or MyLow&GetGlobalVar(13))
& & & & & & & & {& & & & If (GetGlobalVar(12)+1-MyLowBar&=MyMinLength)
& & & & & & & & & & & & {& & & & SetGlobalVar(16,GetGlobalVar(12)); //保留前一个波谷
& & & & & & & & & & & & & & & & SetGlobalVar(17,GetGlobalVar(13));
& & & & & & & & & & & & }
& & & & & & & & & & & & SetGlobalVar(12,MyLowBar);//从上个波峰开始的最低价所在的Bar序数
& & & & & & & & & & & & SetGlobalVar(13,MyLow);//从上个波峰开始的最低价
& & & & & & & & }
& & & & & & & & SetGlobalVar(12,GetGlobalVar(12)+1);
& & & & & & & & SetGlobalVar(16,GetGlobalVar(16)+1);
& & & & }
& & & & //验证显示
& & & & Commentary(&CurrBar &+Text(CurrentBar));
& & & & Commentary(&HighestNear &+Text(GetGlobalVar(11))+& Bar &+Text(GetGlobalVar(10)));
& & & & Commentary(&LowestNear&&&+Text(GetGlobalVar(13))+& Bar &+Text(GetGlobalVar(12)));
& & & & Commentary(&HighestFar&&&+Text(GetGlobalVar(15))+& Bar &+Text(GetGlobalVar(14)));
& & & & Commentary(&LowestFar& &&+Text(GetGlobalVar(17))+& Bar &+Text(GetGlobalVar(16)));
End复制代码
上善若水,无欲则刚
精华0在线时间278 小时UID5525积分1473帖子阅读权限60注册时间最后登录
初级大户, 积分 1473, 距离下一级还需 27 积分
精华0UID5525积分1473帖子主题阅读权限60注册时间最后登录
上次想自编函数代替Highest、HighestBar、Lowest、LowestBar,后来仔细思考没有必要,还不如直接在程序中实现来的简单。以下的程序虽然读起来费劲(利用了多重循环,可惜TB没有递归算法,只好将就),但是使用来却很简单,而且克服了上述四个函数只能得到固定长度范围内极值的缺陷。
希望向我一样在梦想的朋友有所收获。Params
& & & & Numeric MyMinLength(6);
& & & & // GV10 最近波峰与当前Bar的Bar计数
& & & & // GV11 最近波峰的值
& & & & // GV12 最近波谷与当前Bar的Bar计数
& & & & // GV13 最近波谷的值
& & & & // GV14 前一个波峰与当前Bar的Bar计数
& & & & // GV15 前一个波峰的值
& & & & // GV16 前一个波谷与当前Bar的Bar计数
& & & & // GV17 前一个波谷的值
Vars
& & & & Numeric MyHighB
& & & & Numeric MyH
& & & & Numeric MyL
& & & & Numeric MyLowB
& & & & Numeric ii(0); //控制波距至少保持&=MyMinLength
& & & & Numeric jj(0); //防止特殊走势下程序死循环
& & & & Bool& & & &&&LoopC //循环控制变量
Begin
& & & & If (BarStatus==0)
& & & & {& & & & SetGlobalVar(10,0); SetGlobalVar(11,High); //最近波峰Bar,High
& & & & & & & & SetGlobalVar(12,0); SetGlobalVar(13,Low);&&//最近波谷Bar,Low
& & & & & & & & SetGlobalVar(14,0); SetGlobalVar(15,High);
& & & & & & & & SetGlobalVar(16,0); SetGlobalVar(17,Low);
& & & & }
& & & &
& & & & If (BarStatus==1)
& & & & {& & & &
& & & & & & & & SetGlobalVar(10,GetGlobalVar(10)+1); //原波峰均无条件远离1Bar
& & & & & & & & SetGlobalVar(12,GetGlobalVar(12)+1);
& & & & & & & & SetGlobalVar(14,GetGlobalVar(14)+1);
& & & & & & & & SetGlobalVar(16,GetGlobalVar(16)+1);
& & & & & & & & LoopCon = //找最近俩个波峰
& & & & & & & & MyHighBar = 0;
& & & & & & & & MyHigh = H
& & & & & & & & jj=0;
& & & & & & & & while (LoopCon and jj&MyMinLength*10)
& & & & & & & & {& & & & jj=jj+1;
& & & & & & & & & & & & ii=0;
& & & & & & & & & & & & While (ii&MyMinLength && High[MyHighBar+ii]&=MyHigh) {ii=ii+1;jj=jj+1;}
& & & & & & & & & & & & If (High[MyHighBar+ii]&MyHigh && ii&MyMinLength)
& & & & & & & & & & & & {& & & & MyHigh = High[MyHighBar+ii];
& & & & & & & & & & & & & & & & MyHighBar=MyHighBar+
& & & & & & & & & & & & }
& & & & & & & & & & & & if (ii&=MyMinLength or MyHighBar+ii&=BarCount) {LoopCon=F}
& & & & & & & & }
& & & & & & & & If (GetGlobalVar(10)-MyHighBar&=MyMinLength)
& & & & & & & & {& & & & SetGlobalVar(14,GetGlobalVar(10)); //推进一个波峰
& & & & & & & & & & & & SetGlobalVar(15,GetGlobalVar(11));
& & & & & & & & }
& & & & & & & & // 保留原波峰,或以更高的波峰取代最近波峰
& & & & & & & & SetGlobalVar(10,MyHighBar); SetGlobalVar(11,MyHigh);
& & & & & & & & LoopCon = //找最近两个波谷
& & & & & & & & MyLowBar = 0;
& & & & & & & & MyLow = L
& & & & & & & & jj=0;
& & & & & & & & while (LoopCon and jj&MyMinLength*10)
& & & & & & & & {& & & & jj=jj+1;
& & & & & & & & & & & & ii=0;
& & & & & & & & & & & & While (ii&MyMinLength && Low[MyLowBar+ii]&=MyLow) {ii=ii+1;jj=jj+1;}
& & & & & & & & & & & & If (Low[MyLowBar+ii]&MyLow && ii&MyMinLength)
& & & & & & & & & & & & {& & & & MyLow = Low[MyLowBar+ii];
& & & & & & & & & & & & & & & & MyLowBar=MyLowBar+
& & & & & & & & & & & & }
& & & & & & & & & & & & if (ii&=MyMinLength or MyLowBar+ii&=BarCount) {LoopCon=F}
& & & & & & & & }
& & & & & & & & If (GetGlobalVar(12)-MyLowBar&=MyMinLength)
& & & & & & & & {& & & & SetGlobalVar(16,GetGlobalVar(12)); //推进一个波谷
& & & & & & & & & & & & SetGlobalVar(17,GetGlobalVar(13));
& & & & & & & & }
& & & & & & & & // 保留原波谷,或以更低的波谷取代最近波谷
& & & & & & & & SetGlobalVar(12,MyLowBar); SetGlobalVar(13,MyLow);
& & & & & & & & //验证显示
& & & & & & & & Commentary(&CurrBar &+Text(CurrentBar));
& & & & & & & & Commentary(&HighestNear &+Text(GetGlobalVar(11))+& Bar &+Text(GetGlobalVar(10)));
& & & & & & & & Commentary(&LowestNear&&&+Text(GetGlobalVar(13))+& Bar &+Text(GetGlobalVar(12)));
& & & & & & & & Commentary(&HighestFar&&&+Text(GetGlobalVar(15))+& Bar &+Text(GetGlobalVar(14)));
& & & & & & & & Commentary(&LowestFar& &&+Text(GetGlobalVar(17))+& Bar &+Text(GetGlobalVar(16)));
& & & & }
& & & & & & & & & & & &
End复制代码
上善若水,无欲则刚
精华0在线时间83 小时UID15288积分382帖子阅读权限50注册时间最后登录
高级散户, 积分 382, 距离下一级还需 218 积分
精华0UID15288积分382帖子主题阅读权限50注册时间最后登录
可以求不固定范围内的极值?
TB程序化交易研讨群
纯拉皮条者谢绝。哈哈
Powered by

我要回帖

更多关于 查找波峰波谷 算法 的文章

 

随机推荐