📄 do_stock.h
字号:
#ifndef __HBSTOCK2_DO_STOCK_H__
#define __HBSTOCK2_DO_STOCK_H__
#include <vector>
#include <map>
#include "hbstock2/stock_selector.h"
#include "hbstock2/stock_selector_manger.h"
namespace hbstock2
{
struct MarketInputInfo
{
std::string market_code;
std::string prefix_stock;
};
typedef std::vector<MarketInputInfo> VectMarketInputInfo;
typedef ACE_Refcounted_Auto_Ptr<VectMarketInputInfo,ACE_Null_Mutex> VectMarketInputInfoPtr;
/**
* input_market_format_type = 0 , input 1,2
* input_market_format_type = 1 , input sh=600*,5100*;sz=000*,002*
*/
bool check_selector_parameter(std::vector<MarketInputInfo>& vect_market_input_info,
int input_market_format_type,const std::string& str_market);
bool check_test_parameter(int input_test_format_type,const std::string& str_test);
bool check_selecror(SetStockSelectorPtr& set_selector_ptr,const std::string& str_selector);
/**
* This functin used to execute selector
*/
void do_select_stock(std::map<int,VectSelectorDataPtr>& map_data,
const SetStockSelectorPtr& set_selector_ptr,
const std::vector<MarketInputInfo>& vect_market_input_info,
const char* p_ch_date=0,
bool is_include_false_stock = false);
/**
* This functin used to execute selector as one stock_selector_ptr
*/
void do_select_stock_ex(VectSelectorData& vect_selector_data,
const StockSelectorPtr& stock_selector_ptr,
const std::vector<MarketInputInfo>& vect_market_input_info,
const char* p_ch_date=0,
bool is_include_false_stock = false);
void treat_selected_result(const std::map<int,VectSelectorDataPtr>& map_data,
const char* p_ch_date = NULL);
void write_treat_result(std::ostream& os ,const std::map<int,VectSelectorDataPtr >& map_data,
const char* p_ch_date,const char* p_ch_prefix=NULL);
/**
* test2 condition
*/
void treat_test2_result(const SetStockSelectorPtr& set_selector_ptr);
void check_test2_data(const VectSelectorData& vect_selector_data);
struct slt_test_format_data
{
std::string date;
VectMarketInputInfoPtr vect_market_input_info_ptr;
bool is_true;
};
void get_slt_test_info_from_file(std::vector<slt_test_format_data>& vect_test_data,
const std::string& str_file);
// for income testing
/******************************** The Starting of income testing *************************************/
// for one stock
struct IncomeTopPoint
{
char date[LEN_DATE+1];
float days;
float rate;
};
typedef std::vector<IncomeTopPoint> VectIncomeTopPoint;
typedef ACE_Refcounted_Auto_Ptr<VectIncomeTopPoint,ACE_Null_Mutex> VectIncomeTopPointPtr;
struct IncomeRangeItem
{
short int dist_day; // eg. 5 day ,10 day
IncomeTopPoint high_point;
IncomeTopPoint low_point;
};
typedef std::vector<IncomeRangeItem> VectIncomeRangeItem;
typedef ACE_Refcounted_Auto_Ptr<VectIncomeRangeItem,ACE_Null_Mutex> VectIncomeRangeItemPtr;
struct StockIncomeInfo
{
char code[LEN_CODE+1];
char day[LEN_DATE+1];
//std::string date;
//std::string code;
float priority;
short int highest_dist_day; // eg. 5 day ,10 day
IncomeTopPoint highest_point;
short int lowest_dist_day; // eg. 5 day ,10 day
IncomeTopPoint lowest_point;
VectIncomeRangeItemPtr vect_income_range_item_ptr;
};
typedef std::vector<StockIncomeInfo> VectStockIncomeInfo;
typedef ACE_Refcounted_Auto_Ptr<VectStockIncomeInfo,ACE_Null_Mutex> VectStockIncomeInfoPtr;
// for static
struct DayRangeAvg
{
float day_max;
float day_min;
float day_avg;
float day_dev; //deviation
float rate_max;
float rate_min;
float rate_avg;
float rate_dev;
std::string memo;
};
// for success
struct IncomeSuccessDayRangeItem
{
short int dist_day; // eg. 5 day ,10 day
int success_num;
float success_rate;
DayRangeAvg day_range_avg;
VectIncomeTopPoint vect_income_top_point;
};
typedef std::vector<IncomeSuccessDayRangeItem> VectIncomeSuccessDayRangeItem;
typedef ACE_Refcounted_Auto_Ptr<VectIncomeSuccessDayRangeItem,ACE_Null_Mutex> VectIncomeSuccessDayRangeItemPtr;
struct IncomeSuccessStatic
{
int success_num;
float success_rate;
int fail_num;
float fail_rate;
VectIncomeSuccessDayRangeItemPtr vect_success_day_range_item_ptr;
};
struct PhaseIncomeStatic
{
std::string name;
std::string day_range; //eg. 20050901 ~ 20051010,20051010,20051014
std::vector<std::string> vect_day;
VectStockIncomeInfoPtr vect_stock_income_info_ptr;
// for success static
int total; // total stock number
IncomeSuccessStatic income_success_static;
};
typedef ACE_Refcounted_Auto_Ptr<PhaseIncomeStatic,ACE_Null_Mutex> PhaseIncomeStaticPtr;
typedef std::vector<PhaseIncomeStaticPtr> VectPhaseIncomeStatic;
typedef ACE_Refcounted_Auto_Ptr<VectPhaseIncomeStatic,ACE_Null_Mutex> VectPhaseIncomeStaticPtr;
struct BandIncomeStatic
{
std::string name;
std::string title;
VectPhaseIncomeStaticPtr vect_phase_static_ptr;
// for success static
int total; // total stock number
IncomeSuccessStatic income_success_static;
};
typedef ACE_Refcounted_Auto_Ptr<BandIncomeStatic,ACE_Null_Mutex> BandIncomeStaticPtr;
typedef std::vector<BandIncomeStaticPtr> VectBandIncomeStatic;
typedef ACE_Refcounted_Auto_Ptr<VectBandIncomeStatic,ACE_Null_Mutex> VectBandIncomeStaticPtr;
struct GlobalIncomeStatic
{
std::string index_name;
std::vector<short int> vect_income_day_range;
std::vector<MarketInputInfo> vect_market_input_info;
std::string market_tip;
std::string output_file_name;
std::string dir_name;
float success_level;
// using selector
StockSelectorPtr stock_selector_ptr;
VectBandIncomeStaticPtr vect_band_income_static_ptr;
// for success static
int total; // total stock number
IncomeSuccessStatic income_success_static;
};
/**
* test3 funct -> income test
*/
struct IncomeSelectorTestInfo
{
StockSelectorPtr stock_selector_ptr;
std::string test_file_name;
std::string dir_name;
};
typedef std::vector<IncomeSelectorTestInfo> VectIncomeSelectorTestInfo;
void treat_income_test(const SetStockSelectorPtr& set_selector_ptr);
void treat_income_test_ex(const SetStockSelectorPtr& set_selector_ptr,const std::string& str_test_file);
void treat_income_selector_test_info(const IncomeSelectorTestInfo& income_selector_test_info);
void treate_all_income_test_static(GlobalIncomeStatic& global_income_static);
void obtain_day_range(const GlobalIncomeStatic& global_income_static,
PhaseIncomeStaticPtr& phase_income_static_ptr);
void select_stock_in_phase(const GlobalIncomeStatic& global_income_static,
PhaseIncomeStaticPtr& phase_income_static_ptr);
void obtain_single_static_info(const GlobalIncomeStatic& global_income_static,
StockIncomeInfo& stock_income_info);
void static_success_info(GlobalIncomeStatic& global_income_static);
void static_success_day_range(GlobalIncomeStatic& global_income_static);
void static_success_day_range_single(IncomeSuccessStatic& income_success_static);
float avg(std::vector<float>& vect_f);
float dev(std::vector<float>& vect_f,float f_avg);
void set_up_success_static_value(IncomeSuccessStatic& income_success_static,
const unsigned int& i_day_index,const StockIncomeInfo& stock_income_info);
void set_down_success_static_value(IncomeSuccessStatic& income_success_static,
const unsigned int& i_day_index,const StockIncomeInfo& stock_income_info);
bool print_income_test_interface(const std::vector<std::string>& vect_file,
std::string& str_test_file);
/*
* strFormat : text , html , xml
*
*/
void print_income_test_result(const GlobalIncomeStatic& global_income_static,const std::string strFormat);
void print_income_test_result_html(const GlobalIncomeStatic& global_income_static);
void print_income_test_result_xml(const GlobalIncomeStatic& global_income_static);
void print_income_test_result_text(const GlobalIncomeStatic& global_income_static);
void print_income_test_result_html_stock_list(
const GlobalIncomeStatic& global_income_static,
std::ofstream& ofs);
void print_income_test_result_html_success_static(
const GlobalIncomeStatic& global_income_static,
std::ofstream& ofs);
void print_income_test_result_html_success_static_sub1(
const GlobalIncomeStatic& global_income_static,
std::ofstream& ofs);
void print_income_test_result_html_success_static_sub2(
const GlobalIncomeStatic& global_income_static,
std::ofstream& ofs);
void print_html_success_static_all_2(
const std::string& str_title,
const std::string& str_band,
const std::string& str_phase,const int& total,
const IncomeSuccessStatic& income_success_static,
std::ofstream& ofs);
void print_html_success_static_title(std::ofstream& ofs);
void print_html_success_static_content(
const std::string& str_title,
const std::string& str_band,
const std::string& str_phase,
const int& total,
const IncomeSuccessStatic& income_success_static,
std::ofstream& ofs);
void print_html_success_static_day_range_title(std::ofstream& ofs);
void print_html_success_static_day_range(
const std::string& str_title,
const std::string& str_band,
const std::string& str_phase,
const IncomeSuccessDayRangeItem& income_success_day_range_item,
std::ofstream& ofs);
bool get_income_test_info_from_file(GlobalIncomeStatic& global_income_static,
const std::string& str_file);
std::string get_band_suffix_name(const std::string& str_name);
std::string get_phase_suffix_name(const std::string& str_name);
/******************************** The End of Income Testing *************************************/
} // namespace hbstock2
#endif // #ifndef __HBSTOCK2_DO_STOCK_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -