以文本方式查看主题

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

--  作者:Ritter
--  发布时间:2020/12/3 12:59:51
--  后台问题请教
后台模拟时,有时候会出现下述问题:
1.后台精细化回测明细中有开仓,但实际模拟盘未开仓;
2.回测debugfile输出的文档中满足开仓条件,但THOLDING的输出为0;

请问这是什么原因导致的??谢谢!!



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

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2020/12/3 13:00:31编辑过]

--  作者:FireScript
--  发布时间:2020/12/3 13:14:56
--  

TBUYHOLDINGEX()
TSELLHOLDINGEX()
输出持仓情况,这里不要用THOLDING。

另外你这个输出文本的代码和开仓的代码 的条件需要确保下控制的是一致的。你直接把输出语句和开仓语句写在一起。

--  作者:Ritter
--  发布时间:2020/12/3 13:33:06
--  
1.TBUYHOLDINGEX()函数用在DEBUGFILE中不起作用;
 
2.关键问题是回测中有开仓,实际模拟中无开仓的问题。
 
 
代码如下:

 

 

BUYCOND:=BULL AND B_COND  AND BVOL;

IF ISLASTBAR THEN
  DEBUGFILE(\'D:\\TEST.TXT\',\'       buycond:%.0f\',buycond);
IF BUYCOND THEN BEGIN
 TSELLSHORT(1,0,MKT);
 TBUY(TBUYHOLDINGEX(\'\',\'\',1)=0,CW%,MKT),PERTRADER;
 IF ISLASTBAR THEN BEGIN
  DEBUGFILE(\'D:\\TEST.TXT\',\'TBUYHOLDINGEX(\'\',\'\',1):%.0f\',TBUYHOLDINGEX(\'\',\'\',1));
  DEBUGFILE(\'D:\\TEST.TXT\',\'THOLDING:%.0f\',THOLDING);
     END
END


--  作者:banzhuan
--  发布时间:2020/12/3 13:48:24
--  
1、DEBUGFILE(\'D:\\TEST.TXT\',\'\'多持:%.0f\',TBUYHOLDINGEX(\'\',\'\',1));// 改成这样输出

2、实盘运行中,建议也同时输出开仓条件看下

--  作者:FireScript
--  发布时间:2020/12/3 14:04:12
--  
1.这里改下,那个括号去掉,否则程序这里会无法识别。
DEBUGFILE(\'D:\\TEST.TXT\',\'TBUYHOLDINGEX:%.0f\',TBUYHOLDINGEX(\'\',\'\',1));

2.“关键问题是回测中有开仓,实际模拟中无开仓的问题。”模拟盘文本记录中的条件是否满足了呢?今天上午回测里面是有信号,但是模拟交易时候可能存在信号没捕捉到(固定轮询时间间隔内出的信号,然后又消失了)的问题。建议你可以再运行模拟观察下,是否会一直出现记录的条件满足,但是没有开仓的情况。


--  作者:Ritter
--  发布时间:2020/12/3 14:08:57
--  

还是不行,不是输出的问题。

 


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


--  作者:banzhuan
--  发布时间:2020/12/3 14:52:27
--  
我们本地先跟踪一下,稍后个给您答复
--  作者:FireScript
--  发布时间:2020/12/3 15:03:48
--  
 你加2句先  看下回测里面的第一次开仓的位置到底在什么地方:

 tstr:=NUMTOSTR(date,0)+\'_\'+NUMTOSTR(time,0);
 DEBUGFILE(\'D:\\TEST.TXT\',\'       开仓位置:\'+tstr,0);

这2句直接写在下单语句后面即可。


如果这里记录的开仓位置和回测明细里面的位置是一样的,那说明可能是持仓函数在输出时候的问题。我本地测试是记录的位置和回测里的位置是一致的。但是这个持仓在第一次时候记录的不一样。

--  作者:Ritter
--  发布时间:2020/12/3 16:09:10
--  

1.模拟用的是K线走完,理论上不存在信号闪烁;

 

2.昨天下午开始模拟,24个品种,截止目前,有三个品种各出现了一次满足条件不开仓的问题;

 

3.分别回测了多个品种,还是会出现类似问题,输出的开仓位置和回测明细里的位置一致,如果是持仓函数输出的问题,那模拟的时候不应该出现这个问题呀。

 

 


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

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


--  作者:banzhuan
--  发布时间:2020/12/3 16:29:16
--  
第二个问题,你是如何判断满足条件不开仓呢? 是输出日志中条件满足了,但是账户栏没有委托记录吗?    后台是没法和图表直接做对比的,两者的运行机制有很大区别。 只能用日志输出跟踪是否满足了开仓条件。


另外,回测时的日志第一次满足条件时,持仓数量没显示可能是机制的问题,明天工作人员测试下实盘运行中是否有这个问题。