⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stock_kline.h

📁 股票分析源代码
💻 H
字号:
#ifndef __HBSTOCK2_STOCK_KLINE_H__
#define __HBSTOCK2_STOCK_KLINE_H__

#include <string>

#include "hbstock2/stock_data.h"

namespace hbstock2
{

void get_day_kline_ratio(std::vector<float>& vect_data,
	const VectStockData& vect_data_in);
	
enum KLINE_TYPE {CROSS,T,RT,
	SMALLUP,MIDDLEUP,BIGUP,
	SMALLDOWN,MIDDLEDOWN,BIGDOWN}; 

KLINE_TYPE get_kline_type(const StockData& data,
	const float& f_max_ratio_t_star = 20,
	const float& f_max_rate_t_star_high_low = 1.0,	
	const float& f_min_ratio_high_middle_low = 30.0,	
	const float& f_max_ratio_high_middle_low = 70.0,	
	const float& f_min_rate_price = 4.0,	
	const float& f_max_rate_price = 7.0);

enum KLINE_TRACE_TYPE {LOWLOW,LOWZERO,LOWHIGH,
	ZEROLOW,ZEROZERO,ZEROHIGH,
	HIGHLOW,HIGHZERO,HIGHHIGH};

KLINE_TRACE_TYPE get_kline_trace_type(
	const StockData& data_prev,const StockData& data,	
	const float& f_zero_rate_price = 1.0);

struct KLineInfo
{
	float       highest_price;	
	float       lowest_price;	
	float       hc_lowest_price; // lowest between highest and current price	
	float       current_price;
	
	float       highest_close_price;	
	float       lowest_close_price;	
	float       hc_lowest_close_price;
		
	char highest_price_day[LEN_DATE+1];
	char lowest_price_day[LEN_DATE+1];
	char hc_lowest_price_day[LEN_DATE+1];
	char current_price_day[LEN_DATE+1];
	
	// index in vector
	int index_highest;
	int index_lowest;
	int index_hc_lowest;
	int index_current;
	
	
	// dist between highest lowest hc_lowest and current
	int dist_highest_lowest;
	int dist_highest_hc_lowest;
	int dist_highest_current;
	int dist_hc_lowest_current;
	int dist_lowest_current;
	
	
	// rate between highest lowest hc_lowest and current
	float rate_highest_lowest;
	float rate_highest_hc_lowest;
	float rate_highest_current;
	float rate_hc_lowest_current;
	float rate_hc_lowest_lowest;
	float rate_lowest_current;
	
	// rate between highest lowest hc_lowest and current 
	float rate_highest_lowest_close;
	float rate_highest_hc_lowest_close;
	float rate_highest_current_close;
	float rate_hc_lowest_current_close;
	float rate_hc_lowest_lowest_close;
	float rate_lowest_current_close;
	
	// add by later
	bool is_div ;
	float div_rate;	
	bool is_include_div_data;
	int index_div;
	
};

void print_kline_info(const KLineInfo& info);
void get_kline_info(KLineInfo& info,
	const VectStockData& vect_data,
	const unsigned int& len = 0,
	const bool& is_div=false,const float& div_rate= -11.0);

struct KLineTop
{
	unsigned int index;
	bool is_high_point;	
};

struct KLineWaveInfo
{	
	int wave_field_width;
	
	bool is_div ;
	float div_rate;
	bool is_include_div_data;
	
	unsigned int index_highest;
	unsigned int index_lowest;
	bool is_low_of_last_index;
	
	std::vector<unsigned int> vect_div_data_index;
	std::vector<KLineTop> vect_top_index;
	
};

void get_kline_wave_info(KLineWaveInfo& info,
	const VectStockData& vect_data,
	const unsigned int& len = 0,
	const bool& is_div=false,const float& div_rate= -10.3,
	const int& wave_field_width = 10);

void print_kline_wave_info(const KLineWaveInfo& info,
	const VectStockData& vect_data);

// concave's reversed word is convex
struct KLineConvexWave
{	
	bool is_convex;
		
	bool is_div ;
	float div_rate;
	bool is_include_div_data;
	int index_div;
		
	// index in vector
	int index_middlehighest_org;
	int index_middlehighest;
	int index_leftlowest;
	int index_rightlowest;
	int index_lastlow;
	int index_current;
		
	// dist between highest lowest hc_lowest and current
	int dist_middlehighest_leftlowest;
	int dist_middlehighest_rightlowest;
	int dist_middlehighest_lastlow;
	int dist_middlehighest_current;
	int dist_rightlowest_current;
	int dist_lastlow_current;
	int dist_leftlowest_current;
	int dist_leftlowest_lastlow;
	int dist_rightlowest_lastlow;
	
	int count_bighigh_point; // count from index_leftlowest to index_rightlowest
	int count_high_point; // count from index_leftlowest to index_current
	int count_low_point;
	
	// rate between highest left lowest right lowest and current
	float rate_middlehighest_leftlowest;
	float rate_middlehighest_rightlowest;
	float rate_middlehighest_lastlow;
	float rate_middlehighest_current;
	float rate_rightlowest_current;
	float rate_rightlowest_leftlowest;
	float rate_leftlowest_current;
	
	// rate between highest lowest rightlowest and current 
	float rate_middlehighest_leftlowest_close;
	float rate_middlehighest_rightlowest_close;
	float rate_middlehighest_lastlow_close;
	float rate_middlehighest_current_close;
	float rate_rightlowest_current_close;
	float rate_rightlowest_leftlowest_close;
	float rate_leftlowest_current_close;
	
};

void get_kline_convex_wave(KLineConvexWave& wave,
	const KLineWaveInfo& info,
	const VectStockData& vect_data
	);

void print_kline_convex_wave(const KLineConvexWave& wave,
	const VectStockData& vect_data);

} // namespace hbstock2
#endif  // #ifndef __HBSTOCK2_STOCK_KLINE_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -