Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
lance0307 发表于: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周期

2楼
admin 发表于:2016/2/25 19:49:41
你用的序列模式还是逐K线?
3楼
admin 发表于:2016/2/25 20:21:48
for pos=barpos-todaybarcount downto barpos-todaybarcount-59 do begin
你在这句话上进入死循环了,建议你使用单步跟踪模式调试一下你的代码
4楼
lance0307 发表于:2016/2/26 9:49:16
我是逐K线模式
5楼
lance0307 发表于:2016/2/26 9:53:27
这个循环哪里有死循环,请麻烦分析

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

就是不能写成指标
6楼
lance0307 发表于: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
7楼
yukizzc 发表于:2016/2/26 10:38:57
被应用公式和引用的公式都用逐k
8楼
lance0307 发表于:2016/2/26 11:27:07
可以了
谢谢!
共8 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.01563 s, 2 queries.