以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  跨周期调用数据不能及时更新  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=62166)

--  作者:滚雪球
--  发布时间:2014/2/28 12:44:28
--  跨周期调用数据不能及时更新
我的模型是1分钟周期下引用日线数据,我采取的方式是编一个日线的公式,然后在1分钟周期下使用##来调用。
我两次在早上开盘时发现日线数据不对,而且我之前也手工通过自定义补充数据进行了历史数据的补充,但是在
1分钟周期下它有时就是自己变不过来,而要把周期切换到日线以后再切换回来才能变过来,这个问题的存在对于
想全自动交易的用户来说影响很大,目前不得不人工检查,希望金字塔能够尽快解决。

--  作者:yukizzc
--  发布时间:2014/2/28 16:07:09
--  

有没有右键查看过日线数据是否确实补充了,这个现象是偶尔出现的吗?下次出现你在1分钟下不显示日线数据时先右键查看下日线数据,本地这边也测试下是否存在该问题。


--  作者:滚雪球
--  发布时间:2014/2/28 16:24:21
--  
100%是补充过了,我遇到过两次,不是每次出现。
--  作者:lichenghu
--  发布时间:2014/3/3 8:59:05
--  
引用日线指标下什么值?能给个反应问题的简单代码吗?
--  作者:滚雪球
--  发布时间:2014/3/3 15:21:35
--  
大概是这样

先有一个日线指标DAYATR,大概是这样
TR1 := HIGH-LOW; //计算日内振幅
ATRD : EMA(TR1,M);

然后在1分钟线下

CYC:=BARSLAST(DATE<>REF(DATE,1))+1;

TRD:=HHV(HIGH,CYC)-LLV(LOW,CYC);

//如果振幅超过60点,则把今天的数据也包括进去,否则不含当天的数据
IF TRD>60 THEN BEGIN 
ATRD := "DAYATR.ATRD#DAY"; 
END
ELSE BEGIN 
ATRD := "DAYATR.ATRD##DAY";
END

ATRD1:ATRD;

发现两种错误:
1. 就算日内只是简单的引用 ATRD := "DAYATR.ATRD##DAY"; ,有时早上补充了过去的日线和1分钟线,如果是在1分钟的界面下,也有可能不刷新,必须切换到日线下再切换回来才能刷新。
2. 如果日内波幅超过60,程序应该取新的ATRD值,也会出现刷新的问题。


--  作者:yukizzc
--  发布时间:2014/3/3 15:35:28
--  
本地按你的代码,直接加载到1分钟图上然后扩充1分钟数据ATRD的显示没有问题啊。
--  作者:滚雪球
--  发布时间:2014/3/3 16:02:40
--  
问题主要是刷新,你只要重新载入一下图表肯定都正确了,单实际跑的时候我遇到了一次不行,后来没敢再用。
--  作者:lichenghu
--  发布时间:2014/3/3 16:06:48
--  

 引用不会存在问题的,您这个问题目前还没用户反馈过。

 

有可能是您本地数据刷新的问题导致值没显示


--  作者:滚雪球
--  发布时间:2014/3/3 16:28:10
--  
这个问题估计一般很难有人能发现,除非象我这样自己编代码,还自己盯着交易,并且还把用到的指标都显示出来了,还要碰巧出现问题的时候你发现了,这几个条件缺一不可。
这肯定不是显示的问题,我的交易记录显示程序是按照没有扩展ATRD的数据交易的,记录和后来重新加载过的图表的信号都不一致。
另外我现在每天早上开盘前都会去仔细检查ATRD这个值对不对(用几个金字塔的数据比对),现在是第二次发现数据不对。
一般典型的场景是这样的:
早上打开金字塔软件,登录,补充自定义数据,打开交易的合约1分钟图,核对ATRD数据,如果有误切换到日线再切换回来。

--  作者:lichenghu
--  发布时间:2014/3/3 16:32:42
--  

您不用盯着看,如果确实有问题 。用DEBUGFILE输出到本地不就行了