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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 关于将ENTERBARS作为参数引用公式多时候出现错误

   

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


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

主题:关于将ENTERBARS作为参数引用公式多时候出现错误

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


加好友 发短信
等级:新手上路 帖子:26 积分:0 威望:0 精华:0 注册:2015/10/26 21:07:35
关于将ENTERBARS作为参数引用公式多时候出现错误  发帖心情 Post By:2015/10/26 21:18:47    Post IP:14.147.164.149[显示全部帖子]

公式A:

input:length(1,1,1000,1);
RangeHigh:=HHV(High,length);

公式B:

……

RangeH:=stkindi('','公式A.RangeHigh(' & NUMTOSTR(ENTERBARS(),0) & ')',0,6);

……

提示错误如下:
你当前引用公式过多,超过了50个限制,过多的数量多引用会导致内存占用增大……

其中错误提示中第三点的可能是引用公式的过程使用了序列变量参数,此时请使用常数变量参数。

请问ENTERBARS是序列变量? 那么怎么将ENTERBARS转化为常量参数? 谢谢!

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


加好友 发短信
等级:新手上路 帖子:26 积分:0 威望:0 精华:0 注册:2015/10/26 21:07:35
  发帖心情 Post By:2015/10/26 21:23:03    Post IP:14.147.164.149[显示全部帖子]

图片点击可在新窗口打开查看

不知道为什么无法对主题进行编辑,只能回帖补充一张错误截图,请帮忙解答,谢谢!

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


加好友 发短信
等级:新手上路 帖子:26 积分:0 威望:0 精华:0 注册:2015/10/26 21:07:35
  发帖心情 Post By:2015/10/26 21:28:04    Post IP:14.147.164.149[显示全部帖子]

另外再补充一下,我尝试过不传递ENTERBARS()这个变量,而是写了一个常数进去,就一切正常,那证明问题是出在ENTERBARS()上了。

公式A:

input:length(1,1,1000,1);
RangeHigh:=HHV(High,length);

公式B:

……

RangeH:=stkindi('','公式A.RangeHigh(10)',0,6);

……

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


加好友 发短信
等级:新手上路 帖子:26 积分:0 威望:0 精华:0 注册:2015/10/26 21:07:35
  发帖心情 Post By:2015/10/26 23:17:01    Post IP:14.147.164.149[显示全部帖子]

简单的说,我的想法是将交易系统分模块开发,公式A就是动态止盈模块,一个很简单的动态止盈策略:开仓后最高价回撤3*ATR离场。 

现在的问题是我要将开仓后的周期数传递到动态止盈模块,否者无法得到开仓后的最高价。

这个策略只是其中一个,我有几个动态止损策略,有部分会用到开仓后的周期数,如果不解决,那么就无法模块化开发,无法传递重要参数。

请大神帮忙解答。谢谢!


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


加好友 发短信
等级:新手上路 帖子:26 积分:0 威望:0 精华:0 注册:2015/10/26 21:07:35
  发帖心情 Post By:2015/10/27 10:30:12    Post IP:59.42.231.241[显示全部帖子]

首先感谢jinzhe大神的答复。


我按照你说的进行修改,出现了问题。

公式的当前运行模式是:逐K线计算

编译时候出错,提示:“未定义的函数:CONST该函数在当前模式中不被支持,请选择序列计算模式”



我尝试将运行模式修改为:序列计算

编译时也不通过,错误提示为:“你当前使用了图标交易系统函数,交易系统函数只有在逐K线模式才能正常工作,系统将自动切换到逐周期模式”


由于运行模式的问题,还是无法编译成功,请大神帮忙解答,谢谢!

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


加好友 发短信
等级:新手上路 帖子:26 积分:0 威望:0 精华:0 注册:2015/10/26 21:07:35
  发帖心情 Post By:2015/10/27 13:12:31    Post IP:59.42.231.241[显示全部帖子]

以下是引用jinzhe在2015/10/27 10:45:17的发言:
所以这个就限定了enterbars不能转化成常数,而需要先赋值给变量才行
赋值给变量也不行啊,譬如:
a:=enterbars;
b:=const(a);
编译时候一样出错,提示:“未定义的函数:CONST该函数在当前模式中不被支持,请选择序列计算模式”。现在的问题是const不能用在逐周期的模式下面呀。 而问题不是在于是否可以直接使用 const(enterbars)这样的语句。 现在根本在于如果按照你的方式,加上const的语句取常数,那么只能用于序列模式,逐周期模式无效。

[此贴子已经被作者于2015/10/27 13:13:38编辑过]

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


加好友 发短信
等级:新手上路 帖子:26 积分:0 威望:0 精华:0 注册:2015/10/26 21:07:35
  发帖心情 Post By:2015/10/27 13:18:13    Post IP:59.42.231.241[显示全部帖子]

另外,我也尝试了一下其他的思路。

1、譬如先定义一个常数变量。 

a:=1;
a:=enterbars;

按照道理来说,a本身就是一个常数变量,但是传递a到引用的函数,一样会出现:
提示错误如下:
你当前引用公式过多,超过了50个限制,过多的数量多引用会导致内存占用增大……

2、再换一个思路,取序列变量的一个值。
a:=1;
a:=ref(enterbars,1);
这样传递也同样会出现上面的错误,无法编译完成。

现在我需要的是 : 将开仓以后的周期数传递给引用的公式,请问是否有其他的思路可以解决? 不一定非要用序列参数 enterbars,我现在只是希望能够传递开仓周期数。请大神帮忙解答。

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


加好友 发短信
等级:新手上路 帖子:26 积分:0 威望:0 精华:0 注册:2015/10/26 21:07:35
  发帖心情 Post By:2015/10/27 14:05:31    Post IP:59.42.231.241[显示全部帖子]

我测试了一下,是我表达有误,如果直接按编译公式是没有问题的,如果按“应用于图”才有问题。

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


加好友 发短信
等级:新手上路 帖子:26 积分:0 威望:0 精华:0 注册:2015/10/26 21:07:35
  发帖心情 Post By:2015/10/27 14:07:17    Post IP:59.42.231.241[显示全部帖子]

以下是单单编译公式,编译是可以正常通过的。

图片点击可在新窗口打开查看

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


加好友 发短信
等级:新手上路 帖子:26 积分:0 威望:0 精华:0 注册:2015/10/26 21:07:35
  发帖心情 Post By:2015/10/27 14:08:44    Post IP:59.42.231.241[显示全部帖子]

如果按应用于图,就会出现错误:

图片点击可在新窗口打开查看

 回到顶部
总数 26 1 2 3 下一页