Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共9 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:请教如何得到均线交叉期间的最值

1楼
onmidas 发表于:2014/12/21 15:41:08
请问如何得到该图所示的效果?

白色为5日均线,绿色为10日均线

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

该如何编写公式,定义参数或者数组,得到从第一根K线以来,所有这样的最低点和最高点,并绘制出直线呢?

多谢!

[此贴子已经被作者于2014/12/21 15:42:21编辑过]
2楼
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就是死叉到金叉的最低值

3楼
onmidas 发表于:2014/12/22 10:13:02
多谢jinzhe老师 我的另一个问题是如何引用前面的hh1、ll1呢? 譬如上图中,我得到了第三根水平线的ll1值,此时我想引用第一根水平线的ll1值,该怎么做?
4楼
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就是了

 

5楼
onmidas 发表于:2014/12/22 10:33:40
这样编写只能得到前面一个ll1吧? 我的意思是引用前面所有的ll1,该怎么编写才有效率? 这个方法用ref不停的嵌套,如果我想得到倒数第十个的ll1不是很麻烦?
6楼
jinzhe 发表于:2014/12/22 10:36:01
是的,必须这样
7楼
onmidas 发表于:2014/12/22 10:51:18
如果是后台程序,我可以定义一个全局变量的数组来引用吧?
8楼
jinzhe 发表于:2014/12/22 11:00:52

这个没有前后台之分,要求这样的数据是必须要这样算的

9楼
onmidas 发表于:2014/12/22 11:34:55
应该还是有变通的方法吧?譬如做日内实时行情,当均线金叉,我定义一个变量数组h1,

h1=max(h1,high);

当均线死叉时退出,并将h1这个值写入硬盘,下一个交易日再调用。

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

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

请老师帮忙


共9 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.05078 s, 3 queries.