以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  问个数组问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=160884)

--  作者:hj007s
--  发布时间:2018/1/5 14:20:50
--  问个数组问题
我想做个数组,在一个下跌走势中,MA5死叉MA10,会有好几个点,能否做个数组记录每个点的价格位置,并调用???
比如说,第一个死叉在10块钱位置,跌下到9块钱反弹,9.3继续死叉(第二个点),然后我做个记录,并能在以后我调用10块钱,和9.3的价位?

--  作者:FireScript
--  发布时间:2018/1/5 14:38:17
--  

只能记录金叉或者死叉的那个K的位置对应的开高低收。 而不是你说的记录刚好触发死叉的那个价格。这个不好做。

 

 


--  作者:hj007s
--  发布时间:2018/1/5 14:52:05
--  
就是能记录那个位置K线是吧,是走完一根K线所对应信号的K线么?这样的话开仓时点就会晚了点,没办法做就是及时的么,就是如果用序列模式,哪怕出现信号频闪,那么也是可以的啊,就是记录当时触发的价格。

老师,要不,你先写个范例给我看下记录金叉或者死叉那根K线位置对应的高开低收价格序列数组应该怎么写,然后怎么调用?
尤其是一个下跌行情的走势,出现2个以上的时候如何去调用之前的

--  作者:FireScript
--  发布时间:2018/1/5 15:28:40
--  

历史K上都是成形的数据,不存在触发死叉时的即时价格。 至于获取金叉死叉的位置可以用

 

BARSLAST(死叉);//上一次死叉位置

SUMBARS(死叉,N);//N个死叉的位置

 

这2个函数都可以

 

获取到位置之后 就可以使用ref函数去引用那个位置的开高低收价格了。没必要使用数组取去记录。


--  作者:hj007s
--  发布时间:2018/1/5 15:53:35
--  
能写复杂一点么,就是可以调用并且查看,想参考一下,
非常感谢

--  作者:FireScript
--  发布时间:2018/1/5 16:02:57
--  

input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);//参数设置


DIFF : EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  : EMA(DIFF,M);
MACD1 : 2*(DIFF-DEA), COLORSTICK;

macdjc:cross(diff,dea);//macd金叉
macdsc:cross(dea,diff);//macd死叉

Lastsc:=BARSLAST(macdsc);//上一个死叉的K线位置
LastscOpen:ref(o,Lastsc);//上一个死叉的开盘价

10dsc:=SUMBARS(macdsc,10);//最近的第10个死叉的位置
10dscOpen:ref(o,10dsc);//第10个死叉位置的开盘价


--  作者:hj007s
--  发布时间:2018/1/5 16:18:18
--  

input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);//参数设置


DIFF : EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  : EMA(DIFF,M);
MACD1 : 2*(DIFF-DEA), COLORSTICK;

macdjc:cross(diff,dea);//macd金叉
macdsc:cross(dea,diff);//macd死叉

Lastsc:=BARSLAST(macdsc);//上一个死叉的K线位置
LastscOpen:ref(o,Lastsc);//上一个死叉的开盘价

10dsc:=SUMBARS(macdsc,10);//最近的第10个死叉的位置
10dscOpen:ref(o,10dsc);//第10个死叉位置的开盘价



我在这个代码那里加上了if lastsc<>0 then DRAWTEXT(1,low,\'S\');

结果主图叠加全部是S?怎么会???


--  作者:FireScript
--  发布时间:2018/1/5 16:25:26
--  

因为之前只要有死叉lastsc就不可能是0了,除非你在当前图表最前面的某些K上,也就是历史上第一个死叉出现之前,这个值才可能是0.

 

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 

上图我限制了K线数量,标记的位置就是第一个死叉之前的K。这时候那个lastsc就是0. 

 

这个BARSLAST(macdsc)返回值是基于你当前K位置的,也就是你图表上十字光标的位置的那个K之前的第一个死叉。


--  作者:hj007s
--  发布时间:2018/1/5 16:33:00
--  
那跟我的想法有点违背啊,
还是上个图

我的想法是在黄圈那儿记录,比如说就3个死叉,就记录3个死叉的K线的位置和价格(高开低收)
如果是盘中出现的话能记录的话最好,我是希望盘中出现的话做记录的(这涉及到序列模式?
图片点击可在新窗口打开查看此主题相关图片如下:1234551231.png
图片点击可在新窗口打开查看

--  作者:FireScript
--  发布时间:2018/1/5 16:43:03
--  

还有2句代码啊。

 

10dsc:=SUMBARS(macdsc,10);//最近的第10个死叉的位置

10dscOpen:ref(o,10dsc);//最近的第10个死叉位置的开盘价

 

这里参数10改成3就可以了。

你需要这三个死叉的位置的话,那就复制上面的代码 修改下参数。

1dsc:=SUMBARS(macdsc,1);

1dscOpen:ref(o,1dsc);

2dsc:=SUMBARS(macdsc,2);

2dscOpen:ref(o,2dsc);

 

如果你不扩充数据起始位置的话,历史上的K的金叉或者死叉肯定是固定的了。其次当前最新K的上的死叉信号可能会多次闪烁,这种在闪烁中的死叉信号没办法进行很好的记录。