金字塔决策交易系统

标题: 断点调试 [打印本页]

作者: 陈涛    时间: 2021-12-1 15:13
标题: 断点调试
我在软件中间设置断点,以检查 中间变量的值是否正确。我发现 数组变量hold_v[0] 中的值一直为0,明明设置为1(hold_v[0]=1),但还是没起作用。设置断点后,说的是运行到断点可看,“运行”是启动调试还是 应用于图表 或 进行公式测试?“运行” 是用这几种方式执行? 另外python 有print() 输出变量调试功能,但金字塔没有,有个 msgout(), 不方便,好有啥更好的方式找出程序执行中数据变量 错误的 方法?


作者: 技术009    时间: 2021-12-1 15:20
1.金字塔里数组下标从1开始的。
2.设置断点之后 直接应用到图表上即可。
作者: 陈涛    时间: 2021-12-2 11:27
金字塔数组定义后,给数组赋值,立刻显示数值内容值,结果不起作用,还是原来之前的值,这导致数据数据没法用?如何解决?
作者: 技术009    时间: 2021-12-2 11:30
贴下你的代码。
作者: 陈涛    时间: 2021-12-2 11:30

VARIABLE strv:= '',top_stock:= '';
VARIABLE CONDITION_IN := 0;
VARIABLE hold_v[NDAY] := 0;
VARIABLE hold_d[NDAY] := 0;

If BarPos = 1 Then
Begin
        //SETPYTHONVAL('day_ahead',0,dayahead); python 文件类型 控制参数 在python端程序传不过去
        hold_v[NDAY]:= 0;
        hold_d[NDAY]:= 0;
        //MSGOUT(1,NUMTOSTR(NDAY,0) );
        //MSGOUT(1,numtostr(topN,0) );
End;



//VARIABLE  day_cn:= 0;
if date <> ref(date,1)THEN
begin
        a:=date+19000000;
    SETPYTHONVAL('date',0,a);
   
    FIREPYHANDLEBAR;  //触发Python中的Handle_bar方法  
        i:= 1;
    condition_in:= 0;
        while i<=topN and condition_in = 0 DO
        BEGIN
                strv:= 's'+numtostr(i,0);
                top_stock: getpythonval(strv),linethick0;
                if stklabel = top_stock THEN
                begin
                    condition_in:= 1;
                end;
                i:= i + 1;
                //MSGOUT(date+19000000>=20210910,top_stock);
                //temp: numtostr(hold_v[0],2);
                //MSGOUT(date+19000000>=20210910,temp);
        END;
        //temp: numtostr(hold_v[0],2);
        //MSGOUT(date+19000000>=20210910,temp);
        j:= 1;
        WHILE hold_v[j] > 0 and j <= NDAY DO    // adding one new day for all the remaining
        BEGIN
                hold_d[j]: hold_d[j] + 1;  // shift one day for remaining hold_v stock
                j:= j + 1;
                //i:= hold_v[j];       
                //MSGOUT(date+19000000>=20210910,numtostr(i,0));
        END;
        if j < NDAY THEN   // less than NDAY and set zero after the end part
        BEGIN
                hold_v[j]:= 0;
                hold_d[j]:= 0;
        END;       
end;
hold_d[1]: 1313;
temp_v:hold_d[1];
temp_str:= NUMTOSTR((temp_v,0));
//MSGOUT(date<>ref(date,1),temp_str);


上面数组变量 hold_v[1] 和 hold_d[1] 赋值都不起作用?
作者: 技术008    时间: 2021-12-2 13:05
variable:ss[10]=0;
ss[1]:=1;
a:ss[1]
作者: 技术009    时间: 2021-12-2 13:15
NDAY:=1;
topN:=1;
VARIABLE:strv:= '',top_stock:= '';
VARIABLE:CONDITION_IN := 0;
VARIABLE:hold_v[NDAY] := 0;
VARIABLE:hold_d[NDAY] := 0;



hold_d[1]:=1313;
temp_v:hold_d[1];


作者: 陈涛    时间: 2021-12-2 16:02
谢谢,知道问题出在哪里了,定义少了个:号,编译系统没有发现就通过了
作者: 技术006    时间: 2021-12-2 17:11
这种不属于语法错误,pel中,单独的等号代表比较
作者: 陈涛    时间: 2021-12-3 09:20
INPUT:fund(1000000,0,1000000,1),fund_double(1,0,10,0.1),direction(1,-1,1,1),in_time(100000,0,240000,1),exit_time(110000,0,240000,1),loc_stock(1,1,100,1),len_stock(10,1,100,1),NDAY_hold(5,1,10,1);
老是提醒loc_stock 错误,删了重写或拷贝别的编译通过的过来,依然提示这个错误,逻辑简单,是啥原因?
作者: 技术009    时间: 2021-12-3 09:26
你这个参数  最大是0 最小是1  这明显不对的啊。
作者: 陈涛    时间: 2021-12-6 17:32
金字塔 pel 编程 有 读取文件(.csv 文本文件,里面为 另类品种每日 的 交易日期、时间、开、高、低、收、成交量)数据? 已经会写文件数据的功能? 主要是读取部分
作者: 技术006    时间: 2021-12-6 19:57
pel不支持这类操作
作者: 陈涛    时间: 2021-12-7 16:33
金子塔中增加一个品种数据,比如陆股通日线,有开、高、低、手、量 数据,如何操作?
作者: 技术012    时间: 2021-12-7 16:47
数据导入看下该说明 :https://www.weistock.com/docs/HE ... E%E5%AF%BC%E5%85%A5
作者: 陈涛    时间: 2021-12-21 18:35
金字塔系统断点测试调试,用单步调试,做了,对于变量中内容为字符,显示是错误的信息,数值型才正确显示。对于字符,我采用msg(1,str_v)输出字符,结果信息窗口没有显示,这不正常。 有没有通过print()函数输出调试方法?python和 MC等系统 可以print()输出调试数据,从而很快
作者: 技术006    时间: 2021-12-21 21:21
本帖最后由 技术006 于 2021-12-21 21:24 编辑

pel中,压根没必要用调试这种功能,直接加载到图表中看结果就行。

注MSGOUT在逐k模式下,是可以输出历史k上的结果的

作者: 陈涛    时间: 2021-12-22 16:40
pel 直接加载到图表看结果问题:1、日线上可以,5分钟周期上比较麻烦;2、变量只能是数值,对于字符变量完全乱显示(不知道为何解决不了?) 3、当前比如这根5分钟周期上有个条件语句或循环语句是否被执行问题。
作者: 技术006    时间: 2021-12-22 16:43
没办法。


作者: 陈涛    时间: 2021-12-22 16:49
根据可转债品种构造了可转债指数,可转债指数 可以通过刷新产生 日线的指数数据,但是有个可转债品种的分钟数据,指数的5分钟数据刷新却产生不了,如何产生5分钟指数数据?以及如何在盘中设置实时生成指数的5分钟数据?
作者: 技术010    时间: 2021-12-22 16:59
本帖最后由 技术010 于 2021-12-22 17:07 编辑

连接上股票行情,当天的分笔数据是实时推送的,即可刷新当天的分钟数据,默认是60秒刷新一次。历史上的分钟数据是刷新不出来的,只能当天收盘后,自己做收盘操作,才会保存下今天自建指数的分钟数据。





欢迎光临 金字塔决策交易系统 (https://www.weistock.com/bbs/) Powered by Discuz! X3.4