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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 写的获取上一日结算价的代码导致程序崩溃

   

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


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

主题:写的获取上一日结算价的代码导致程序崩溃

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


加好友 发短信
等级:论坛游侠 帖子:441 积分:0 威望:0 精华:0 注册:2014/7/2 10:58:53
写的获取上一日结算价的代码导致程序崩溃  发帖心情 Post By:2016/2/25 19:17:50 [只看该作者]

todaybarcount:=TODAYBAR;
a1:=0;
v1:=0;
for pos=barpos-todaybarcount downto barpos-todaybarcount-59 do begin
if pos<1 or (pos>=1 and date[pos]!=date[barpos-todaybarcount]) then begin
break;
end
else begin
a1:=a1+amount[pos];
v1:=v1+vol[pos];
end
end
last1jsj:=a1/v1/multiplier;
last1jsj:=INTPART(last1jsj/MINDIFF);
last1jsj:=last1jsj*MINDIFF;
请问这段代码有什么问题存在吗?为什么一架载就会导致程序崩溃提示内存不足

我是写成一个指标,  其他的地方会调用这个指标并传入1M周期


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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2016/2/25 19:49:41 [只看该作者]

你用的序列模式还是逐K线?

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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2016/2/25 20:21:48 [只看该作者]

for pos=barpos-todaybarcount downto barpos-todaybarcount-59 do begin
你在这句话上进入死循环了,建议你使用单步跟踪模式调试一下你的代码

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


加好友 发短信
等级:论坛游侠 帖子:441 积分:0 威望:0 精华:0 注册:2014/7/2 10:58:53
  发帖心情 Post By:2016/2/26 9:49:16 [只看该作者]

我是逐K线模式

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


加好友 发短信
等级:论坛游侠 帖子:441 积分:0 威望:0 精华:0 注册:2014/7/2 10:58:53
  发帖心情 Post By:2016/2/26 9:53:27 [只看该作者]

这个循环哪里有死循环,请麻烦分析

我这段代码如果不写成指标,直接放到策略代码里加载到1M的图表上是没有问题的,结算价也是对的,我都检验过了

就是不能写成指标

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


加好友 发短信
等级:论坛游侠 帖子:441 积分:0 威望:0 精华:0 注册:2014/7/2 10:58:53
  发帖心情 Post By:2016/2/26 10:03:30 [只看该作者]

我是这样调用这个指标的,图表1M周期


if tradedate != Date then BEGIN
last1jsj:=STKINDI(STKLABEL,'getlastjsj.getlastjsj',0,1,0);
end

这样调用指标就会导致程序崩溃

但如果直接按下面这种方式直接写在策略里面就没有问题
if tradedate != Date then BEGIN
todaybarcount:=TODAYBAR; 
a1:=0; 
v1:=0;
 for pos=barpos-todaybarcount downto barpos-todaybarcount-59 do begin 
 if pos<1 or (pos>=1 and date[pos]!=date[barpos-todaybarcount]) then begin 
 break; 
 end 
 else begin 
 a1:=a1+amount[pos];
 v1:=v1+vol[pos];
 end 
end 
last1jsj:=a1/v1/multiplier;
last1jsj:=INTPART(last1jsj/MINDIFF); 
last1jsj:=last1jsj*MINDIFF;
end

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2016/2/26 10:38:57 [只看该作者]

被应用公式和引用的公式都用逐k

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


加好友 发短信
等级:论坛游侠 帖子:441 积分:0 威望:0 精华:0 注册:2014/7/2 10:58:53
  发帖心情 Post By:2016/2/26 11:27:07 [只看该作者]

可以了
谢谢!

 回到顶部