|
公告
-
欢迎来到寒室,这是郭胜群的博客,与
其留下您的足迹,不如留下您的笔迹
我的导师:陈尹力教授..................
工作单位:广东金融学院...............
联系电话:
QQ:31632627
msn:007same@163.com..
日历
| | 日 | 一 | 二 | 三 | 四 | 五 | 六 |
|---|
| 28 | 29 | 30 | 1 | 2 | 3 | 4 | | 5 | 6 | 7 | 8 | 9 | 10 | 11 | | 12 | 13 | 14 | 15 | 16 | 17 | 18 | | 19 | 20 | 21 | 22 | 23 | 24 | 25 | | 26 | 27 | 28 | 29 | 30 | 31 | 1 | | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|
统计
- 随笔 - 100
- 文章 - 48
- 评论 - 609
- 引用 - 2
导航
常用链接
留言簿
我参与的团队
我的标签
随笔分类
随笔档案
文章分类
收藏夹
我其它博客
资源与合作
最新评论

阅读排行榜
评论排行榜
|
通达信的zst的数据记录是每6508个字节为一天的数据,每26个字节为一个分钟的记录,这26个字节是这样分配的,时间占两个字节化为十进制为570的话表示9:30分(570/60=9.5) 下一个是占四个字节的叫现价,再下四个字节叫均价,另外还有两个字节为该分钟成交量(现在有可能已经改为四个字节),剩下的14个字节是预留的,那么大家会发现用我以前所有介绍的方法求出的现价和均价都是个天文数字,和股票价格相差甚远但又有规律似的,一般好像玛雅人才用到似的,我介绍一种最简单的办法给大家去求价格的对应关系,大家任找门股票把他的在整数位价格对应的四个字节的16进制和价格位记下来,如4元对应40800000 其实这时你如果对zstli任意个16进制的价格x 想求出他的对应的真实价格,只要用过比例式就能求出,不过先别高兴去操作,因为并不是所有价格档次都是同个比例的,大家看下面的表对照一下,我已经帮大家总结到32的价格,可算到64块钱内个股票64和128元的各位有兴趣在回复中补上, 补充一点就是该方法是我导师陈尹力教授指导下完成的,程序代码将公布在个人随笔里的思想里面,也是这个月四月发布,由于笔记本被偷失去很多资料,具体公布的东西仅供大家参考,也作为抛砖引玉,支持我的朋友请在回复中发表您的发现,丰富知识内容。 该算法适用与所有通达信行情软件,如南方证券,鑫网通达信行情软件,并且价格的换算算法对通达信的day日数据里面的价格也适用
| RMB |
zst数据 |
zst数据10进制 |
1¥对应的16进制间隔 |
人民币间隔 |
1¥对应的10进制间隔 |
| A |
B |
C |
D |
E |
F |
| 0 |
3F800000 |
1065353216 |
400000 |
1¥ |
4194304 |
| 4 |
40800000 |
1082130432 |
200000 |
1¥ |
2097152 |
| 8 |
41000000 |
1090519040 |
100000 |
1¥ |
1048576 |
| 16 |
41800000 |
1098907648 |
80000 |
1¥ |
524288 |
| 32 |
42240000 |
1109655552 |
40000 |
1¥ |
262144 |
| |
|
1118830592 |
|
|
|
按比例算法求。设取到的数为X(化为十进制的了),那么(X-C)/real(x)=F/(1¥*1000) 扩大一千倍,其实以上的C和F就是你可以通过判断逻辑求出取哪个对应的哪个C只有real(x)未知 移动方程两边可求出准确的价格(均价可达到0.001精度),求出后的十进制价格是放大了1000倍的 程序代码链接:http://www.cnblogs.com/same/archive/2007/04/13/711466.html 通达信日数据链接:
评论:
-
#1楼
Posted @ 2007-05-11 09:15
谢谢!
回复 引用
-
#2楼
Posted @ 2007-05-16 18:19
请问一下, tdx 的分时数据存储目录在哪? 比如上证指数在如下目录吗? C:\jcb_gx\vipdoc\sh\lday\SH000001.day
先谢了!
回复 引用
-
#3楼
Posted @ 2007-05-17 18:58
好像找到了, 在zst_cache目录下面, 还有一问题请教: getRealPrice(1067702026)/1000 返回0.56, 而用TDX看分时图,大概是1.28, 总感觉, 小数位差一倍,整数位丢了, 请问是什么原因?
多谢了!
回复 引用
-
#4楼
Posted @ 2007-05-17 19:05
再问一个: 通达信的tic文件是什么数据文件? 下载网页: http://202.103.25.219/download/ShowArticle.asp?ArticleID=79
回复 引用
-
#5楼
Posted @ 2007-05-18 09:02
以上问题已解决,谢谢。 我想用通达信将某只或某些股票的一段时间,比如过去半年的“分时”数据下载到本地,有什么好方法? 笨方法是:对每只股票的时间短内的每一天K线,按回车,进入分时图,这样在对应的分时缓存文件里就有该天的分时数了。
还有一问,我发现在zst文件里,找不到每分钟“成交额",你的数据结构里也没有列成交额,只有成交量, 但是为什么我在tdx软件里能看到成交额, 难道存储在别的地方,或者是计算出来的?
请指点! 谢谢
回复 引用
-
#6楼[ 楼主]
Posted @ 2007-05-18 23:27
有办法,我以前有个朋友,利用vb作了个程序,专门取分时数据,主要是用到sendkey方法,另外还要利用判断通达信程序的标题和窗口特征,当然也要注意在网络速度可以情况下处理,该程序就是完成,回车,esc,右移动"→" 再回车 到zst容量增加 换另外一门股票......程序不是我作的,不便发布,你自己可以试一下
回复 引用 查看
-
#7楼
Posted @ 2007-05-23 08:53
呵呵,这是我的第一反应, 英雄所见略同。 以后又什么心得,在过来交流!!!
谢谢
回复 引用
-
#8楼
Posted @ 2007-06-17 23:47
你的结构对的,但价格很好算,只要是浮点数就可以了。每人为了保存数据用如此复杂的算法。
回复 引用
-
#9楼[ 楼主]
Posted @ 2007-06-18 11:09
“我介绍一种最简单的办法给大家去求价格” 这是我上面说的一句话,也就是为了简单易懂,其它办法是有的,当然高手不用看我的文章,因为高手自己一看就知道数据格式被处理为什么类型和进制
回复 引用 查看
-
#10楼
Posted @ 2007-06-30 13:59
tes
回复 引用
-
#11楼
Posted @ 2007-06-30 14:00
有谁知道通达信的除权信息存在什么地方(哪个文件里)???
回复 引用
-
#12楼
Posted @ 2007-07-25 22:42
能告诉我5分钟,10分钟,30分钟的数据格式吗?
多谢了!
回复 引用
-
#13楼
Posted @ 2007-07-29 02:00
郭兄,你好!由于前一个问题我没有全部看你的其他文档内容,所以就冒昧的提了这个你不方便回答的问题,请见谅!此处想请教一下,为何在K线的当天日线上按回车,在按ESC却不能保存今日的分时数据到*.zst文件中,有没有其他办法可以搞定,请指教,谢谢!
回复 引用
-
#14楼[ 楼主]
Posted @ 2007-07-30 00:39
试一下其它通达信软件,如南方证券
回复 引用 查看
-
#15楼
Posted @ 2007-07-31 20:25
@郭胜群
郭兄,你好!我试过了,南方证券的也是不能保存当天的分时数据到*.zst.不知道哪里有疏漏。不过我发现下载分时数据后保存到的是sh.tfz和sz.tfz,但是这个文件的结构不是简单的5608的倍数,所以也难于解决目前的问题。如果能透露的请将sh.tfz和sz.tfz文件的数据结构发到我的邮箱:lys31871582@126.com.多谢!
回复 引用
-
#16楼
Posted @ 2007-08-07 22:20
我已经试着解开了一份通达信股本变迁文件,格式仍然很乱但能看到股票代码,gbbq和gbbq.map之间的关系还不清楚,有那位仁兄知道这方面的信息或者需要这份文件的,请EMAIL我:router119@sina.com.
回复 引用
-
#17楼
Posted @ 2007-08-10 14:09
大侠,能否提供通达信 tic 和 股本变迁 文件的数据格式,不胜感激
Email : lufei@sohu.com
回复 引用
-
#18楼
Posted @ 2007-08-13 00:39
非常感谢same,能否说说,通达信的分笔成交数据,以及VC++开发各种股票软件插件
回复 引用
-
#19楼
Posted @ 2007-09-23 18:34
能分析同花顺的权息数据结构和1分钟数据结构吗?
回复 引用
-
#20楼
Posted @ 2008-02-06 14:37
1:主力资金流向。2:个股主力,散户持仓状况。3:主力多日持仓趋势图
回复 引用
-
#21楼
Posted @ 2008-02-06 14:38
数据非常实用
回复 引用
-
#22楼
Posted @ 2008-03-06 23:54
通达信分笔数据结构是怎样的?
回复 引用
-
#23楼
Posted @ 2008-04-11 17:18
貌似表格有误,应该就是浮点数的二进制表示。
http://blog.csdn.net/maoxiang/archive/2008/04/11/2282839.aspx
回复 引用
-
#24楼
Posted @ 2008-04-13 17:43
诚邀兄莅临策略为王论坛,那里我们专门讨论开源股软及相关问题。兄关于股软数据结构的系列文章,对我们太有启发了,谢谢。
www.tsking.net
回复 引用
-
#25楼
Posted @ 2008-06-07 21:23
你好:我有一封信发至您的邮箱,请查收。主题是:关于股票指标预警软件的讨论。 扬州 刘浒 jdxnjgz@126.com
回复 引用
-
#26楼
Posted @ 2008-06-08 11:39
各位大侠,我现在有一个简单的私活想找人做,简单讲就是改写股票的价格。
以sz000001.day文件为例,该文件保存了深发展的日线数据,其中有开盘价,最高价,最低价,收盘价,成交量等等。
我现在的要求就是将收盘价改成我想要的其他价格,然后再存回到sz000001.day文件中去即可。需要提供一个改动价格的界面。
这是对日线数据的改动,对其他周期(周线、60分钟、30分钟、15分钟、5分钟、1分钟)的要求也是一样的。
对了,数据格式是通达信的。
由于相关课题紧,急要。哪位大侠能够帮帮忙?可以意思性的支付些费用,太多就承担不了,因为现在还是无产阶级。呵呵。
有意者请联系我QQ:93506222,邮件:93506222@qq.com
回复 引用
-
#27楼
Posted @ 2008-07-12 10:03
去年的时候用的通达信软件zst_cache目录里还有数据,前一段忽然发现里面没有数据了,在cache目录里有日线的临时数据,不知分时数据改到哪里了?
通达信的分笔数据是怎么样的呢?
回复 引用
-
#28楼
Posted @ 2008-07-26 21:01
通达信的5分钟数据结构如下,我在VB中调试过了:
Public Type tdxLC5 '通达信分时LC5文件格式
tdxD As Integer '日期
tdxT As Integer '时间
tdxO As Single '开盘
tdxH As Single '最高
tdxL As Single '最低
tdxC As Single '收盘
tdxJ As Single '成交量
tdxN As Long '成交额
tdxX As Long '保留
End Type
读取时32字节为一段
回复 引用
-
#29楼
Posted @ 2008-08-01 11:09
*.tfz,*.day中的价格就是float型数据,害我研究半天,在C++中申明float就可以读了
回复 引用
-
#30楼
Posted @ 2008-08-02 18:29
请问tic文件格式,谢谢
回复 引用
-
#31楼
Posted @ 2008-08-16 00:09
--引用--------------------------------------------------
cloutar: 去年的时候用的通达信软件zst_cache目录里还有数据,前一段忽然发现里面没有数据了,在cache目录里有日线的临时数据,不知分时数据改到哪里了?
<br>通达信的分笔数据是怎么样的呢?
--------------------------------------------------------
我也想知道。。
回复 引用
-
#32楼
Posted @ 2008-09-09 16:04
分时数据(实时)都在内存里了,历史分时才临时存在zst文件里。谁有办法获取内存的分时数据(实时)???
回复 引用
-
#33楼
Posted @ 2008-11-16 21:02
分时数据文件在sh.TFZ。
格式:
short shIndex = *(short*)(iBufInfo);
unsigned char ucHour = shIndex/60;
unsigned char ucMinute = shIndex%60;
CString strTime ;
strTime.Format("%.2d%.2d",ucHour,ucMinute);
int iTime ;
iTime = ucHour*100 + ucMinute;
char chTime[4];
//itoa(iTime,chTime,10);
memset(chTime,0,sizeof(chTime));
for(int i=0;i<strTime.GetLength();i++)
{
chTime[i]=strTime[i];
}
float fPrice = *(float*)(iBufInfo+2);
float fAvePrice = *(float*)(iBufInfo+6);
int iVol = *(int*)(iBufInfo+10);
回复 引用
-
#34楼
Posted @ 2008-11-16 21:04
int CStockDataProcess::ReadFileInfo(CString strFileName)
{
CFile oFile;
CFileException err;
if( !oFile.Open( strFileName, CFile::modeRead, &err ) )
{
//AfxMessageBox("Can't open the file , please try again!");
return -1; //_T("打开记录文件失败!"));
}
//////////////////////////////////////////////////////////////////////////
int dwFileSize=oFile.GetLength();
const int ci_FILE_LEN = 10*1024*1024;
if(dwFileSize > ci_FILE_LEN)
{
CString strLen;
strLen.Format(_T("The File is too long, the lengh is less than %d !"), ci_FILE_LEN);
AfxMessageBox(strLen);
return -2;
}
/*
int i_FileRecordLen = dwFileSize/sizeof(unsigned short);*/
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
HANDLE s_hHeap = NULL;
s_hHeap = HeapCreate(HEAP_NO_SERIALIZE,0,0);
if(s_hHeap == NULL)
{
oFile.Close();
//m_oLock.Unlock();
return -3;
}
if (0<dwFileSize)
{
int iLenInt = dwFileSize/sizeof(char);
char* pBuf =(char*) HeapAlloc(s_hHeap,0,dwFileSize);
if (!pBuf )
{
oFile.Close();
return -4;
}
oFile.SeekToBegin();
// oFile.Read(pBuf, dwFileSize );
oFile.Read(pBuf, dwFileSize );
char* piOffset;
int iLength ;
int index;
int iShOffset[860];
//////////////////////////////////////////////////////////////////////////
// Read Stock offset
char iBufOffset[5];
index=0;
piOffset= pBuf+0xb59;
iLength= sizeof(iBufOffset);
int iArraySize = sizeof(iBufOffset)/sizeof(iBufOffset[0]);
while(1)
{
memcpy(iBufOffset,piOffset,sizeof(iBufOffset));
int iTemp = *(int*)(iBufOffset+1);
//////////////////////////////////////////////////////////////////////////
if(iTemp == 0)
{
break;
}
iShOffset[index] = iTemp;
piOffset+=(iArraySize);
index ++;
}
///////////////////////////////////////////////////////////////
//
//ST_StockInfo stStockInfo;
CString strCode = "601318";
MapString2int::iterator map_iter;
map_iter = mapShCode2Index.find(strCode);
if(map_iter == mapShCode2Index.end())
{
return -2;
}
int iSel = map_iter->second;
if(iSel<1)
{
return -3;
}
#if 1
char iBufInfo[26];
index=0;
piOffset= pBuf+iShOffset[iSel];
iLength= sizeof(iBufInfo);
iArraySize = sizeof(iBufInfo)/sizeof(iBufInfo[0]);
float fMeanPrice = 0.0 ;
int iTotalMoney= 0;
float fTotalNetMoney =0.0;
int iTotalVol = 0;
float fLastPrice = 0.0;
int iInVol =0;
int iOutVol =0;
while(index<240)
{
memcpy(iBufInfo,piOffset,sizeof(iBufInfo));
short shIndex = *(short*)(iBufInfo);
unsigned char ucHour = shIndex/60;
unsigned char ucMinute = shIndex%60;
CString strTime ;
strTime.Format("%.2d%.2d",ucHour,ucMinute);
int iTime ;
iTime = ucHour*100 + ucMinute;
char chTime[4];
//itoa(iTime,chTime,10);
memset(chTime,0,sizeof(chTime));
for(int i=0;i<strTime.GetLength();i++)
{
chTime[i]=strTime[i];
}
float fPrice = *(float*)(iBufInfo+2);
float fAvePrice = *(float*)(iBufInfo+6);
int iVol = *(int*)(iBufInfo+10);
STDayInfo oSTDayInfo;
memset(&oSTDayInfo,0,sizeof(STDayInfo));
memcpy(oSTDayInfo.chTime,chTime,sizeof(chTime));
oSTDayInfo.fPrice = fPrice;
oSTDayInfo.fAvePrice = fAvePrice;
oSTDayInfo.iVol = iVol;
//mvector_STDayInfo.push_back(oSTDayInfo);
int iMoney = fAvePrice * iVol *100;
if(index == 0)
{
fLastPrice = fAvePrice;
}
if(fPrice > fLastPrice)
{
fTotalNetMoney += iMoney;
iInVol += iVol;
}
else
{
fTotalNetMoney -= iMoney;
iOutVol +=iVol;
}
iTotalMoney += iMoney;
iTotalVol += iVol;
fLastPrice = fPrice;
//int iDif = iTemp - iLast;
//iLast = iTemp;
//////////////////////////////////////////////////////////////////////////
index ++;
piOffset+=(iArraySize);
}
fMeanPrice = 1.0*iTotalMoney/(iTotalVol*100.0);
#endif
//////////////////////////////////////////////////////////////////////////
}
oFile.Close();
HeapDestroy(s_hHeap);
return 0;
}
回复 引用
-
#35楼
Posted @ 2008-11-16 21:06
typedef struct tag_STDayInfo
{
char chTime[4];
float fPrice ;
float fAvePrice ;
int iVol ;
} STDayInfo;
回复 引用
-
#36楼
Posted @ 2008-12-06 23:47
日線數據是簡單的.
有幾個文件不知道什麼內容.sh.xxx sz.xxx,xxx指幾個不同的擴展名
知道的請說說,歡迎去我的論壇玩 http://n2.nabble.com/Indvesting-f785510.html
回复 引用
-
#37楼
Posted @ 2009-02-01 15:19
请教cuijinting:我观察分时数据文件sh.TFZ中的数据是按浏览股票分时图的顺序累加数据,每个股票对应数据长度6240,如果不知道浏览顺序,怎么查找某只股票的分时数据段在文件中的位置?难道有索引文件?
回复 引用
-
#38楼
Posted @ 2009-02-01 18:35
分析*.TFZ文件有什么用?每个炒股软件的分时数据都不一样的!
回复 引用
-
#39楼
Posted @ 2009-02-01 18:39
没有都是6240吧!索引文件没找到,前面部分是每个股票数据的偏移地址,找出来后似乎没什么用!
回复 引用
-
#40楼
Posted @ 2009-02-01 21:32
*.tfz文件是分时图的缓冲文件,用通达信浏览的股票分时数据都存储在里面,如果自己编软件可以读这个文件获取有关股票的实时数据,现在的问题是能读出里面的分时数据,但不知道对应的股票代码。
回复 引用
-
#41楼
Posted @ 2009-02-01 21:35
通达信的zst文件存储的是历史分时数据,有五分钟历史数据用处不大
回复 引用
-
#42楼
Posted @ 2009-02-01 21:38
///////////////////////////////////////////////////////////////
//
//ST_StockInfo stStockInfo;
CString strCode = "601318";
MapString2int::iterator map_iter;
map_iter = mapShCode2Index.find(strCode);
if(map_iter == mapShCode2Index.end())
{
return -2;
}
这段代码是不是查找601318在 tfz文件中的数据位置呢?谁给解释一下,谢谢!!
回复 引用
-
#43楼
Posted @ 2009-02-22 00:02
自己建立一张索引表和*.tfz文件的股票偏移对应就行了.其实没什么用,分时数据记录的是一分钟内的总笔数,并不是每笔的数据!
回复 引用
-
#44楼
Posted @ 2009-02-22 00:03
有谁通过分时数据的分析发了财的,真的有参考价值吗?
回复 引用
-
#45楼
Posted @ 2009-03-02 14:43
成交笔数:DYNAINFO(50);
每笔均量:DYNAINFO(8)/DYNAINFO(50);
换手:=DYNAINFO(8)/CAPITAL*100;
每笔换手:换手/成交笔数*100,NODRAW;
分钟笔数:成交笔数/FROMOPEN,NODRAW;
回复 引用
-
#46楼
Posted @ 2009-03-02 14:46
如何自动保存每日DYNAINFO(50)及DYNAINFO(8)?
回复 引用
-
#47楼
Posted @ 2009-03-02 14:49
请求博主帮忙啊
回复 引用
-
#48楼
Posted @ 2009-04-20 23:30
我正在琢磨编制一个快速下单的程序(简单说就是一键下单,主要权证用),用的是通达信L2版券商集成版,不知道如何获得买卖十档的实时数据,请问有办法吗?
回复 引用
-
#49楼
Posted @ 2009-04-20 23:30
忘留邮箱了:tjdg_wjs@foxmail.com
回复 引用
|