以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 请教如何得到均线交叉期间的最值 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=73350) |
-- 作者:onmidas -- 发布时间:2014/12/21 15:41:08 -- 请教如何得到均线交叉期间的最值 请问如何得到该图所示的效果? 白色为5日均线,绿色为10日均线 第一根绿色水平直线为 两均线死叉到金叉期间的最低点 第二根绿色水平直线为 两均线金叉到死叉期间的最高点 该如何编写公式,定义参数或者数组,得到从第一根K线以来,所有这样的最低点和最高点,并绘制出直线呢? 多谢! [此贴子已经被作者于2014/12/21 15:42:21编辑过]
|
-- 作者:jinzhe -- 发布时间:2014/12/22 9:23:41 -- ma5:ma(c,5),linethick2,colorwhite; ma10:ma(c,10),linethick2,colorgreen; jc:=cross(ma5,ma10); sc:=cross(ma10,ma5); nn1:=barslast(jc); nn2:=barslast(sc); hh:=hhv(h,jc+1); ll:=llv(l,sc+1); if sc then hh1:=hh; if jc then ll1:=ll; hh1死叉到金叉的最高值 ll1就是死叉到金叉的最低值 |
-- 作者:onmidas -- 发布时间:2014/12/22 10:13:02 -- 多谢jinzhe老师 我的另一个问题是如何引用前面的hh1、ll1呢? 譬如上图中,我得到了第三根水平线的ll1值,此时我想引用第一根水平线的ll1值,该怎么做? |
-- 作者:jinzhe -- 发布时间:2014/12/22 10:21:45 -- ma5:ma(c,5),linethick2,colorwhite; ma10:ma(c,10),linethick2,colorgreen; jc:=cross(ma5,ma10); sc:=cross(ma10,ma5); nn1:=barslast(jc); nn2:=barslast(sc); hh:=hhv(h,nn1+1); ll:=llv(l,nn2+1); if sc then hh1:=hh; if jc then ll1:=ll;
hh3:=ref(ref(hhv(h,nn1+1),nn2+1),nn1+1); ll3:=ref(ref(hhv(h,nn1+1),nn2+1),nn1+1);
if sc then hhh:=hh3; if jc then lll:=ll3; hhh和lll就是了
|
-- 作者:onmidas -- 发布时间:2014/12/22 10:33:40 -- 这样编写只能得到前面一个ll1吧? 我的意思是引用前面所有的ll1,该怎么编写才有效率? 这个方法用ref不停的嵌套,如果我想得到倒数第十个的ll1不是很麻烦? |
-- 作者:jinzhe -- 发布时间:2014/12/22 10:36:01 -- 是的,必须这样 |
-- 作者:onmidas -- 发布时间:2014/12/22 10:51:18 -- 如果是后台程序,我可以定义一个全局变量的数组来引用吧? |
-- 作者:jinzhe -- 发布时间:2014/12/22 11:00:52 -- 这个没有前后台之分,要求这样的数据是必须要这样算的 |
-- 作者:onmidas -- 发布时间:2014/12/22 11:34:55 -- 应该还是有变通的方法吧?譬如做日内实时行情,当均线金叉,我定义一个变量数组h1, h1=max(h1,high); 当均线死叉时退出,并将h1这个值写入硬盘,下一个交易日再调用。 得到历史数据的所有最值比较麻烦,但运行这样的公式后,以后的最值就容易得到了。 但我不知道怎么用公式实现。 请老师帮忙 |