以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  关于debugfile在同一根K线重复输出的问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=168212)

--  作者:infocell
--  发布时间:2019/2/14 7:47:15
--  关于debugfile在同一根K线重复输出的问题

我在策略在初始化的时候,用debugfile输出品种等信息到txt文件,用全局变量控制整个策略运行过程只输出一次,但在同一根K线会重复输出。

 

策略跑在图表程序化交易,交易选项是等间隔 1秒(用走完K线出现过会漏单),每个tick刷新,金字塔版本是5.0

 

IF Is_init=1  THEN BEGIN

 

DEBUGFILE(\'C:\\myTEST.TXT\',STRLEFT(FORMULANAME,2)&STRRIGHT(FORMULANAME,2)&STKNAME&\'序列位置:\'&numtostr(BARPOS,0),0);

Is_init:=0;

END

 

如何做到同一根K线只输出一条信息?


2019-02-13 21:00:35.289    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:35.539    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:35.789    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:36.039    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:36.289    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:36.539    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:36.789    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:37.039    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:37.289    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:37.539    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:37.789    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:38.289    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:38.540    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:38.790    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:39.040    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:39.290    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:39.540    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:39.790    6B20甲醇1905序列位置:112,当前日期:1190213
2019-02-13 21:00:40.040    6B20甲醇1905序列位置:112,当前日期:1190213


--  作者:yukizzc
--  发布时间:2019/2/14 8:59:16
--  
GLOBALVARIABLE:is_init=0;
if barpos>is_init then
begin
 debugfile();
 is_init:=barpos;
end

--  作者:infocell
--  发布时间:2019/2/14 11:24:37
--  

非常感谢回复,我现在的问题是同一根K线内反复输出,应当是每个tick输出一次,下一根K线的时候就不会输出。

 

我感觉用上面的代码,应当可以防止下一根K线输出,但不知道能否防止同一个K线重得输出,我在debugfile前面加了islastbar,也解决不了。

 

我代码中用的是如下,不知改成GLOBALVARIABLE能不能起作用?

 

VARIABLE:is_init=1;
if is_init then
begin
 debugfile();
 is_init:=0;
end


--  作者:FireScript
--  发布时间:2019/2/14 11:26:37
--  
 不能用VARIABLE,你按照2楼的试下就知道了。并且还需要用barpos来限制当前K的重复输出。
--  作者:infocell
--  发布时间:2019/2/14 16:07:45
--  

我夜盘试一下,如果这个可以,那就太神奇了,还是有点不太理解这个机制的原理。

 

毕竟同一个K线内部,barpos是一样的。


--  作者:FireScript
--  发布时间:2019/2/14 16:11:27
--  
在你在当前K给全局变量赋值之前,它保存的都是上一个K的barpos 所以下面这个if的条件一个K只能成立一次。

GLOBALVARIABLE:is_init=0;
if barpos>is_init then
begin
 debugfile();
 is_init:=barpos;
end