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

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

?? stockio.cpp

?? 通信達接口引警 可直接下載股票數據,建立自已的股票軟件
?? CPP
字號:

#include <fstream>
#include <sstream>

#include <boost/thread/detail/config.hpp>
#include <boost/thread/thread.hpp>
#include <boost/thread/recursive_mutex.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>

#include "boost/filesystem/operations.hpp" // includes boost/filesystem/path.hpp
#include "boost/filesystem/fstream.hpp"    // ditto

#include <iomanip>

#include "Stock.h"
#include "request.h"
#include "response.h"
#include "commands.h"
#include "util.hpp"
#include "StockIo.h"

using namespace std;
using namespace boost;

BOOST_CLASS_TRACKING(StockMarket::StockBid::BidMap, serialization::track_never);
BOOST_CLASS_TRACKING(StockMarket::StockTransact::TransactMap, serialization::track_never);

namespace StockMarket
{


void AddStockListRequest(bool all)
{
	recursive_mutex::scoped_lock guard(req_queue_mutex);
	CmdQueue_t &q = CmdQueue::Instance();
	int total, oneReqCnt;
	// 因為 socket 底層組包不能太長的關系, 所以這里不能超過 70
	// 開始的時候不知道 stocks_count, 所以用一個很大的數字
	for(MarketInfo::MarketType m = MarketInfo::MARKET_FIRST;
		m < MarketInfo::MARKET_MAX; m=(MarketInfo::MarketType)(m+1))
	{
		if(all)
		{
			total = MarketInfo::stocks_count[m];
			oneReqCnt = 70;
		}
		else
		{
			total = oneReqCnt = 1;
		}
		CmdData_t r(new StockListReq(m, 0, oneReqCnt, total));
		q.push(r);
	}
}

void AddInstantTransRequest( int count)
{
	recursive_mutex::scoped_lock guard(req_queue_mutex);
	CmdQueue_t &q = CmdQueue::Instance();
	CmdData_t r(new InstantTransReq(count));
	q.push(r);

}

string get_transaction_filename(uint d)
{
	stringstream ss;
	const string stock_transaction_path = "F:\\Develop\\stock\\data\\transaction\\";
	ss << stock_transaction_path << d << ".mat";
	return ss.str();
}

// generate the proper filename // for example: \B200510\B20051011.dat
static string get_bid_filepath(uint d)
{
	const string stock_bid_path = "F:\\Develop\\stock\\data\\bid\\";
	stringstream ss;
	ss << stock_bid_path << 'B' << (d /100) << '\\';
	return ss.str();
}
static string get_bid_filename(uint d)
{
	stringstream ss;
	ss << 'B' << d << ".dat";
	return ss.str();
}

void AddHistTransRequest(const gregorian::date& from, const gregorian::date& to)
{
	// check the last date of each data, then send request to get the missing ones
	recursive_mutex::scoped_lock guard(req_queue_mutex);
	CmdQueue_t &q = CmdQueue::Instance();
	gregorian::date current(from);
	for(;current <= to; current += gregorian::date_duration(1))
	{
		uint d = date_to_uint(current);
		string full_filename = get_transaction_filename(d);
		if(! is_file_exist(full_filename))
		{
			CmdData_t r(new HisTransReq(d));
			q.push(r);
		}
	}
	return ;
	
}

void AddGBBQRequest()
{
	// 加載權息數據
	recursive_mutex::scoped_lock guard(req_queue_mutex);
	CmdQueue_t &q = CmdQueue::Instance();

	for(MarketInfo::MarketType m = MarketInfo::MARKET_FIRST;
		m < MarketInfo::MARKET_MAX; m=(MarketInfo::MarketType)(m+1))
	{
		for(StringSet::iterator i = MarketInfo::stocks_set[m].begin();
			i != MarketInfo::stocks_set[m].end();)
		{
			StockHoldChgReq* r1 = new StockHoldChgReq;
			for(int j = 0; j < StockHoldChgReq::max_stocks_a_request && i != MarketInfo::stocks_set[m].end(); ++i, ++j)
			{
				r1->add_stock(*i);
			}
			CmdData_t r(r1);
			q.push(r);
		}
	}

}

void save_day_transaction(uint dt, const StockTransact::DateTransact & transact)
{
	if(transact.empty()) return;

	string stock_day_deal_file = get_transaction_filename(dt);

	StockTransact::DateTransact::const_iterator iter_code;

	if (is_file_exist(stock_day_deal_file))
	{
		return;
	}
	int maxDealCount = 0; int stock_count = 0;
	for(iter_code = transact.begin();iter_code !=  transact.end(); ++iter_code)
	{
		if(iter_code->second.empty()) continue;

		++ stock_count;
		if(iter_code->second.size() > (unsigned int)maxDealCount)
		{
			maxDealCount = iter_code->second.size();
		}
	}

	const int deal_col_count = 6;
	int dims[3];
	dims[0] = deal_col_count;
	dims[1] = maxDealCount;
	dims[2] = stock_count;
	mxArray *mx_t0_data = mxCreateNumericArray(3, &dims[0], mxDOUBLE_CLASS, mxREAL);
	double *p_mxT0data = mxGetPr(mx_t0_data), *p_temp_mxT0data = p_mxT0data;
	
	for(iter_code = transact.begin();iter_code !=  transact.end(); ++iter_code)
	{
		if(iter_code->second.empty()) continue;
		
		bool is_open_price = true;
		for(StockTransact::DailyTransact::const_iterator dtr_i = iter_code->second.begin() ;dtr_i != iter_code->second.end();++dtr_i)
		{
			int bs = dtr_i->bs;
			int tr_count = dtr_i->count <= 0?1:dtr_i->count;
			p_temp_mxT0data[0] = atoi(iter_code->first.c_str());
			p_temp_mxT0data[1] = dtr_i->price;
			p_temp_mxT0data[2] = dtr_i->vol;
			p_temp_mxT0data[3] = tr_count;
			p_temp_mxT0data[4] = bs;
			p_temp_mxT0data[5] = dtr_i->minute;

			p_temp_mxT0data += deal_col_count;
		}
		p_mxT0data += maxDealCount * deal_col_count;
		p_temp_mxT0data = p_mxT0data;

	}
	matlab_engine::Instance().saveVarToFile(stock_day_deal_file, mx_t0_data, "t0_data");
	mxDestroyArray(mx_t0_data);

}

void save_day_bid(const StockBid::BidMap& bid)
{
	recursive_mutex::scoped_lock guard(bid_mutex);
	if(! bid.empty())
	{
		StockBid::BidMap::const_iterator iter = bid.begin();
		if(! iter->second.empty())
		{
			StockBid::DateBid::const_iterator iter2 = iter->second.begin();
			string filepath = get_bid_filepath(iter2->first);
			string filename = filepath + get_bid_filename(iter2->first);
			
			filesystem::path full_path( filesystem::initial_path() );
			full_path = filesystem::system_complete( filesystem::path( filepath, filesystem::native ) );
			try{
				// not exist or this month
				if(!filesystem::exists(full_path))
				{
					filesystem::create_directory(full_path);
				}
				// just overwrite
				ofstream ofs(filename.c_str(), ios::binary);
				if(ofs)
				{
					archive::binary_oarchive oa(ofs);
					oa << bid;
				}
			}
			catch(exception&e)
			{
				cout << e.what();
			}
		}
	}
}


bool transact_data_exsist(const gregorian::date& dt)
{
	uint d = date_to_uint(dt);
	string full_filename = get_transaction_filename(d);
	return is_file_exist(full_filename);
}

bool load_one_day_transact_data(const gregorian::date& current, StockTransact::TransactMap& outTr)
{
	recursive_mutex::scoped_lock guard(transact_mutex);
	// generate the proper filename // for example: \T200510\T20051011.dat
	uint d = date_to_uint(current);
	string full_filename = get_transaction_filename(d);
	ifstream ifs(full_filename.c_str(), ios::binary);
	if(ifs.is_open())
	{
		archive::binary_iarchive ia(ifs);
		outTr.clear();
		ia >> outTr;
		return true;
	}
	return false;
}

int load_transact_data(const gregorian::date& from, const gregorian::date& to, StockTransact::TransactMap& outTr)
{
	StockTransact::TransactMap tempTr;
	for(gregorian::date current(from);current < to; current += gregorian::date_duration(1))
	{
		if(false == load_one_day_transact_data(current, tempTr))
			continue;
		outTr.insert(tempTr.begin(), tempTr.end());
	}
	return 0;
	
}

void load_one_day_bid_data(const gregorian::date& current, StockBid::BidMap& outBid)
{
	recursive_mutex::scoped_lock guard(bid_mutex);
	// generate the proper filename // for example: \B200510\B20051011.dat
	uint d = date_to_uint(current);
	string full_filename = get_bid_filepath(d) + get_bid_filename(d);
	ifstream ifs(full_filename.c_str(), ios::binary);
	if(ifs.is_open())
	{
		archive::binary_iarchive ia(ifs);
		outBid.clear();
		ia >> outBid;
	}

}

int load_bid_data(const gregorian::date& from, const gregorian::date& to, StockBid::BidMap& outBid)
{
	StockBid::BidMap tempBid;
	for(gregorian::date current(from); current < to; current += gregorian::date_duration(1))
	{
		load_one_day_bid_data(current, tempBid);
		outBid.insert(tempBid.begin(), tempBid.end());
	}
	return 0;

}

malabEng::malabEng():pEngine_(engOpen("\0")){}
malabEng::~malabEng()
{
	engClose(pEngine_);
}
void malabEng::putVariable(const mxArray *pInput, const char* var)
{
	engPutVariable(pEngine_, var, pInput);
}
void malabEng::evalString(const char* var)
{
	engEvalString(pEngine_, var);
}
mxArray* malabEng::getVariable(const char* var)
{
	return engGetVariable(pEngine_, var);
}

void malabEng::saveVarToFile(const string &filename, const mxArray *var, const string &var_name)
{
	string eval_str = "save " + filename + + " " + var_name;
	putVariable(var, var_name.c_str());
	evalString(eval_str.c_str());
}


#if 0
	mxArray* DayNnSim(mxArray *pInput)
	{
		engPutVariable(pEngine_, "P", pInput);
		engEvalString(pEngine_, "r = sim(daynet, P)");
		return engGetVariable(pEngine_,"r");
	}
	mxArray* RtNnSim(mxArray *pInput)
	{
		engPutVariable(pEngine_, "P", pInput);
		engEvalString(pEngine_, "r = sim(rtnet, P)");
		return engGetVariable(pEngine_,"r");
	}
#endif


}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图在线看| 1000精品久久久久久久久| 色综合一个色综合亚洲| 国产69精品久久久久毛片| 狠狠色狠狠色综合系列| 久久av资源网| 国产一区二区按摩在线观看| 国产一区二区剧情av在线| 韩国av一区二区三区| 国产成人啪免费观看软件| 成人av电影免费在线播放| 99久久免费视频.com| 色狠狠桃花综合| 91精品国产高清一区二区三区蜜臀| 欧美视频三区在线播放| 日韩欧美在线不卡| 国产午夜亚洲精品午夜鲁丝片| 国产精品视频第一区| 一区二区免费看| 视频在线观看国产精品| 国产一区二区免费在线| 91碰在线视频| 91精品国产综合久久精品图片| 精品国产一区二区三区四区四| 国产日产亚洲精品系列| 亚洲午夜羞羞片| 国产一区二区三区久久久| 色综合久久综合网97色综合 | 国产在线观看一区二区| 成人精品国产免费网站| 欧美日韩五月天| 国产日本欧洲亚洲| 亚洲国产欧美另类丝袜| 国产一区二区福利| 欧美四级电影在线观看| 精品国产伦理网| 亚洲人成在线观看一区二区| 久久精品久久综合| 91免费看`日韩一区二区| 日韩欧美一区电影| 亚洲欧美一区二区三区极速播放 | 亚洲国产色一区| 国模一区二区三区白浆 | 午夜欧美2019年伦理| 激情久久五月天| 欧美日韩国产精选| 国产精品久久精品日日| 男女男精品网站| 欧美在线免费播放| 中文字幕成人网| 国产伦精品一区二区三区免费迷| 欧美在线|欧美| 亚洲欧洲日本在线| 国产成人精品免费| 欧美不卡一区二区| 首页综合国产亚洲丝袜| 欧美在线观看你懂的| 中文字幕在线观看一区| 国产一区二区精品久久99| 欧美一区二区播放| 亚洲成av人片在www色猫咪| 91片在线免费观看| 亚洲人精品午夜| 91亚洲男人天堂| 中文字幕在线观看一区二区| 成人一区二区三区在线观看| 日韩免费观看2025年上映的电影 | 精品精品国产高清a毛片牛牛| 一区二区三区四区五区视频在线观看 | 高清不卡一区二区| 久久精品亚洲一区二区三区浴池| 久久综合综合久久综合| 日韩欧美中文字幕精品| 免费观看91视频大全| 日韩欧美综合一区| 久久99国内精品| 久久蜜桃一区二区| 国产一区久久久| 国产色综合一区| 高清不卡一二三区| 亚洲色图制服诱惑| 欧美探花视频资源| 日韩福利电影在线| 精品国产一区二区精华| 国产综合色产在线精品| 欧美国产精品一区| 成人精品国产一区二区4080| 亚洲激情五月婷婷| 欧美日本在线播放| 久久99深爱久久99精品| 久久精品视频免费| 色哟哟国产精品免费观看| 亚洲va国产va欧美va观看| 91麻豆精品国产91久久久使用方法 | 亚洲狠狠丁香婷婷综合久久久| 一本到不卡免费一区二区| 亚洲福利视频三区| 欧美成人性战久久| 成人免费不卡视频| 亚洲成人午夜电影| 久久天堂av综合合色蜜桃网| www.成人网.com| 午夜精品一区在线观看| 国产日韩精品一区二区三区 | 日韩欧美第一区| 国产不卡视频在线观看| 一区二区三区欧美| 欧美mv日韩mv| 日本韩国欧美在线| 激情久久五月天| 一区二区高清在线| 久久精品一区二区三区不卡| 日本韩国精品在线| 国内精品伊人久久久久av影院| 综合久久一区二区三区| 日韩美女视频在线| 色哟哟日韩精品| 国产高清不卡二三区| 亚洲高清久久久| 国产精品乱码久久久久久| 日韩一级免费一区| 成人app在线观看| 精品一二三四在线| 亚洲自拍欧美精品| 国产欧美一区二区在线观看| 欧美日韩精品一区二区三区| 99久久夜色精品国产网站| 经典一区二区三区| 视频一区二区三区入口| 亚洲欧美韩国综合色| 国产亚洲午夜高清国产拍精品 | 精品国产乱码久久| 欧美日韩在线亚洲一区蜜芽| 成人综合婷婷国产精品久久 | 欧美午夜精品一区二区蜜桃| 成人一区二区视频| 国产精品中文字幕日韩精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲免费在线播放| 国产精品伦理在线| 亚洲国产精品传媒在线观看| 精品国产乱码久久久久久牛牛| 欧美一区日韩一区| 欧美精品在线一区二区| 在线观看精品一区| 91麻豆免费观看| 97se亚洲国产综合在线| 成人短视频下载| 成人免费视频网站在线观看| 国产一本一道久久香蕉| 国产永久精品大片wwwapp| 精品一区免费av| 九九九精品视频| 国模娜娜一区二区三区| 国产乱子伦一区二区三区国色天香| 麻豆精品视频在线| 精品午夜久久福利影院| 国产在线精品一区二区夜色| 精品一区二区三区在线观看| 另类中文字幕网| 国产精品自拍毛片| 懂色av中文字幕一区二区三区 | 欧美人与z0zoxxxx视频| 欧美精品 日韩| 日韩天堂在线观看| 2020国产精品久久精品美国| 国产丝袜欧美中文另类| 国产精品第一页第二页第三页| 亚洲视频免费在线| 亚洲制服丝袜av| 美女www一区二区| 国产69精品久久777的优势| 99久久99久久综合| 欧美日本国产一区| 2020国产精品| 亚洲综合在线电影| 精品一区二区三区视频| av在线这里只有精品| 欧美精选在线播放| 国产欧美日韩另类视频免费观看| 亚洲情趣在线观看| 蜜臀av国产精品久久久久| 丁香桃色午夜亚洲一区二区三区| 99国产精品久久久久久久久久 | 久久精品久久久精品美女| 成人三级伦理片| 欧美欧美午夜aⅴ在线观看| 精品国产青草久久久久福利| 一区二区久久久久| 国产一区 二区| 欧美日韩高清影院| 中文字幕va一区二区三区| 日本亚洲天堂网| 一本在线高清不卡dvd| 26uuu色噜噜精品一区二区| 亚洲免费伊人电影| 国产福利不卡视频| 日韩一本二本av| 亚洲va欧美va人人爽午夜| 成人av网站在线|