以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  单步跟踪问题  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=174476)

--  作者:hzhmf
--  发布时间:2020/2/21 19:56:12
--  单步跟踪问题
以金字塔自带的“早盘突破系统”调试为例,在公式编辑窗口中按F5,对2月21日中证500股指2003的十分钟K线进行调试,依次执行“单步跟踪”后,变量中除了当前资产从0变为了1000000以外,其它变量均无数值(都是0),请问是什么原因?(从附图中可见,9:40就有了开仓信号,但到)
--  作者:hzhmf
--  发布时间:2020/2/21 20:03:53
--  

以金字塔自带的“早盘突破系统”调试为例,在公式编辑窗口中按F5,对2月21日中证500股指2003的十分钟K线进行调试,依次执行“单步跟踪”后,变量中除了当前资产从0变为了1000000以外,其它变量均无数值(都是0),请问是什么原因?(从附图中可见,9:40就有了开仓信号,但到10:10,当前持仓,CYC 仍然是0)


 


图片点击可在新窗口打开查看此主题相关图片如下:003.jpg
图片点击可在新窗口打开查看

--  作者:zm71212302
--  发布时间:2020/2/21 20:50:27
--  
单步调试数据切片没有读到你变量的那段代码上
--  作者:zm71212302
--  发布时间:2020/2/21 20:53:11
--  
当前持仓函数是取前一周期的持仓,当然在此根K线上没有的。下根K线就可以了
--  作者:无为剑
--  发布时间:2020/2/22 9:32:25
--  
没看到你的图上的公式代码,也不知道你的程序执行到那一行上了,建议按F8继续单步跟踪看一下,或者你将图截圈以提供更多信息给我们
--  作者:hzhmf
--  发布时间:2020/2/22 10:58:42
--  

代码是系统自带的,具体如下:

 

INPUT:NMIN(40,10,60,10);     //设置参数
INPUT:NOFFSET(3,1,20,1);     //设置参数
INPUT:LOTS(1,1,10000,1);      //设置参数
CYC:=BARSLAST(DATE>REF(DATE,1))+1;                                   //统计日内K线数
HIGHESTOF30MIN:=VALUEWHEN(TIME<=90000+NMIN*100,HHV(H,CYC));         //在从开盘到设定时间(默认参数开盘30分)内保存当天最高价
LOWESTOF30MIN:=VALUEWHEN(TIME<=90000+NMIN*100,LLV(L,CYC));         //在从开盘到设定时间(默认参数开盘30分)内保存当天最低价
IF HIGH >= HIGHESTOF30MIN + NOFFSET*MINDIFF AND HOLDING<=0  THEN  //如果最高价突破设定时间内的前高加设定偏移并且目前没有多单,那么
BEGIN
 MYPRICE: = HIGHESTOF30MIN + NOFFSET*MINDIFF;          //预设进场价.既等于设定时间内的前高加设定偏移
 IF OPEN > MYPRICE THEN                               //如果开盘价大于预设进场价,那么奋不顾身闯进去,(注:这是移植的,原设计并不一定完美,这时可能不是那么好成交的,我也不必多费唇舌了).
 BEGIN
  MYPRICE: = OPEN;
  SELLSHORT(HOLDING<0,0,LIMITR,MYPRICE);            //如果有空单先平
  BUY(HOLDING=0,LOTS,LIMITR,MYPRICE);              //如果没有多单则以开盘价开多LOTS手
 END
END
IF LOW <= LOWESTOF30MIN - NOFFSET*MINDIFF AND HOLDING>=0  THEN      //以下开空部分同上,只不过方向相反
BEGIN
 MYPRICE: = LOWESTOF30MIN - NOFFSET*MINDIFF;
 IF OPEN < MYPRICE THEN
 BEGIN
  MYPRICE: = OPEN;
  SELL(HOLDING>0,0,LIMITR,MYPRICE);
  BUYSHORT(HOLDING=0,LOTS,LIMITR,MYPRICE);
 END
END
IF TIME >= 145900 THEN                //收盘平仓
BEGIN
 SELL(HOLDING>0,0,LIMITR,OPEN);
 SELLSHORT(HOLDING<0,0,LIMITR,OPEN);
END

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;

 


--  作者:无为剑
--  发布时间:2020/2/22 11:38:11
--  
调试的时候,在编辑代码的界面上,在代码行的位置上会有个黄色箭头,这个箭头是执行到你代码行的标记,如果你根本就没有在某个周期上对代码进行执行,那么你是自然看不到变量的,请认真看一下我前面的帖子回复
--  作者:hzhmf
--  发布时间:2020/2/22 13:35:00
--  
我是看到了黄色箭头才问的,每单步执行一次,黄色箭头下移到下一条语句,对吧?请仔细看我的附图,已经执行到10:10的K线(显示为红色),CKC和当前持仓还是为0.
--  作者:无为剑
--  发布时间:2020/2/22 14:55:47
--  
你要确定K线已经执行到10:10的K线,并且你还需要按F8键,确认代码中的黄色箭头已经越过CYC这个变量,这样你才能知道CYC这个变量具体的计算数值是多少。
此外K线图上运行的公式,与你正在调试的公式,本质上是2个不同的运行环境,他们受是否除权操作,加载的K线多少,交易费率的设置等等诸多因素影响,你需要多学习调试技巧,多从调试信息中找到问题所在,目前除了公式编辑器上的调试外,我们还提供了诸多的调试手段,建议你认真学习一下 http://www.weistock.com/bbs/dispbbs.asp?boardid=16&Id=57075 问题4 中的描述各种技巧


--  作者:hzhmf
--  发布时间:2020/2/22 15:24:43
--  

你对自己家的软件也不熟悉。附图中调试窗口第4条记录(对应时间20/02/2110:10:00)显示为红色就代表执行到了10:10的K线。

至于说“你还需要按F8键,确认代码中的黄色箭头已经越过CYC这个变量,这样你才能知道CYC这个变量具体的计算数值是多少。”这我肯定已经试过的。

代码都发给你了,自己试试不就可以了,希望管理员能够真正找到答案,不要牵扯其它。