以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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日均线

第一根绿色水平直线为 两均线死叉到金叉期间的最低点
第二根绿色水平直线为 两均线金叉到死叉期间的最高点
第三根类推……
图片点击可在新窗口打开查看此主题相关图片如下:360软件小助手截图20141221153434.png
图片点击可在新窗口打开查看

该如何编写公式,定义参数或者数组,得到从第一根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这个值写入硬盘,下一个交易日再调用。

得到历史数据的所有最值比较麻烦,但运行这样的公式后,以后的最值就容易得到了。

但我不知道怎么用公式实现。

请老师帮忙