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


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

   

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


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

主题:逐K模式的PEL问题

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


加好友 发短信
等级:论坛游侠 帖子:122 积分:0 威望:0 精华:0 注册:2017/4/27 19:25:29
逐K模式的PEL问题  发帖心情 Post By:2018/7/8 16:54:28    Post IP:119.129.116.219[显示全部帖子]

老师,我用PEL语言仿照官方给的例子,逐K模式下,VAR1和VAR2分别为最高价和最低价序列,我想得到一个最高价和最低价的平均值的序列,保存在VAR3里面,代码如下。我发现两个问题:

1、进入调试时候,发现VAR1、VAR2、VAR3都是单一数值,并不像我想象的是一个数组
2、我最后想调试,语句为OUT:VAR3[DATACOUNT-1],NODRAW;  但发现OUT输出的总是最后一个K线的收盘价(就是VAR3:=CLOSE;赋值的,根本没有改变)



VAR1:=HIGH; //金字塔下放在这里的变量为序列赋值
VAR2:=LOW;
VAR3:=CLOSE;

//为了加快运算速度,只有最后一个周期时才循环计算 
IF NOT(ISLASTBAR) THEN EXIT; 
FOR J=1 TO DATACOUNT DO BEGIN 
 VAR3[J]= (VAR1[J]+VAR2[J])/2;
END;
OUT:VAR3[DATACOUNT-1],NODRAW;





-----------------------------------

官网例子是

INPUT:N(5,2,500);      //参数申明 
VARIABLE:I=0,S=0;     //全局变量申明 
VAR1:=C; //金字塔下放在这里的变量为序列赋值

//为了加快运算速度,只有最后一个周期时才循环计算 
IF NOT(ISLASTBAR) THEN EXIT; 
FOR J=1 TO DATACOUNT DO BEGIN 
 S:=S+VAR1[J]; 
 IF J>=N THEN BEGIN 
  IF J>N THEN 
    S:=S-VAR1[J-N]; 
  MA1[J]:S/N;        //实现MA(C,N) 
  I:=0; 
 END; 
END; 


倒数第四行MA1[J]:S/N;  为什么不用定义MA1[J]这个数组就能用的?

 回到顶部
帅哥哟,离线,有人找我吗?
hborning
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:122 积分:0 威望:0 精华:0 注册:2017/4/27 19:25:29
  发帖心情 Post By:2018/7/8 17:17:38    Post IP:119.129.116.219[显示全部帖子]

我刚刚把
VAR3[J]= (VAR1[J]+VAR2[J])/2;
改为
VAR3[J]:= (VAR1[J]+VAR2[J])/2;

发现输出OUT就变成0了,是什么原因呢?调用(VAR1[J]+VAR2[J])/2怎么会返回结果0?

 回到顶部
帅哥哟,离线,有人找我吗?
hborning
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:122 积分:0 威望:0 精华:0 注册:2017/4/27 19:25:29
  发帖心情 Post By:2018/7/8 22:39:17    Post IP:119.129.116.219[显示全部帖子]

老师,我是想写一个算法(或许应该使用逐K模式吧,因为后面要加上交易信号语句的),类似缠论里面分笔程序

输入:一连串最高价(就是前面的VAR1)、一连串最低价(就是前面的VAR2)

中间需要等长的数组(好几个数组),可供我进行各种操作的(并不是和HIGH、LOW一一对应的,所以需要进行很多使用下标的操作)

最后,要把计算的数组结果,能够在图上画出来(类似缠论的笔)

之前我是用<% %>内嵌方式写的,但无法调试。所以这次想用PEL里面的语句来实现调试。

老师能否就用上面的例子,告知下如何在逐K模式,读入最高价最低价序列,然后将其能保存到中间数组中,进行各种运算?

 回到顶部
帅哥哟,离线,有人找我吗?
hborning
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:122 积分:0 威望:0 精华:0 注册:2017/4/27 19:25:29
  发帖心情 Post By:2018/7/8 22:50:00    Post IP:119.129.116.219[显示全部帖子]

就以这个为例,KRESULT需要得到前面第2根K线的高点和低点的平均值,我可以用内嵌方法写,但无法进入调试

KHIGH:=HIGH;
KLOW:=LOW;
KRESULT:=CLOSE;
<%
k_high = ffl.vardata("KHIGH")
k_low = ffl.vardata("KLOW")
k_result = ffl.vardata("KRESULT")

for i = 2 to ubound(k_high)
k_result(i) = (k_high(i-2)+k_low(i-2))/2
next

ffl.vardata("KRESULT") = k_result
%>

这时候,最后KRESULT就是想得到的结果。
想问老师,如何使用pel数组方式来实现上述结果?虽然用ref也可以实现,但我是想知道怎么样产生中间的数组保存计算结果,以及如何使用数组下标

 回到顶部