亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stockalgo.h

?? 通信達接口引警 可直接下載股票數(shù)據(jù),建立自已的股票軟件
?? H
字號:

#ifndef _STOCK_ALGORITHM_H_
#define  _STOCK_ALGORITHM_H_

#include <vector>
#include <deque>

namespace StockMarket{


template <typename T>
class CalculatePara
{
private:
	struct ParaData
	{
		ParaData() : total_price(0), price_gain(0), price_vibration(0), total_buy_vol(0), total_sell_vol(0), transact_count(0) ,minute(0){}
		T cur_price;
		T total_price;
		T price_gain;
		T price_vibration;
		T total_buy_vol;
		T total_sell_vol;
		int transact_count;
		int minute;

		ParaData & operator += (const ParaData & second)
		{
			this->price_vibration += second.price_vibration;
			this->price_gain += second.price_gain;
			this->total_buy_vol += second.total_buy_vol;
			this->total_sell_vol += second.total_sell_vol;
			this->total_price += second.total_price;
			return *this;
		};
		ParaData & operator -= (const ParaData & second)
		{
			this->price_vibration -= second.price_vibration;
			this->price_gain -= second.price_gain;
			this->total_buy_vol -= second.total_buy_vol;
			this->total_sell_vol -= second.total_sell_vol;
			this->total_price -= second.total_price;
			return *this;
		};
	};
	struct normalizedPara
	{
		normalizedPara() : open_buy_vol(0.0), open_sell_vol(0.0), open_gain(0.0), current_gain(0.0)
			, long_price_vibration(0.0), long_vol(0.0),long_vol2(0.0)
			, mid_price_vibration(0.0), mid_vol(0.0), mid_vol2(0.0)
			, short_buy_vol(0.0), short_sell_vol(0.0), short_gain1(0.0)
			, short_gain2(0.0), mid_gain(0.0), long_gain(0.0)
		{}
		float open_gain;				// 開盤升幅
		float open_buy_vol;			// 開盤換手率
		float open_sell_vol;			// 開盤換手率

		float short_gain1;			// 最新短期升幅
		float short_gain2;			// 次新短期升幅
		float current_gain;			// 當前升幅

		float short_buy_vol;			// 短期平均每分鐘買量換手率
		float short_sell_vol;			// 短期平均每分鐘賣量換手率

		float mid_gain;				// 中期平均每分鐘換手率
		float mid_vol;				// 中期平均每分鐘換手率
		float mid_vol2;				// 中期平均每分鐘換手率
		
		float long_gain;				// 中期平均每分鐘換手率
		float long_vol;				// 長期平均每分鐘換手率
		float long_vol2;				// 長期平均每分鐘換手率

		float mid_price_vibration;		// 中期振幅
		float long_price_vibration;	// 長期振幅

