|
|

楼主 |
发表于 2005-4-23 13:25
|
显示全部楼层
zzhkk1提供
看宏汇NSD中的数据输出:
程序如下,当然这个程序只能够在宏汇NSD中使用,您可以在www.hh.com.cn/nsd下载宏汇NSD,然后在菜单上选择“工具->数据输出”,再在数据输出窗口左上角选择“新建数据输出”,在选择数据输项目里选择“分笔数据输出2”,以后的操作都是向导,直至完成。
////////////////////////////////////////////////////////////////////////
// 输出指定品种和指定日期的分笔数据(Tick)
////////////////////////////////////////////////////////////////////////
//定义dbf类
DBF类 dbf;
//定义输出文件的路径和名称
char dbfname[128];
//sprintf(dbfname, "%s\\0001.dbf", 输出路径);
sprintf(dbfname, "%s\\%s%s%d至%d的分笔数据.dbf", 输出路径,当前品种代码,当前品种名称,开始日期,截止日期);
输出("文件保存路径为%s", dbfname);
//输出("%s", dbfname);
//判断创建数据库是否成功
if (!dbf.创建数据库(dbfname))
{
显示调试信息(错误, "创建“%s”失败", dbfname);
return;
}
//判断用户选择字段信息
if (是否含有字段("时间")) dbf.添加字段("Time", 'C', 20, 0, "时间");
if (是否含有字段("价格")) dbf.添加字段("Price", 'N', 6, 2, "价格");
if (是否含有字段("买/卖")) dbf.添加字段("BS", 'C', 2, 0, "买/卖");
if (是否含有字段("成交量")) dbf.添加字段("Volume",'N', 6, 0, "成交量");
if (是否含有字段("成交金额")) dbf.添加字段("Money", 'N', 6, 2, "成交金额");
if (是否含有字段("成交笔数")) dbf.添加字段("bishu", 'N', 6, 0, "成交笔数");
if (是否含有字段("卖量5")) dbf.添加字段("SV5", 'N', 6, 0, "卖量5");
if (是否含有字段("卖量4")) dbf.添加字段("SV4", 'N', 6, 0, "卖量4");
if (是否含有字段("卖量3")) dbf.添加字段("SV3", 'N', 6, 0, "卖量3");
if (是否含有字段("卖量2")) dbf.添加字段("SV2", 'N', 6, 0, "卖量2");
if (是否含有字段("卖量1")) dbf.添加字段("SV1", 'N', 6, 0, "卖量1");
if (是否含有字段("卖价5")) dbf.添加字段("SP5", 'N', 6, 2, "卖价5");
if (是否含有字段("卖价4")) dbf.添加字段("SP4", 'N', 6, 2, "卖价4");
if (是否含有字段("卖价3")) dbf.添加字段("SP3", 'N', 6, 2, "卖价3");
if (是否含有字段("卖价2")) dbf.添加字段("SP2", 'N', 6, 2, "卖价2");
if (是否含有字段("卖价1")) dbf.添加字段("SP1", 'N', 6, 2, "卖价1");
if (是否含有字段("买量1")) dbf.添加字段("BV1", 'N', 6, 0, "买量1");
if (是否含有字段("买量2")) dbf.添加字段("BV2", 'N', 6, 0, "买量2");
if (是否含有字段("买量3")) dbf.添加字段("BV3", 'N', 6, 0, "买量3");
if (是否含有字段("买量4")) dbf.添加字段("BV4", 'N', 6, 0, "买量4");
if (是否含有字段("买量5")) dbf.添加字段("BV5", 'N', 6, 0, "买量5");
if (是否含有字段("买价1")) dbf.添加字段("BP1", 'N', 6, 2, "买价1");
if (是否含有字段("买价2")) dbf.添加字段("BP2", 'N', 6, 2, "买价2");
if (是否含有字段("买价3")) dbf.添加字段("BP3", 'N', 6, 2, "买价3");
if (是否含有字段("买价4")) dbf.添加字段("BP4", 'N', 6, 2, "买价4");
if (是否含有字段("买价5")) dbf.添加字段("BP5", 'N', 6, 2, "买价5");
if (是否含有字段("买比")) dbf.添加字段("bsRatio", 'N', 6, 2, "买比");
//定义分笔成交类
分笔成交类 clsTick;
//输出("%d - %d", 开始索引, 截止索引);
//取数据日期(周期),并输出成交价格、成交量和成交金额
long lDate, lTime;
char szMark[4];
char szTime[32];
for (int j=开始索引; j<=截止索引; j++)
{
lDate = K线数据[j].取日期();
输出("输出%s股票 %d的分笔数据",当前品种代码,lDate);
if (!clsTick.读取分笔成交(lDate))
{
输出("输出日期为%d 的数据失败! 请先下载该代码的Tick数据", lDate);
continue;
}
int total = clsTick.总笔数();
int intVolume=0;
输出("成交总笔数%d", total);
for (int i=0; i<total; i++)
{
sprintf(szMark, "%c", clsTick[买卖标志]);
lTime = clsTick.取时间();
sprintf(szTime, "%2d-%2d-%2d %2d:%2d:%2d", lDate / 10000, lDate / 100 % 100, lDate % 100, lTime / 10000, lTime / 100 % 100, lTime % 100);
dbf.设置字符串("Time", szTime);
dbf.设置数据("Price",clsTick[成交价]);
dbf.设置字符串("BS",szMark);
intVolume=(i>0)?clsTick[成交量]-clsTick[i-1][成交量] : clsTick[成交量];
dbf.设置数据("Volume",intVolume);
dbf.设置数据("Money",intVolume*clsTick[成交价]);
dbf.设置数据("bishu",(i>0) ? clsTick[成交笔数]-clsTick[i-1][成交笔数] : clsTick[成交笔数]);
dbf.设置数据("SV5",clsTick[卖量5]);
dbf.设置数据("SV4",clsTick[卖量4]);
dbf.设置数据("SV3",clsTick[卖量3]);
dbf.设置数据("SV2",clsTick[卖量2]);
dbf.设置数据("SV1",clsTick[卖量1]);
dbf.设置数据("SP5",clsTick[卖价5]);
dbf.设置数据("SP4",clsTick[卖价4]);
dbf.设置数据("SP3",clsTick[卖价3]);
dbf.设置数据("SP2",clsTick[卖价2]);
dbf.设置数据("SP1",clsTick[卖价1]);
dbf.设置数据("BV1",clsTick[买量1]);
dbf.设置数据("BV2",clsTick[买量2]);
dbf.设置数据("BV3",clsTick[买量3]);
dbf.设置数据("BV4",clsTick[买量4]);
dbf.设置数据("BV5",clsTick[买量5]);
dbf.设置数据("BP1",clsTick[买价1]);
dbf.设置数据("BP2",clsTick[买价2]);
dbf.设置数据("BP3",clsTick[买价3]);
dbf.设置数据("BP4",clsTick[买价4]);
dbf.设置数据("BP5",clsTick[买价5]);
dbf.设置数据("bsRatio",clsTick[买卖比]);
dbf.追加记录();
}
}
//关闭打开的数据
dbf.关闭();
结果就是一个DBF数据库 |
|
|