
等级: 新手上路
- 注册:
- 2021-5-25
- 曾用名:
|
代码如下:
version := '0.4';
RUNMODE : 0; //指定逐K模式
TMP_A : C;
UBOUND(TMP_A);
DBG_PATH := 'D:\'; //调试输出文件路径
DBG_LOG_FILE := DBG_PATH & 'debug_Variable' & version & ' .txt'; //调试输出文件名
VARIABLE : UNINIT_VAL = -99999;
IF BARPOS=1 THEN
BEGIN
EXTGBDATASET(STKLABEL&'ccd', UNINIT_VAL); //第一根K初始化全局变量值
END
variable: tmpccds[6]=0;
//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 & ' 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,2)& ' pre_ccd:' & NUMTOSTR(pre_ccd,2) & ' g_ccd:' & NUMTOSTR(g_ccd,2) & ' WARNING: pre_ccd <> g_ccd', 0);
end
else begin
DEBUGFILE(DBG_LOG_FILE, k_stamp&STKLABEL & ' CCD:' & NUMTOSTR(CCD,2)& ' pre_ccd:' & NUMTOSTR(pre_ccd,2) & ' g_ccd:' & NUMTOSTR(g_ccd,2), 0);
end
EXTGBDATASET(STKLABEL&'ccd', CCD); //保存当前CCD值
ccd_ma := MA(CCD, 6);
// ------------------检查CCD的序列值是否可以通过REF获取---------------
ck_ccd_lst_str := ' REF(CCD,5):' & NUMTOSTR(REF(CCD,5),2) & ' REF(CCD,4):' & NUMTOSTR(REF(CCD,4),2) & ' REF(CCD,3):' & NUMTOSTR(REF(CCD,3),2) & ' REF(CCD,2):'
& NUMTOSTR(REF(CCD,2),2) & ' REF(CCD,1):' & NUMTOSTR(REF(CCD,1),2) & ' CCD:' & NUMTOSTR(CCD,2);
DEBUGFILE(DBG_LOG_FILE, k_stamp&STKLABEL & ck_ccd_lst_str, 0); //打印CCD序列值,以便对照之前的数据
tmpccds[1] := REF(CCD,5);
tmpccds[2] := REF(CCD,4);
tmpccds[3] := REF(CCD,3);
tmpccds[4] := REF(CCD,2);
tmpccds[5] := REF(CCD,1);
tmpccds[6] := CCD;
ccd_ma_1 := MA(tmpccds, 6); //利用REF获取的序列值计算MA
DEBUGFILE(DBG_LOG_FILE, k_stamp&STKLABEL & ' ccd_ma:'& NUMTOSTR(ccd_ma,2) & ' ccd_ma_1:'& NUMTOSTR(ccd_ma_1,2), 0); //若相等,说明REF确实可以取到序列值
补充内容 (2025-3-5 17:04):
REF确实可以取到序列值 ,并不能说明序列值是正确的! |
|