📄 stock_kline.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 + -