		float close_gain; 			
	};

public:	
	CalculatePara( uint short_peroid, uint mid_period, uint long_period) : open_price_(0), y_close_(0), total_vol_(0),
		short_period_(short_peroid), mid_period_(mid_period), long_period_(long_period),cur_price_(0)
	{
		if(short_peroid >=  mid_period || mid_period >=  long_period )
		{
			throw 5;
		}
	}
	void reset(string code, gregorian::date current, int open_price, int today_close)
	{
#if 0
		int cir_amount = stock_basic_info::Instance().get_cir_amount(code, current);	// 萬股變成手
		{
		StockDayData outdata;
		gregorian::date outdt;
		today_close_ = today_close;
		if(stock_day_data::Instance().get_last_day_data(code, current, outdt, outdata))
		{
			y_close_ = stock_basic_info::Instance().apply_gbbq_front(code, outdt, current, outdata.close);
		}
		}
		if(0 == y_close_)			// 沒有取得前次收盤價, 取今天開盤價
		{
			y_close_ = open_price;
		}
		open_price_ = open_price;
		total_vol_ = cir_amount;
#endif
		minute_para_.clear();
		// 每分鐘記錄一次,  最多有 240 + 5 (開盤) 分鐘
		minute_para_.reserve(250);
	}
	double get_result()
	{
		return 0.0;
	}
	void calc(StockTransact::DailyTransact::const_iterator iter_begin, StockTransact::DailyTransact::const_iterator iter_end) 
	{
		int last_minute = 1, this_minute = 1;
		if(!minute_para_.empty())
		{
			last_minute = minute_para_.back().minute;
		}

		StockTransact::DailyTransact::const_iterator this_minute_begin_iter;
		StockTransact::DailyTransact::const_iterator iter_j;
		for(iter_j = iter_begin; iter_j <= iter_end; ++iter_j)
		{
			if(iter_j->minute > last_minute) 			// have already stored
			{
				this_minute_begin_iter = iter_j;
				this_minute = this_minute_begin_iter->minute;
				iter_begin = iter_j;
				break;
			}
		}
		if(iter_j > iter_end)						// not found
		{
			return;
		}
		
		// initialize
		T buy_vol(0), sell_vol(0), temp_price(0), mx_price(0), mn_price(10000000);
		for(StockTransact::DailyTransact::const_iterator iter_i = iter_begin; iter_i <= iter_end; ++iter_i)
		{
			if(iter_i->minute > this_minute)	// 最后一分鐘沒有計算
			{
				// save
				ParaData para;
				para.minute = this_minute;
				para.price_gain = iter_i->price - this_minute_begin_iter->price;	 // 區(qū)間交迭
				para.price_vibration = mx_price - mn_price;
				para.total_buy_vol = buy_vol;
				para.total_sell_vol = sell_vol;
				para.total_price = temp_price;
				cur_price_ = iter_i->price;
				para.cur_price = cur_price_;
				
				if(minute_para_.empty())
				{
					minute_para_.push_back(para);
				}
				else
				{
					ParaData &last_element = minute_para_.back();
					para += last_element;							// 累計
					minute_para_.push_back(para);
				}

				// re-initialize
				buy_vol = 0;sell_vol = 0;temp_price = 0;mx_price = 0;mn_price = 10000000;
				last_minute = this_minute;
				this_minute_begin_iter = iter_i;
				this_minute = this_minute_begin_iter->minute;
			}

			// calculate
			temp_price += iter_i->price;
			if(iter_i->price > mx_price) 
				mx_price = iter_i->price;
			if(iter_i->price < mn_price)
				mn_price = iter_i->price;

			if(0 == iter_i->bs)
				buy_vol += iter_i->vol;
			else if(1 == iter_i->bs)
				sell_vol += iter_i->vol;
		}
	}
	normalizedPara normalize()
	{
		normalizedPara para;

		para.close_gain = (static_cast<float>(today_close_ - y_close_)) / y_close_;
		para.open_gain = (static_cast<float>(open_price_ - y_close_)) / y_close_;
		para.current_gain = (static_cast<float>(cur_price_ - y_close_)) / y_close_;
		para.open_buy_vol = (static_cast<float>(minute_para_[0].total_buy_vol)) / total_vol_;
		para.open_sell_vol = (static_cast<float>(minute_para_[0].total_sell_vol)) / total_vol_;

		ParaData tail_element = ParaData();
		ParaData last_element = minute_para_.back();

		uint size = minute_para_.size();
		int time_duration = 1;
		
		if(size > long_period_)
			tail_element = minute_para_[size - 1 - long_period_];
		else
			tail_element = minute_para_.front();

		if(last_element.minute >= 13 * 60 && tail_element.minute <= 11 * 60 + 30)
			time_duration = max(last_element.minute - tail_element.minute - 90, 1);
		else
			time_duration = max(last_element.minute - tail_element.minute, 1);

		para.long_price_vibration = (static_cast<float>(last_element.price_vibration - tail_element.price_vibration)) 
			/ time_duration / y_close_;
		para.long_vol = (static_cast<float>(last_element.total_buy_vol + last_element.total_sell_vol - tail_element.total_buy_vol - tail_element.total_sell_vol)) 
			/ time_duration / total_vol_ * 100;
		para.long_gain = (static_cast<float>(last_element.cur_price - tail_element.cur_price)) / y_close_;

		last_element = tail_element;
		if(size > 2 * long_period_)
			tail_element = minute_para_[size -1 - 2 * long_period_];
		else
			tail_element = minute_para_.front();
		if(last_element.minute >= 13 * 60 && tail_element.minute <= 11 * 60 + 30)
			time_duration = max(last_element.minute - tail_element.minute - 90, 1);
		else
			time_duration = max(last_element.minute - tail_element.minute, 1);
		para.long_vol2 = (static_cast<float>(last_element.total_buy_vol + last_element.total_sell_vol - tail_element.total_buy_vol - tail_element.total_sell_vol)) 
			/ time_duration / total_vol_ * 100;

		last_element = minute_para_.back();
		if(size > mid_period_)
			tail_element = minute_para_[size -1 - mid_period_];
		else
			tail_element = minute_para_.front();
			
		if(last_element.minute >= 13 * 60 && tail_element.minute <= 11 * 60 + 30)
			time_duration = max(last_element.minute - tail_element.minute - 90, 1);
		else
			time_duration = max(last_element.minute - tail_element.minute, 1);
		
		para.mid_price_vibration = (static_cast<float>(last_element.price_vibration - tail_element.price_vibration)) 
			 / time_duration / y_close_;
		para.mid_vol = (static_cast<float>(last_element.total_buy_vol + last_element.total_sell_vol - tail_element.total_buy_vol - tail_element.total_sell_vol)) 
			 / time_duration / total_vol_ * 100;
		para.mid_gain = (static_cast<float>(last_element.cur_price - tail_element.cur_price)) / y_close_;

		last_element = tail_element;
		if(size > 2 * mid_period_)
			tail_element = minute_para_[size -1 - 2 * mid_period_];
		else
			tail_element = minute_para_.front();
			
		if(last_element.minute >= 13 * 60 && tail_element.minute <= 11 * 60 + 30)
			time_duration = max(last_element.minute - tail_element.minute - 90, 1);
		else
			time_duration = max(last_element.minute - tail_element.minute, 1);
		para.mid_vol2 = (static_cast<float>(last_element.total_buy_vol + last_element.total_sell_vol - tail_element.total_buy_vol - tail_element.total_sell_vol)) 
			 / time_duration / total_vol_ * 100;

		last_element = minute_para_.back();
		if(size > short_period_)
			tail_element = minute_para_[size -1 - short_period_];
		else
			tail_element = minute_para_.front();
			
		if(last_element.minute >= 13 * 60 && tail_element.minute <= 11 * 60 + 30)
			time_duration = max(last_element.minute - tail_element.minute - 90, 1);
		else
			time_duration = max(last_element.minute - tail_element.minute, 1);
		
		para.short_buy_vol = (static_cast<float>(last_element.total_buy_vol - tail_element.total_buy_vol)) / time_duration / total_vol_ * 100;
		para.short_sell_vol = (static_cast<float>(last_element.total_sell_vol - tail_element.total_sell_vol)) / time_duration / total_vol_ * 100;
		para.short_gain1 = (static_cast<float>(last_element.cur_price - tail_element.cur_price)) / y_close_;

		last_element = tail_element;
		if(size > 2 * short_period_)
			tail_element = minute_para_[size -1 - 2 * short_period_];
		else
			tail_element = minute_para_.front();

		para.short_gain2 = (static_cast<float>(last_element.cur_price - tail_element.cur_price)) / y_close_;
		return para;
		
	}
	bool output_to_file(ofstream& ofs)
	{
		if(minute_para_.size() <=0 ) return false;
		const int width = 11;
		normalizedPara para = normalize();
		ofs << setw(width) << para.open_gain <<  setw(width) << para.open_buy_vol << setw(width) << para.open_sell_vol 
			<< setw(width) << para.short_gain1 << setw(width) << para.short_gain2 <<  setw(width) << para.current_gain
			<< setw(width) << para.short_buy_vol << setw(width) << para.short_sell_vol
			<< setw(width) << para.mid_gain << setw(width) << para.mid_vol << setw(width) << para.mid_vol2 
			<< setw(width) << para.long_gain << setw(width) << para.long_vol << setw(width) << para.long_vol2 
			<< setw(width) << para.mid_price_vibration << setw(width) << para.long_price_vibration << setw(width) << para.close_gain<< ' ';
		return true;
	}
private:
	const uint short_period_;
	const uint mid_period_;
	const uint long_period_;
	int total_vol_;
	int cur_price_;
	int today_close_;
	int y_close_;
	int open_price_;
	vector<ParaData> minute_para_;

};


}
#endif


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品日韩成人| 日本网站在线观看一区二区三区| 亚洲一级二级三级| 国产一区欧美一区| 欧洲国内综合视频| 国产区在线观看成人精品| 亚洲国产sm捆绑调教视频| 高清beeg欧美| 日韩一区二区三区在线视频| 一区二区三区不卡视频在线观看 | 日韩欧美在线网站| 国产精品国产三级国产aⅴ无密码| 裸体一区二区三区| 91黄视频在线| 国产精品久久久久7777按摩 | 国产99精品国产| 欧美丰满少妇xxxbbb| 亚洲欧美一区二区久久| 国产69精品久久久久毛片 | 奇米精品一区二区三区四区 | 成人免费黄色在线| 日韩免费高清电影| 五月婷婷久久综合| 欧美色男人天堂| 亚洲女同一区二区| 成人动漫一区二区| 国产精品久久久久久户外露出| 国内精品嫩模私拍在线| 欧美xxxxxxxxx| 麻豆91在线看| 亚洲精品一区二区三区香蕉| 蜜桃av一区二区在线观看| 欧美日韩美少妇| 亚洲r级在线视频| 欧美日韩一区二区欧美激情| 亚洲一区免费观看| 欧洲亚洲精品在线| 亚洲国产美女搞黄色| 色婷婷综合五月| 亚洲成人精品影院| 91麻豆精品国产自产在线 | 亚洲精品成人天堂一二三| va亚洲va日韩不卡在线观看| 亚洲日本在线观看| 在线观看一区日韩| 亚洲成人综合网站| 日韩一级二级三级| 国产九色sp调教91| 中文字幕中文字幕中文字幕亚洲无线| 99精品在线观看视频| 亚洲码国产岛国毛片在线| 欧美综合色免费| 日韩精品一级中文字幕精品视频免费观看 | 亚洲欧美国产77777| 欧美特级限制片免费在线观看| 亚洲va欧美va人人爽| 久久午夜免费电影| av不卡在线播放| 亚洲一卡二卡三卡四卡无卡久久| 91精品国产一区二区人妖| 国产综合色在线| 中文字幕一区二区三区在线不卡| 色中色一区二区| 日韩影院免费视频| 久久精品视频网| 色视频欧美一区二区三区| 美女网站视频久久| 国产精品国产三级国产aⅴ无密码| 欧美视频一区在线观看| 国内精品在线播放| 亚洲国产精品一区二区www在线| 91精品国产综合久久福利软件| 高清不卡一二三区| 日本三级韩国三级欧美三级| 国产日韩欧美精品一区| 欧美日韩国产在线观看| 国产69精品久久久久毛片| 视频在线观看91| 国产精品国产成人国产三级| 日韩午夜激情视频| 在线观看中文字幕不卡| 岛国精品一区二区| 日本视频一区二区| 亚洲精品写真福利| 久久精品男人的天堂| 欧美伦理视频网站| 日本电影欧美片| 成人美女视频在线看| 日本欧美韩国一区三区| 亚洲黄色小说网站| 国产欧美日本一区二区三区| 日韩午夜激情电影| 欧美日韩国产小视频在线观看| 丁香激情综合国产| 精品一区二区在线看| 婷婷国产v国产偷v亚洲高清| 亚洲欧洲综合另类| 国产精品国产自产拍在线| 久久久久久久久久久久久女国产乱| 欧美日韩精品一区二区天天拍小说 | 国产成人99久久亚洲综合精品| 日av在线不卡| 亚洲国产一二三| 亚洲少妇30p| 国产精品免费免费| 国产亚洲美州欧州综合国| 日韩欧美国产精品一区| 91精品国产91久久久久久最新毛片| 91久久精品一区二区二区| 91在线无精精品入口| 成人小视频免费在线观看| 国产大陆亚洲精品国产| 国模无码大尺度一区二区三区| 美国十次综合导航| 日本vs亚洲vs韩国一区三区二区| 日本欧美大码aⅴ在线播放| 亚洲午夜在线视频| 亚洲成av人片在线观看无码| 亚洲无人区一区| 亚洲成人三级小说| 香港成人在线视频| 麻豆视频一区二区| 九九精品一区二区| 国产福利91精品一区二区三区| 国产精品91一区二区| 成人午夜在线播放| 色综合色综合色综合色综合色综合| 99精品欧美一区二区三区综合在线| 97精品久久久午夜一区二区三区 | 亚洲自拍偷拍网站| 亚洲国产美国国产综合一区二区| 日日摸夜夜添夜夜添精品视频 | 国产91在线|亚洲| 成人av在线资源| 91福利国产成人精品照片| 欧美日本国产视频| 日韩精品一区二区三区蜜臀| 国产亚洲美州欧州综合国| 国产精品乱人伦中文| 亚洲尤物视频在线| 免费成人美女在线观看| 国产精品白丝av| 欧洲人成人精品| 精品sm在线观看| 伊人婷婷欧美激情| 麻豆精品久久久| 91污片在线观看| 日韩一区二区精品在线观看| 国产日韩欧美高清| 亚洲伊人色欲综合网| 韩国精品久久久| 色婷婷激情一区二区三区| 日韩一区二区电影网| 中文字幕一区二区日韩精品绯色| 亚洲无线码一区二区三区| 国产精品99久久久久久久女警| 色天天综合久久久久综合片| 精品国产sm最大网站| 亚洲精品老司机| 国内精品在线播放| 欧美影院午夜播放| 国产午夜精品久久久久久免费视| 亚洲一级二级三级在线免费观看| 国产一区二区三区日韩| 欧美午夜精品电影| 中文成人综合网| 美腿丝袜亚洲一区| 色婷婷久久99综合精品jk白丝 | 精品国产伦理网| 亚洲一区精品在线| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 欧美日韩精品一区二区三区四区 | 精品剧情v国产在线观看在线| 亚洲视频一区二区免费在线观看| 久久99精品久久久| 一本大道久久a久久精品综合| 日本乱人伦一区| 久久精品夜色噜噜亚洲a∨| 亚洲 欧美综合在线网络| av成人老司机| 国产精品欧美极品| 精品一二三四区| 欧美一卡二卡在线观看| 亚洲成人av一区二区| 91免费视频大全| 国产精品视频一区二区三区不卡| 韩国女主播成人在线观看| 欧美一级xxx| 人人狠狠综合久久亚洲| 欧美日韩中文精品| 亚洲一区二区三区免费视频| 色婷婷综合久久久久中文一区二区| 亚洲国产高清在线观看视频| 国产精品综合在线视频| 欧美zozo另类异族| 蜜桃久久久久久久| 精品久久久久久久久久久院品网| 奇米777欧美一区二区| 日韩精品专区在线影院重磅| 麻豆一区二区三区|