#include "hbstock_dso_config.h"
#include <stdio.h>
#include <fstream>
#include "tdx_data.h"
#include "gnu/usage_tool.h"
/* must be at the end of include */
#include "gnu/i18n_debug.h"
using namespace std;
using namespace hbstock2;
using namespace gnu;
static const char* LOGFILE = gnu::FILENAME(__FILE__);
/*
const int MAX_PATH_LEN = 256;
#define LOGFILE_Ptr gnu::FILENAME_Ptr(__FILE__).get()
static char LOGFILE[MAX_PATH_LEN];
*/
TdxDataLoader::TdxDataLoader()
:
m_is_day_data(true),
m_is_min5_data(false)
{
//get log file name
//strcpy(LOGFILE,LOGFILE_Ptr);
const int MAX_PATH_LEN = 256;
char location[MAX_PATH_LEN+1];
m_str_tdx_dir = "D:/jcb_gx";
AppConfig* p_app_config = AppConfigInst::instance();
strcpy(location,p_app_config->get_root_dir().c_str());
bindtextdomain(HBSTOCK_DSO_PACKAGE, strcat(location,"/share/locale"));
I18N_DEBUG(_DEBUG("%s\n"),_D("TdxDataLoader start..."));
vect_market_ptr.reset(new VectMarket);
Market market;
market.code = "SH";
market.title = _D("Shang Hai");
vect_market_ptr->push_back(market);
market.code = "SZ";
market.title = _D("Shen Zhen");
vect_market_ptr->push_back(market);
set_name("tdx_data_loader");
set_title(_D("tongdaxin dataloader"));
set_version(HBSTOCK_DSO_VERSION);
}
TdxDataLoader::~TdxDataLoader()
{
I18N_DEBUG(_D("%s [%s:%l] TdxDataLoader end.\n"));
}
void TdxDataLoader::init_inner()
{
init_config_parameter_key();
init_config_parameter();
// set module config info
m_module_config_ptr.reset(new ModuleConfig(get_name()));
set_module_config_title();
// check parameter is the newest version or not?
string str_version_old = "w";
if (m_module_config_ptr->get_value(m_version_key,str_version_old))
{
if (get_version() != str_version_old)
{
I18N_DEBUG(_D("%s [%s:%l] Update old version's config parameter.\n"));
set_default_config_parameter();
}
} else
{
I18N_DEBUG(_D("%s [%s:%l] don't find config parameter, now set it to default config parameter.\n"));
set_default_config_parameter();
}
reload_config_parameter();
// debug config parameter
/*
print_config_parameter();
set_default_config_parameter();
print_config_parameter();
*/
}
void TdxDataLoader::set_module_config_title()
{
gnu::VectConfigItem arr_item;
gnu::ConfigItem item;
item.type = 0;
item.key = m_version_key;
item.key_title = _D("Version");
item.value = "1.0.0";
item.tip = _D("Version");
item.type = 0;
arr_item.push_back(item);
item.key = m_default_stock_sh_key;
item.key_title = _D("Default Stocks of ShangHai");
item.value = "60*";
item.tip = _D("Default Stocks of ShangHai,Format : 'stockcode*,*stockcode*' ,example : 60*");
item.type = 0;
arr_item.push_back(item);
item.key = m_default_stock_sz_key;
item.key_title = _D("Default Stocks of ShenZhen");
item.value = "000*,002*";
item.tip = _D("Default Stocks of ShenZhen,Format : 'stockcode*,*stockcode*' ,example : 000*,002*");
item.type = 0;
arr_item.push_back(item);
item.key = m_str_tdx_dir_key;
item.key_title = _D("tdx installing directory");
item.value = "D:/jcb_gx";
//item.value = "/home/hbzhang/jcb_gx";
item.tip = _D("tdx install directory,eg: D:/jcb_gx");
item.type = 8;
arr_item.push_back(item);
m_module_config_ptr->set_items_title(arr_item);
}
void TdxDataLoader::init_config_parameter_key()
{
// set config key
m_version_key = "version";
m_default_stock_sh_key = "default_stock_sh" ;
m_default_stock_sz_key = "default_stock_sz" ;
m_str_tdx_dir_key = "tdx_dir";
}
void TdxDataLoader::init_config_parameter()
{
//m_str_tdx_dir = "D:/jcb_gx";
m_default_stock_sh = "60*";
m_default_stock_sz = "000*,002*";
}
void TdxDataLoader::set_default_config_parameter()
{
reload_config_parameter();
m_module_config_ptr->remove_all();
set_module_config_title();
init_config_parameter();
m_module_config_ptr->set_value(m_str_tdx_dir_key,m_str_tdx_dir);
m_module_config_ptr->set_value(m_version_key,get_version());
m_module_config_ptr->set_value(m_default_stock_sh_key,m_default_stock_sh);
m_module_config_ptr->set_value(m_default_stock_sz_key,m_default_stock_sz);
}
void TdxDataLoader::reload_config_parameter()
{
string str_tmp = "w";
m_module_config_ptr->refresh();
if(m_module_config_ptr->get_value(m_default_stock_sh_key,str_tmp))
{
m_default_stock_sh = str_tmp;
}
if(m_module_config_ptr->get_value(m_default_stock_sz_key,str_tmp))
{
m_default_stock_sz = str_tmp;
}
if(m_module_config_ptr->get_value(m_str_tdx_dir_key,str_tmp))
{
m_str_tdx_dir = str_tmp;
}
}
void TdxDataLoader::print_config_parameter()
{
ACE_DEBUG ((LM_DEBUG, "==============================================================\n"));
ACE_DEBUG ((LM_DEBUG, "version : %s\n",get_version().c_str()));
ACE_DEBUG ((LM_DEBUG, "tdx_dir : %s\n",m_str_tdx_dir.c_str()));
ACE_DEBUG ((LM_DEBUG, "default_stock_sh : %s\n",m_default_stock_sh.c_str()));
ACE_DEBUG ((LM_DEBUG, "default_stock_sz : %s\n",m_default_stock_sz.c_str()));
ACE_DEBUG ((LM_DEBUG, "==============================================================\n"));
}
int TdxDataLoader::info (ACE_TCHAR **str, size_t len) const
{
ACE_TCHAR* pchar_title = "tdx dataloader";
*str = new char[len];
memset(*str,0,len);
strncpy(*str,pchar_title,len);
return 0;
}
int TdxDataLoader::init (int argc, ACE_TCHAR *argv[])
{
I18N_DEBUG(_DEBUG("%s\n"),_D("TdxDataLoader init..."));
init_inner();
return 0;
}
int TdxDataLoader::fini (void)
{
return 0;
}
const VectMarketPtr TdxDataLoader::get_support_market() const
{
return vect_market_ptr;
}
bool TdxDataLoader::is_support_market(const std::string& market_code) const
{
bool isTrue = false;
for (unsigned int i=0;i<vect_market_ptr->size();i++)
{
if ((*vect_market_ptr)[i].code == str_toupper(market_code))
{
isTrue = true;
break;
}
}
return isTrue;
}
bool TdxDataLoader::is_support_day_data() const
{
return m_is_day_data;
}
bool TdxDataLoader::is_support_min5_data() const
{
return m_is_min5_data;
}
bool TdxDataLoader::is_support_div(const std::string& str_market_code) const
{
return false;
}
std::string TdxDataLoader::get_day_data_dir(const std::string& str_market_code)
{
string str_tdx_day_data_dir = "w";
str_tdx_day_data_dir = m_str_tdx_dir + "/vipdoc/" + str_tolower(str_market_code) + "/lday";
return str_tdx_day_data_dir;
}
bool TdxDataLoader::check_transform_stock_code(const std::string& str_stock_code_in,
std::string& str_stock_code_out,std::string& str_market_code)
{
bool isTrue = false;
if (str_stock_code_in.size()<3)
{
return isTrue;
}
std::vector<std::string> vect_str_stock_code;
str_split(str_stock_code_in.c_str(),".",vect_str_stock_code);
if (vect_str_stock_code.size() == 2)
{
str_market_code = vect_str_stock_code[0];
str_stock_code_out = vect_str_stock_code[1];
if (str_toupper(str_stock_code_out.substr(0,2)) != str_toupper(str_market_code))
{
str_stock_code_out = str_market_code + str_stock_code_out;
}
isTrue = true;
return isTrue;
}
string str_stock_code_tmp = str_toupper(str_stock_code_in);
if ( str_stock_code_tmp == "SZZS")
{
isTrue = true;
str_market_code = "SH";
str_stock_code_out = str_market_code + "000001";
} else if ( str_stock_code_tmp == "SZCZ")
{
isTrue = true;
str_market_code = "SZ";
str_stock_code_out = str_market_code + "399001";
} else if ( str_stock_code_tmp == "SZZZ")
{
isTrue = true;
str_market_code = "SZ";
str_stock_code_out = str_market_code + "399106";
} else if ( str_stock_code_tmp.substr(0,2) == "00") // stock A in SH
{
isTrue = true;
str_market_code = "SZ";
str_stock_code_out = str_market_code + str_stoc
tdx_data-2.0.4.tar.gz_TDX接口_TdxHqApi_通达信 c++_通达信 C_通达信 c++
版权申诉
5星 · 超过95%的资源 90 浏览量
2022-07-14
21:00:20
上传
评论 3
收藏 377KB GZ 举报
alvarocfc
- 粉丝: 105
- 资源: 1万+
最新资源
- 基于STM32F103C8T6单片机蓄电池在线监测系统主板硬件(原理图+PCB)工程文件.zip
- mysql大纲资料.txt
- c++大纲资料.txt
- 效率工具bat脚本实现日志提取
- MyBatis 中动态 SQL 的示例
- STM8L101F3P6单片机+CC1100模块433M遥控器设计硬件(原理图+PCB)工程文件.zip
- 上传下载铁人下载系统 Liuxing 1.0-liuxing1.0.rar
- 南京邮电大学数学实验实力雄厚,凭借其优秀的师资力量、丰富的实践教学资源和卓越的科研成果,成为国内一流的数学实验教学和科研基地
- 【火爆朋友圈的今天吃什么源码 v1.0】随机的为用户带来每一天的用餐选择和推荐.rar
- MPU6050中文版数据手册
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论7