欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 问个数组问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4007人关注过本帖树形打印复制链接

主题:问个数组问题

帅哥哟,离线,有人找我吗?
FireScript
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/1/5 14:38:17    Post IP:180.169.30.6[显示全部帖子]

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

 

 



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/1/5 15:28:40    Post IP:180.169.30.6[显示全部帖子]

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

 

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

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

 

这2个函数都可以

 

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



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/1/5 16:02:57    Post IP:180.169.30.6[显示全部帖子]

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个死叉位置的开盘价



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/1/5 16:25:26    Post IP:180.169.30.6[显示全部帖子]

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

 

 


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

 

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

 

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



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/1/5 16:43:03    Post IP:180.169.30.6[显示全部帖子]

还有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的上的死叉信号可能会多次闪烁,这种在闪烁中的死叉信号没办法进行很好的记录。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/1/5 16:44:09    Post IP:180.169.30.6[显示全部帖子]

此外你的需求和 序列模式没啥关系。

http://www.weistock.com/runmode.htm   关于序列模式。

 



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/1/5 17:16:47    Post IP:180.169.30.6[显示全部帖子]

修正了一点错误。

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死叉


1dsc:=SUMBARS(macdsc,1);
1open:ref(o,1dsc-1),NODRAW;

2dsc:=SUMBARS(macdsc,2);
2open:ref(o,2dsc-1),NODRAW;

3dsc:=SUMBARS(macdsc,3);
3open:ref(o,3dsc-1),NODRAW;


if macdsc  then  DRAWTEXT(1 ,low ,'死叉' );//标记了死叉的位置

 

 

 

我标记了死叉的位置。并且取了最近三次死叉的开盘价。

[此贴子已经被作者于2018/1/5 17:17:13编辑过]


命数如织,当如磐石。
 回到顶部