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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]stkindi的参数传送问题

   

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


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

主题:[求助]stkindi的参数传送问题

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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2019/4/5 22:38:44
[求助]stkindi的参数传送问题  发帖心情 Post By:2019/10/2 23:16:01    Post IP:218.108.135.128[只看该作者]

我在测试stkindi的参数传送,代码如下

//tp:=12345678;//ok
tp:=c;               //error

m1:=NUMTOSTR(tp,0);
y:=stkindi('','sub02.aa('&m1&')',0,1,0);

当tp为常数时传送正常,tp为c时报错“公式过多,超过50个”

请教如何理解“公式过多,超过50个”这个信息?
这里“公式”是指什么?






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


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

就是指跨周期调用的那个公式 ,大致意思就是进行的跨周期调用的次数太多了。
你这里是个特殊情况。系统序列变量如 O H L C 不能这样作为参数传递进去,否则K线数多了就会出现这个报错。序列变量是特殊的变量,差不多相当于一个数组,一组数据,这就会导致在每个K上都会被视作参数不一样的跨周期调用了。从而导致上面的报错。 


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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2019/4/5 22:38:44
  发帖心情 Post By:2019/10/9 9:41:03    Post IP:218.108.135.128[只看该作者]

谢谢超级版主FireScript!

我想跨周期引用交易系统函数,公式2引用公式1。
程序如下,但是没有结果。请版主帮我看看有什么问题。谢谢


//------sub1008公式1
input: cmd(0,0,10,1);
if cmd=1 then  sell(1,0,marketr);     //平多
if cmd=2 then  sellshort(1,0,marketr);//平空
aa:=holding;


//------------公式2
T1:=TIME>=140000 and TIME<141000;//开多时间
T2:=TIME>=142000;                //平多时间
T3:=TIME>=143000 and TIME<144000;//开空时间
T4:=TIME>=145000;                //平多时间

buy(T1 and holding=0,1,MARKETR);
if T2 then y1:stkindi('','sub1008.aa(1)',0,0,0);

buyshort(T3 and holding=0,1,MARKETR);
if T4 then y2:stkindi('','sub1008.aa(2)',0,0,0);


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


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

 第一个公式有问题。holding是虚拟持仓,在图表策略里面如果没有开仓语句,这个holding初始是0. 你公式1只有平仓语句,holding只会是0

此外还需要注意的就是 一般被引用的变量 最好用 “:” 定义 而不是用“:=”定义。


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


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

然后就是第二个公式里面:
T1:=TIME>=140000 and TIME<141000;//开多时间
T2:=TIME>=142000;                //平多时间
T3:=TIME>=143000 and TIME<144000;//开空时间
T4:=TIME>=145000;                //平多时间

time返回的一般默认是金字塔时间:

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

你上面代码里面 如果你想表达北京时间的这个区间,你可能要改成金字塔时间的表达方式,也就是加上四个小时。



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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2019/4/5 22:38:44
  发帖心情 Post By:2019/10/9 11:28:49    Post IP:218.108.135.128[只看该作者]

lk:time;
显示时间,返回结果与金字塔时间是一致的。
我的电脑上没有你图片上括号显示部分,仅显示北京时间



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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2019/4/5 22:38:44
  发帖心情 Post By:2019/10/9 13:02:13    Post IP:218.108.135.128[只看该作者]

我作了修改,不用时间函数,如下:

//------sub1008公式1
aa:sell(1,0,marketr);     //平多


//------------公式2
T1:=count(c>o,2)=2;
buy(T1 and holding=0,1,MARKETR);  //开多

T2:=count(c<o,2)=2;
//sell(T2 and holding>0,0,marketr); //ok
if T2 then y1:stkindi('','sub1008.aa',0,0,0);  //跨周期引用没有反应

不知哪里出错,请版主指教,谢谢。




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


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

能引用过来,但是值应该恒为0。


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


这句代码 你直接加载看下就知道了。恒为0的。
aa:sell(1,0,marketr);     //平多

就光裸一个平仓语句 aa只会是0.
[此贴子已经被作者于2019/10/9 13:12:16编辑过]


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


加好友 发短信
等级:新手上路 帖子:25 积分:0 威望:0 精华:0 注册:2019/4/5 22:38:44
  发帖心情 Post By:2019/10/9 13:45:50    Post IP:218.108.135.128[只看该作者]

aa我是作为一个引用标号,没有指定意义。

问题主要是sell(1,0,marketr); 没有平多操作,实盘和回测都没有动作。



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


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

 图表策略 上没有开仓语句,这个平多是无论如何都不会触发的。图表策略加载在图表上,有开才能有平。图表策略在K线图上的信号是基于K线数据 和策略代码逻辑 进行的模拟下单 所产生的。你如果只写一个平仓语句是不行的。


命数如织,当如磐石。
 回到顶部
总数 27 1 2 3 下一页