代码如下:
stData.m_dataType = DAY_DATA;//日线
stData.m_bIsPow = 1; //是否复权
stData.m_nPowType = 0;
if(g_pMainFormework->GetDataInfo(&stData))
{
/……/
}
为什么有的时候读出来的值是前复权的,有时候又是没有复权的。但大多数时候都是不复权的。很不稳定。
到底是怎么回事啊?
还有,试了一下,即便在观察股票图形的窗口,我按“复权”按钮F11,很多时候,图形也没有丝毫反应。
但有的时候按F11,图形又会变成复权价格。
是金字塔的一个bug吗?
你说的新版下的结构就和新版本安装完后的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最大的问题在于:于这一次它读出来的是复权值,下一次又是没有复权的指。非常混乱,找不到规律。我看论坛上也有其它人不止一次反馈过前复权的问题。建议你们自己写个代码测试一下。
毕竟这是个大问题,谢谢。
经过多次试验,问题是这样的,打开金字塔软件后,默认状态我选择的是“复权状态”---即复权按钮为按下的状态。
这时。我用上述代码读一个股票在某一日的值却为未复权价。这时,我进入该股票的图形界面,发现即便此时默认状态为“复权状态”,但是股票实际显示的是未复权价,这时我必须重复按下“复权”按钮两次,此时该股票图形界面上才显示为复权价。
然后我依然用上述代码读取,会得到复权价。
总结:就是说,即便默认状态下“复权按钮”是按下的,但是很多股票图形上显示的依然是未复权价,只有再重复按“复权”按钮两次,这时股票图形界面上才显示为复权价。
而图形界面上显示什么价格,用代码读出来的就是什么价格。和代码里是否设置了"读复权价"这个选项关系不大。
复权按钮即便默认状态下是按下的,对很多股票都是无效的,这个问题我去年也遇到了。是否是软件的一个重大bug?
想了一下,可能是这样的问题:
金字塔历史数据中除权信息不全,所以第一次用代码读取和打开该股的图形界面时,看到的是未复权价格。
但是当点击该股图形界面时,,服务器自动对该股信息进行更新,于是过了几秒后,这时图形界面上的价格变成了复权价(前提是“复权”按钮已经按下),
同时自动更新了历史数据中的除权信息(这点比较奇怪)
于是这时用代码再读取,得到的就是复权价了。
"我进入该股票的图形界面,发现即便此时默认状态为“复权状态”,但是股票实际显示的是未复权价,这时我必须重复按下“复权”按钮两次,此时该股票图形界面上才显示为复权价。"
用2.995和2.962观察您提到的此现象,是正常的.
详细状态如下:默认是没有价格还权的
1.浦发银行日线,打开该品种K线图时,可看到有S标识
2.按F11,为价格还权后的K线图
3.再按F11,没有价格还权.
以上操作都是操作一遍.
跟踪的是上证A股
谢谢回复,但代码经常读取不到复权价,这个问题应该怎么解决呢?
还有,我昨天的如下猜测对吗,如果这个猜测是对的,可能就是数据源的问题。
猜测如下:
金字塔历史数据中除权信息不全,所以第一次用代码读取和打开该股的图形界面时,看到的是未复权价格。
但是当点击该股图形界面时,,服务器自动对该股信息进行更新,于是过了几秒后,这时图形界面上的价格变成了复权价(前提是“复权”按钮已经按下),
同时自动更新了历史数据中的除权信息(这点比较奇怪,会这样设计吗?)
于是这时用代码再读取,得到的就是复权价了。