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


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

   

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


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

主题:数组使用的问题

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


加好友 发短信
等级:新手上路 帖子:21 积分:0 威望:0 精华:0 注册:2019/1/2 22:42:47
数组使用的问题  发帖心情 Post By:2019/2/14 15:29:24    Post IP:180.169.30.6[只看该作者]

逐K线模式下写一个技术指标,定义了一个空数组初始化为0,当前K线下可以用,若再开始一根新的K线,程序从头计算一遍,该数组又被重新初始化为0的空数组。如果要在交易系统里调用该技术指标中的该数组中的数据要如何进行才能应用到该技术指标中该数组的连续数据?

例如:
//数组:FX_UP_KX[]、FX_UP_ZT[] 、FX_UP_SZ[]、FX_UP_WZ[]虽然是在本技术指标中的,但编写的其他交易系统调用本指标会用到这几个数组中的数据并且会取数组中不同位置的值计算。

//定义向上分形序列数组

VARIABLE: FX_UP_KX[] = 0 ;//向上分形算法中每根K线对应的最高值的序列数组
FX_UP_KX_TMP :=HIGH ;
FX_UP_KX := FX_UP_KX_TMP;//将序列数组HIGH通过临时变量FX_UP_KX_TMP赋值到数组 FX_UP_KX[]中并自动扩充数组的大小。
VARIABLE: FX_UP_ZT[] = 0;//向上分形状态,空数组初始化为0
VARIABLE: FX_UP_SZ[] = 0 ;//向上分形数值,空数组初始化为0
VARIABLE: FX_UP_WZ[] = 0 ;//向上分形位置,空数组初始化为0


//定义向上分形变量

FX_UP_LSWZ := 2 ;// 向上分形临时位置,初始化为序列数组的倒数2根K线(即倒数第3根K,第1根是倒数0根,即datacount)
FX_UP_KX_LONG :UBOUND(FX_UP_KX);//FX_UP_KX数组长度,因datacount是序列变量,在逐K线模式时,要通过临时变量转换再赋值给空数组并自动增加数组大小。否则容易出错。因此用FX_UP_KX_LONG替代datacount
FX_UP_LSWZ_HIGH := FX_UP_KX [FX_UP_KX_LONG - FX_UP_LSWZ] ;//向上分形临时位置的最高值

 
IF FX_UP_LSWZ_HIGH >FX_UP_KX [ FX_UP_KX_LONG-(FX_UP_LSWZ-1)] AND FX_UP_LSWZ_HIGH > FX_UP_KX [FX_UP_KX_LONG-(FX_UP_LSWZ-2)] THEN  //判断向上分性临时位置>后1根and后2根K线,ELSE 不成立goto向下分形。
    BEGIN
   
    IF FX_UP_LSWZ_HIGH > FX_UP_KX [FX_UP_KX_LONG-FX_UP_LSWZ+2] OR FX_UP_LSWZ_HIGH > FX_UP_KX [FX_UP_KX_LONG-FX_UP_LSWZ+1] THEN   //判断临时位置>前2根线and前1根线。
       BEGIN   //成立,这是向上分形,输出分形状态、数值、位置,显示分形位置,退出。
         FX_UP_ZT := 1; 
         FX_UP_SZ := FX_UP_LSWZ_HIGH ;
         FX_UP_WZ :=  FX_UP_KX_LONG-FX_UP_LSWZ ;//BARPOS是返回当前K线的位置,这里数组有移位计算要记录的位置不是K线的位置,是数组的所在的位置因此不能用BARPOS,要用数组长度-临时位置
         //drawicon(FX_UP_ZT = 1,FX_UP_LSWZ_HIGH,4,2); //逐K线模式只能在最后1根K线上画图标,因此显示部分利用前面的需列模式。
             
         EXIT; //终止执行
       END;
    IF FX_UP_LSWZ_HIGH < FX_UP_KX [FX_UP_KX_LONG-FX_UP_LSWZ+2] OR FX_UP_LSWZ_HIGH < FX_UP_KX [FX_UP_KX_LONG-FX_UP_LSWZ+1] THEN EXIT;  //判断临时位置<前2根或前1根,成立不是向上分形退出;不成立进入循环。
    WHILE FX_UP_LSWZ_HIGH =  FX_UP_KX [FX_UP_KX_LONG-FX_UP_LSWZ+2] OR FX_UP_LSWZ_HIGH = FX_UP_KX [FX_UP_KX_LONG-FX_UP_LSWZ+1] DO   //循环条件前2根或前1根K线=临时位置。
       BEGIN
        IF FX_UP_LSWZ_HIGH < FX_UP_KX [FX_UP_KX_LONG-FX_UP_LSWZ+2] OR FX_UP_LSWZ_HIGH < FX_UP_KX [FX_UP_KX_LONG-FX_UP_LSWZ+1] THEN EXIT;     //临时位置<前2根或前1根,成立退出,循环初始化判断。
        IF FX_UP_LSWZ_HIGH =  FX_UP_KX [FX_UP_KX_LONG-FX_UP_LSWZ+2] THEN FX_UP_LSWZ = FX_UP_LSWZ+2;  //判断临时位置=前2根。成立临时位置移到前2根;
        FX_UP_LSWZ = FX_UP_LSWZ+1; //不成立临时位置移到前1位。
         END;
     END;
ELSE GOTO 向下分形;   



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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/2/14 15:57:49    Post IP:180.169.30.6[只看该作者]

 数组不会每个K都重新初始化的。


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


加好友 发短信
等级:新手上路 帖子:21 积分:0 威望:0 精华:0 注册:2019/1/2 22:42:47
  发帖心情 Post By:2019/2/14 16:48:16    Post IP:112.5.248.254[只看该作者]

在交易系统中怎么调用技术指标中数组的数据,有没有教程参考下?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/2/14 17:02:55    Post IP:180.169.30.6[只看该作者]

 数组是无法进行跨指标调用的。目前对数组的操作的支持是有限的。
[此贴子已经被作者于2019/2/14 17:03:56编辑过]


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


加好友 发短信
等级:新手上路 帖子:21 积分:0 威望:0 精华:0 注册:2019/1/2 22:42:47
  发帖心情 Post By:2019/2/14 17:14:49    Post IP:112.5.248.254[只看该作者]

有没有变通的方法?把数组改成什么东西能够实现跨指标调用?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/2/15 15:33:52    Post IP:180.169.30.6[只看该作者]

 暂无其他方案。


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