等级: 免费版
- 注册:
- 2023-9-29
- 曾用名:
|
你好! 我测试序列变量的REF能否正常获取,结果发现异常行为(由日志打印数值得出是异常).
我的代码如下:
// version: 0.1
RUNMODE : 0; //指定逐K模式
DBG_PATH := 'D:\'; //调试输出文件路径
DBG_LOG_FILE := DBG_PATH & 'debug_Variable.txt'; //调试输出文件名
VARIABLE : UNINIT_VAL = -99999;
IF BARPOS=1 THEN
BEGIN
EXTGBDATASET(STKLABEL&'ccd', UNINIT_VAL); //第一根K初始化全局变量值
END
//IF NOT(ISLASTBAR) OR BARPOS < 100 THEN EXIT;
//////////////////////////////////////////////////////////////////
// 调试输出最新K时间戳相关
//////////////////////////////////////////////////////////////////
reldate := DATE+19000000;
current_date_str := NUMTOSTR(reldate,0); //日期字符串
current_time_str := NUMTOSTR(HOUR,0) & ':' & NUMTOSTR(MINUTE,0) & ':' & NUMTOSTR(SECOND,0);
k_stamp := '[' & current_date_str & ' ' & current_time_str & '] ';
//////////////////////////////////////////////////////////////////
// end of 调试输出最新K时间戳相关
//////////////////////////////////////////////////////////////////
//DEBUGFILE(DBG_LOG_FILE, k_stamp&STKLABEL & ' k_pos:' & NUMTOSTR(k_pos,0),0);
DEBUGFILE(DBG_LOG_FILE, k_stamp&STKLABEL & ' BARPOS:' & NUMTOSTR(BARPOS,0), 0);
CCD := STKINDI('','MARGIN_AMP.DBZ',0,-1,0);
g_ccd := EXTGBDATA(STKLABEL&'ccd'); //取保存的ccd值 即CCD前值
pre_ccd := REF(CCD,1); // 取CCD前值
if g_ccd <> UNINIT_VAL and g_ccd <> pre_ccd then
begin
//打印异常现象
DEBUGFILE(DBG_LOG_FILE, k_stamp&STKLABEL & ' CCD:' & NUMTOSTR(CCD,0)& ' pre_ccd:' & NUMTOSTR(pre_ccd,0) & ' g_ccd:' & NUMTOSTR(g_ccd,0) & ' WARNING: pre_ccd <> g_ccd', 0);
end
else begin
DEBUGFILE(DBG_LOG_FILE, k_stamp&STKLABEL & ' CCD:' & NUMTOSTR(CCD,0)& ' pre_ccd:' & NUMTOSTR(pre_ccd,0) & ' g_ccd:' & NUMTOSTR(g_ccd,0), 0);
end
EXTGBDATASET(STKLABEL&'ccd', CCD); //保存当前CCD值
|
-
测试配置
-
打印的日志
|