以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  高级功能研发区  (http://www.weistock.com/bbs/list.asp?boardid=5)
----  为什么经常读取不到前复权的值  (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=53500)

--  作者:soarhigh
--  发布时间:2013/6/30 21:03:34
--  为什么经常读取不到前复权的值

 

代码如下:

 

stData.m_dataType = DAY_DATA;//日线
  stData.m_bIsPow = 1; //是否复权
  stData.m_nPowType = 0;
 
  if(g_pMainFormework->GetDataInfo(&stData))
  {   

     /……/

 }

 

为什么有的时候读出来的值是前复权的,有时候又是没有复权的。但大多数时候都是不复权的。很不稳定。

到底是怎么回事啊?


--  作者:soarhigh
--  发布时间:2013/7/1 14:22:03
--  周俞蘅:10月10现货沥青/燃油操作建议+后市行情走势分析

还有,试了一下,即便在观察股票图形的窗口,我按“复权”按钮F11,很多时候,图形也没有丝毫反应。

但有的时候按F11,图形又会变成复权价格。

是金字塔的一个bug吗?


--  作者:王锋
--  发布时间:2013/7/1 14:53:53
--  
新版金字塔对这个字段结构做了升级,你看看新版下的这个结构的描述,是不是跟你旧版不一样
--  作者:soarhigh
--  发布时间:2013/7/1 15:27:09
--  

你说的新版下的结构就和新版本安装完后的addindemo中的结构是一直的吗?是如下吗?

typedef struct
{
 //////////////////////////////////////////////////////////////////////////
 //调用数据信息
 DWORD   m_dwVersion;   //调用软件版本(V2.10 : 0x210)
 DWORD   m_dwSerial;    //调用软件序列号
 char   m_szLabel[10];   //调用的品种代码
 WORD   m_wMarket;    //调用的品种市场,比如上海为\'HS\'
 CYC_DATA_TYPE m_dataType;    //调用数据类型
 BYTE   m_bIsPow;    //是否复权
 BYTE   m_nPowType;    //复权类别 0向前复权 1向后复权
 BYTE   m_bIsReversePrice;  //是否反转价格
 DWORD   m_nDataCount;   //调用数据的数量,填0表示全部硬盘保存数据
 BYTE   m_nReserve[5];
 
 //////////////////////////////////////////////////////////////////////////
 //以下为返回的数据信息 
 int     m_nNumData;   //数据数量
 HISTORY_STRUCTEx *  m_pMainData;  //主数据缓冲区
 
 SUBSECTION_REPORT * m_pSubsection;  //当日分笔成交明细
 int     m_nNumSubData;  //分笔数据量

 REPORT_STRUCT*  m_pReport;   //动态实时行情结构
 float*    m_pfFinData;  //财务数据
 
 POWER_STRUCTEx* m_pSplitData;   //除权数据
 int    m_nNumSplitData;  //除权次数
}PCALCINFO;

这个应该就是最新版吧。

我用它生成的dll最大的问题在于:于这一次它读出来的是复权值,下一次又是没有复权的指。非常混乱,找不到规律。我看论坛上也有其它人不止一次反馈过前复权的问题。建议你们自己写个代码测试一下。

毕竟这是个大问题,谢谢。

 


--  作者:王锋
--  发布时间:2013/7/1 17:12:27
--  
可否将你的测试VC工程传上来我们研发那边测试一下
--  作者:soarhigh
--  发布时间:2013/7/1 20:43:22
--  

经过多次试验,问题是这样的,打开金字塔软件后,默认状态我选择的是“复权状态”---即复权按钮为按下的状态。

这时。我用上述代码读一个股票在某一日的值却为未复权价。这时,我进入该股票的图形界面,发现即便此时默认状态为“复权状态”,但是股票实际显示的是未复权价,这时我必须重复按下“复权”按钮两次,此时该股票图形界面上才显示为复权价。

然后我依然用上述代码读取,会得到复权价。

 

总结:就是说,即便默认状态下“复权按钮”是按下的,但是很多股票图形上显示的依然是未复权价,只有再重复按“复权”按钮两次,这时股票图形界面上才显示为复权价。

而图形界面上显示什么价格,用代码读出来的就是什么价格。和代码里是否设置了"读复权价"这个选项关系不大。

 

复权按钮即便默认状态下是按下的,对很多股票都是无效的,这个问题我去年也遇到了。是否是软件的一个重大bug?


--  作者:soarhigh
--  发布时间:2013/7/1 22:46:50
--  

想了一下,可能是这样的问题:

金字塔历史数据中除权信息不全,所以第一次用代码读取和打开该股的图形界面时,看到的是未复权价格。

但是当点击该股图形界面时,,服务器自动对该股信息进行更新,于是过了几秒后,这时图形界面上的价格变成了复权价(前提是“复权”按钮已经按下),

同时自动更新了历史数据中的除权信息(这点比较奇怪)

于是这时用代码再读取,得到的就是复权价了。

 

 

 


--  作者:fly
--  发布时间:2013/7/2 9:04:32
--  

     "我进入该股票的图形界面,发现即便此时默认状态为“复权状态”,但是股票实际显示的是未复权价,这时我必须重复按下“复权”按钮两次,此时该股票图形界面上才显示为复权价。"

 

用2.995和2.962观察您提到的此现象,是正常的.

详细状态如下:默认是没有价格还权的

1.浦发银行日线,打开该品种K线图时,可看到有S标识

2.按F11,为价格还权后的K线图

3.再按F11,没有价格还权.

 

以上操作都是操作一遍.

跟踪的是上证A股


--  作者:soarhigh
--  发布时间:2013/7/2 9:39:24
--  

谢谢回复,但代码经常读取不到复权价,这个问题应该怎么解决呢?

 

还有,我昨天的如下猜测对吗,如果这个猜测是对的,可能就是数据源的问题。

猜测如下:

金字塔历史数据中除权信息不全,所以第一次用代码读取和打开该股的图形界面时,看到的是未复权价格。

但是当点击该股图形界面时,,服务器自动对该股信息进行更新,于是过了几秒后,这时图形界面上的价格变成了复权价(前提是“复权”按钮已经按下),

同时自动更新了历史数据中的除权信息(这点比较奇怪,会这样设计吗?)

于是这时用代码再读取,得到的就是复权价了。


--  作者:soarhigh
--  发布时间:2013/7/2 9:51:13
--  

谢谢回复,但代码经常读取不到复权价,这个问题应该怎么解决呢?

 

还有,我昨天的如下猜测对吗,如果这个猜测是对的,可能就是数据源的问题。

猜测如下:

金字塔历史数据中除权信息不全,所以第一次用代码读取和打开该股的图形界面时,看到的是未复权价格。

但是当点击该股图形界面时,,服务器自动对该股信息进行更新,于是过了几秒后,这时图形界面上的价格变成了复权价(前提是“复权”按钮已经按下),

同时自动更新了历史数据中的除权信息(这点比较奇怪,会这样设计吗?)

于是这时用代码再读取,得到的就是复权价了。