金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
12
返回列表 发新帖
楼主: 代人发帖

当最新K所处的barpos大于后, REF函数获取的数据是不对的.

[复制链接]

38

主题

9989

帖子

9999

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-3-5 15:42 | 显示全部楼层
这个目前是大部分情况都是没有问题的,你常规均线其实是没问题的,你那个完全是你要统计历史所有k等于需要保持前后数据量完全一致情况下会导致数据量超

正常情况使用,比如你就算一个10日20日均线这种都是没问题的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

7

主题

24

帖子

24

积分

Rank: 1

等级: 新手上路

注册:
2021-5-25
曾用名:
发表于 2025-3-5 16:58 | 显示全部楼层
1.你说的没问题,是因为你没有去测试过!   
2.用户需要后台回测. 你们系统应该确保序列数据正常. 你给的这些理由不应该成为借口!
  其实我也看不懂你说的这个'你那个完全是你要统计历史所有k等于需要保持前后数据量完全一致情况下会导致数据量超'是什么意思
3.'正常情况使用' 是什么意思?
  我经过测试, 就算取小点的5日均线,经过调试打印也是K线序列数据不对啊


补充内容 (2025-3-5 16:59):
6日均线

代码及注释

代码及注释

测试结果及说明

测试结果及说明
回复

使用道具 举报

7

主题

24

帖子

24

积分

Rank: 1

等级: 新手上路

注册:
2021-5-25
曾用名:
发表于 2025-3-5 17:03 | 显示全部楼层
技术008 发表于 2025-3-5 15:42
这个目前是大部分情况都是没有问题的,你常规均线其实是没问题的,你那个完全是你要统计历史所有k等于需要 ...

代码如下:
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确实可以取到序列值 ,并不能说明序列值是正确的!
回复

使用道具 举报

7

主题

24

帖子

24

积分

Rank: 1

等级: 新手上路

注册:
2021-5-25
曾用名:
发表于 2025-3-6 10:43 | 显示全部楼层
技术006 发表于 2025-3-5 15:37
抱歉,目前的回测机制满足不了你的需求。回测机制中执行过程在之前已经解释了。

1.这个回测是最基本的,没有回测,怎么开发和验证策略? 不验证,就跑实盘策略,那是那资金开玩笑啊
2.回测已经说明了系列变量获取的数据不对(REF取的). 你们应该修改这个BUG,而不应该一句:'回测机制满足不了你的需求'了事!  我开了会员, 你们不应该这个基本的回测环境都不满足啊
3.我的示例策略代码并不复杂,可以说非常简单,就是调用公式计算值, 为什么就之前的序列值就是不对呢?
回复

使用道具 举报

7

主题

24

帖子

24

积分

Rank: 1

等级: 新手上路

注册:
2021-5-25
曾用名:
发表于 2025-3-6 10:44 | 显示全部楼层
MARGIN_AMP公式如下:
A:=(C/REF(C,1)-1)*100;
B:=-(REF(C,1)/C-1)*100;
T:=REF(C,1)<C;
TK:=IF(T,A,B);  
DBZ:SUM(TK,0);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-4-18 21:24 , Processed in 0.121718 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表