mirror of
https://gitee.com/fasiondog/hikyuu.git
synced 2024-12-02 20:08:26 +08:00
增加CSV数据存储方式(未完)
This commit is contained in:
parent
eb60c57065
commit
00dba597bf
360
libs/hikyuu/data_driver/kdata/csv/CsvKDataDriverImp.cpp
Normal file
360
libs/hikyuu/data_driver/kdata/csv/CsvKDataDriverImp.cpp
Normal file
@ -0,0 +1,360 @@
|
||||
/*
|
||||
* CsvKDataDriverImp.cpp
|
||||
*
|
||||
* Created on: 2017年7月19日
|
||||
* Author: fasiondog
|
||||
*/
|
||||
|
||||
#include <fstream>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
|
||||
#include "CsvKDataDriverImp.h"
|
||||
#include "../../../utilities/util.h"
|
||||
#include "../../../Log.h"
|
||||
|
||||
namespace hku {
|
||||
|
||||
CsvKDataDriverImp::CsvKDataDriverImp (
|
||||
const shared_ptr<IniParser>& config,
|
||||
const string& filename)
|
||||
: KDataDriverImp(config), m_filename(filename) {
|
||||
for (int i = 0; i < LAST; ++i) {
|
||||
m_column[i] = Null<size_t>();
|
||||
}
|
||||
|
||||
m_token_buf.reserve(LAST);
|
||||
}
|
||||
|
||||
CsvKDataDriverImp::~CsvKDataDriverImp() {
|
||||
|
||||
}
|
||||
|
||||
void CsvKDataDriverImp::_get_token(const string& line) {
|
||||
m_token_buf.clear();
|
||||
|
||||
string token;
|
||||
size_t pos = 0, prepos = 0;
|
||||
pos = line.find(',', prepos);
|
||||
while (pos != line.npos) {
|
||||
token.assign(line, pos, pos - prepos);
|
||||
boost::trim(token);
|
||||
m_token_buf.push_back(token);
|
||||
prepos = pos + 1;
|
||||
pos = line.find(',', prepos);
|
||||
}
|
||||
|
||||
if (prepos != pos) {
|
||||
boost::trim(token);
|
||||
m_token_buf.push_back(token);
|
||||
}
|
||||
}
|
||||
|
||||
void CsvKDataDriverImp::_get_title_column(const string& line) {
|
||||
_get_token(line);
|
||||
|
||||
int total = (int)m_token_buf.size();
|
||||
for (int i = 0; i < total; ++i) {
|
||||
string token = m_token_buf[i];
|
||||
boost::to_upper(token);
|
||||
|
||||
if ("DATE" == token || "DATETIME" == token || HKU_STR("日期") == token) {
|
||||
m_column[DATE] = i;
|
||||
|
||||
} else if ("OPEN" == token || HKU_STR("开盘价") == token) {
|
||||
m_column[OPEN] = i;
|
||||
|
||||
} else if ("HIGH" == token || HKU_STR("最高价") == token) {
|
||||
m_column[HIGH] = i;
|
||||
|
||||
} else if ("LOW" == token || HKU_STR("最低价") == token) {
|
||||
m_column[LOW] = i;
|
||||
|
||||
} else if ("CLOSE" == token || HKU_STR("收盘价") == token) {
|
||||
m_column[CLOSE] = i;
|
||||
|
||||
} else if ("AMOUNT" == token || HKU_STR("成交金额") == token) {
|
||||
m_column[AMOUNT] = i;
|
||||
|
||||
} else if ("VOLUME" == token || "COUNT" == token || "VOL" == token
|
||||
|| HKU_STR("成交") == token) {
|
||||
m_column[VOLUME] = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CsvKDataDriverImp::loadKData(const string& market, const string& code,
|
||||
KQuery::KType kType, size_t start_ix, size_t end_ix,
|
||||
KRecordList* out_buffer) {
|
||||
std::ifstream infile(m_filename.c_str());
|
||||
if (!infile) {
|
||||
HKU_ERROR("Can't open this file: " << m_filename
|
||||
<< " [CsvKDataDriverImp::loadKData]");
|
||||
return;
|
||||
}
|
||||
|
||||
string line;
|
||||
if (!std::getline(infile, line)) {
|
||||
infile.close();
|
||||
return;
|
||||
}
|
||||
|
||||
_get_title_column(line);
|
||||
|
||||
size_t line_no = 0;
|
||||
while (std::getline(infile, line)) {
|
||||
if (line_no < start_ix)
|
||||
continue;
|
||||
|
||||
if (line_no >= end_ix)
|
||||
break;
|
||||
|
||||
_get_token(line);
|
||||
size_t token_count = m_token_buf.size();
|
||||
|
||||
KRecord record;
|
||||
string action;
|
||||
try {
|
||||
action = "DATE";
|
||||
if (token_count >= m_column[DATE])
|
||||
record.datetime = Datetime(m_token_buf[m_column[DATE]]);
|
||||
|
||||
action = "OPEN";
|
||||
if (token_count >= m_column[OPEN])
|
||||
record.openPrice = boost::lexical_cast<price_t>(m_token_buf[m_column[OPEN]]);
|
||||
|
||||
action = "HIGH";
|
||||
if (token_count >= m_column[HIGH])
|
||||
record.highPrice = boost::lexical_cast<price_t>(m_token_buf[m_column[HIGH]]);
|
||||
|
||||
action = "LOW";
|
||||
if (token_count >= m_column[LOW])
|
||||
record.lowPrice = boost::lexical_cast<price_t>(m_token_buf[m_column[LOW]]);
|
||||
|
||||
action = "CLOSE";
|
||||
if (token_count >= m_column[CLOSE])
|
||||
record.closePrice = boost::lexical_cast<price_t>(m_token_buf[m_column[CLOSE]]);
|
||||
|
||||
action = "VOLUME";
|
||||
if (token_count >= m_column[VOLUME])
|
||||
record.transAmount = boost::lexical_cast<price_t>(m_token_buf[m_column[VOLUME]]);
|
||||
|
||||
action = "AMOUNT";
|
||||
if (token_count >= m_column[AMOUNT])
|
||||
record.transCount = boost::lexical_cast<price_t>(m_token_buf[m_column[AMOUNT]]);
|
||||
|
||||
out_buffer->push_back(record);
|
||||
|
||||
} catch (...) {
|
||||
HKU_WARN("Invalid data in line " << line_no << "! at trans " << action
|
||||
<< " [CsvKDataDriverImp::loadKData]");
|
||||
}
|
||||
|
||||
line_no++;
|
||||
}
|
||||
|
||||
infile.close();
|
||||
}
|
||||
|
||||
size_t
|
||||
CsvKDataDriverImp::getCount(const string& market, const string& code,
|
||||
KQuery::KType kType) {
|
||||
std::ifstream infile(m_filename.c_str());
|
||||
if (!infile) {
|
||||
HKU_ERROR("Can't open this file: " << m_filename
|
||||
<< " [CsvKDataDriverImp::loadKData]");
|
||||
return 0;
|
||||
}
|
||||
|
||||
string line;
|
||||
if (!std::getline(infile, line)) {
|
||||
infile.close();
|
||||
return 0;
|
||||
}
|
||||
|
||||
_get_title_column(line);
|
||||
|
||||
size_t line_no = 0;
|
||||
while (std::getline(infile, line)) {
|
||||
_get_token(line);
|
||||
size_t token_count = m_token_buf.size();
|
||||
|
||||
KRecord record;
|
||||
string action;
|
||||
try {
|
||||
action = "DATE";
|
||||
if (token_count >= m_column[DATE])
|
||||
record.datetime = Datetime(m_token_buf[m_column[DATE]]);
|
||||
|
||||
action = "OPEN";
|
||||
if (token_count >= m_column[OPEN])
|
||||
record.openPrice = boost::lexical_cast<price_t>(m_token_buf[m_column[OPEN]]);
|
||||
|
||||
action = "HIGH";
|
||||
if (token_count >= m_column[HIGH])
|
||||
record.highPrice = boost::lexical_cast<price_t>(m_token_buf[m_column[HIGH]]);
|
||||
|
||||
action = "LOW";
|
||||
if (token_count >= m_column[LOW])
|
||||
record.lowPrice = boost::lexical_cast<price_t>(m_token_buf[m_column[LOW]]);
|
||||
|
||||
action = "CLOSE";
|
||||
if (token_count >= m_column[CLOSE])
|
||||
record.closePrice = boost::lexical_cast<price_t>(m_token_buf[m_column[CLOSE]]);
|
||||
|
||||
action = "VOLUME";
|
||||
if (token_count >= m_column[VOLUME])
|
||||
record.transAmount = boost::lexical_cast<price_t>(m_token_buf[m_column[VOLUME]]);
|
||||
|
||||
action = "AMOUNT";
|
||||
if (token_count >= m_column[AMOUNT])
|
||||
record.transCount = boost::lexical_cast<price_t>(m_token_buf[m_column[AMOUNT]]);
|
||||
|
||||
//out_buffer->push_back(record);
|
||||
|
||||
} catch (...) {
|
||||
HKU_WARN("Invalid data in line " << line_no << "! at trans " << action
|
||||
<< " [CsvKDataDriverImp::getCount]");
|
||||
}
|
||||
|
||||
line_no++;
|
||||
}
|
||||
|
||||
infile.close();
|
||||
|
||||
return line_no;
|
||||
}
|
||||
|
||||
bool
|
||||
CsvKDataDriverImp::getIndexRangeByDate(const string& market, const string& code,
|
||||
const KQuery& query, size_t& out_start, size_t& out_end) {
|
||||
std::ifstream infile(m_filename.c_str());
|
||||
if (!infile) {
|
||||
HKU_ERROR("Can't open this file: " << m_filename
|
||||
<< " [CsvKDataDriverImp::loadKData]");
|
||||
return false;
|
||||
}
|
||||
|
||||
string line;
|
||||
if (!std::getline(infile, line)) {
|
||||
infile.close();
|
||||
return false;
|
||||
}
|
||||
|
||||
_get_title_column(line);
|
||||
|
||||
Datetime startDate = query.startDatetime();
|
||||
Datetime endDate = query.endDatetime();
|
||||
|
||||
Datetime currentDate;
|
||||
size_t line_no = 0;
|
||||
while (std::getline(infile, line)) {
|
||||
_get_token(line);
|
||||
size_t token_count = m_token_buf.size();
|
||||
|
||||
string action;
|
||||
try {
|
||||
action = "DATE";
|
||||
if (token_count >= m_column[DATE]) {
|
||||
currentDate = Datetime(m_token_buf[m_column[DATE]]);
|
||||
if (out_start != 0 && currentDate >= startDate ) {
|
||||
out_start = line_no;
|
||||
}
|
||||
if (out_end != 0 && currentDate > endDate) {
|
||||
out_end = line_no;
|
||||
}
|
||||
}
|
||||
|
||||
} catch (...) {
|
||||
HKU_WARN("Invalid data in line " << line_no << "! at trans " << action
|
||||
<< " [CsvKDataDriverImp::getIndexRangeByDate]");
|
||||
}
|
||||
|
||||
line_no++;
|
||||
}
|
||||
|
||||
infile.close();
|
||||
|
||||
if (out_start !=0 && out_end == 0) {
|
||||
out_end = line_no;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
KRecord
|
||||
CsvKDataDriverImp::getKRecord(const string& market, const string& code,
|
||||
size_t pos, KQuery::KType kType) {
|
||||
KRecord record;
|
||||
std::ifstream infile(m_filename.c_str());
|
||||
if (!infile) {
|
||||
HKU_ERROR("Can't open this file: " << m_filename
|
||||
<< " [CsvKDataDriverImp::loadKData]");
|
||||
return record;
|
||||
}
|
||||
|
||||
string line;
|
||||
if (!std::getline(infile, line)) {
|
||||
infile.close();
|
||||
return record;
|
||||
}
|
||||
|
||||
_get_title_column(line);
|
||||
|
||||
size_t line_no = 0;
|
||||
while (std::getline(infile, line)) {
|
||||
_get_token(line);
|
||||
size_t token_count = m_token_buf.size();
|
||||
|
||||
|
||||
string action;
|
||||
try {
|
||||
action = "DATE";
|
||||
if (token_count >= m_column[DATE])
|
||||
record.datetime = Datetime(m_token_buf[m_column[DATE]]);
|
||||
|
||||
action = "OPEN";
|
||||
if (token_count >= m_column[OPEN])
|
||||
record.openPrice = boost::lexical_cast<price_t>(m_token_buf[m_column[OPEN]]);
|
||||
|
||||
action = "HIGH";
|
||||
if (token_count >= m_column[HIGH])
|
||||
record.highPrice = boost::lexical_cast<price_t>(m_token_buf[m_column[HIGH]]);
|
||||
|
||||
action = "LOW";
|
||||
if (token_count >= m_column[LOW])
|
||||
record.lowPrice = boost::lexical_cast<price_t>(m_token_buf[m_column[LOW]]);
|
||||
|
||||
action = "CLOSE";
|
||||
if (token_count >= m_column[CLOSE])
|
||||
record.closePrice = boost::lexical_cast<price_t>(m_token_buf[m_column[CLOSE]]);
|
||||
|
||||
action = "VOLUME";
|
||||
if (token_count >= m_column[VOLUME])
|
||||
record.transAmount = boost::lexical_cast<price_t>(m_token_buf[m_column[VOLUME]]);
|
||||
|
||||
action = "AMOUNT";
|
||||
if (token_count >= m_column[AMOUNT])
|
||||
record.transCount = boost::lexical_cast<price_t>(m_token_buf[m_column[AMOUNT]]);
|
||||
|
||||
//out_buffer->push_back(record);
|
||||
|
||||
} catch (...) {
|
||||
HKU_WARN("Invalid data in line " << line_no << "! at trans " << action
|
||||
<< " [CsvKDataDriverImp::getKRecord]");
|
||||
}
|
||||
|
||||
if (line_no == pos) {
|
||||
break;
|
||||
}
|
||||
|
||||
line_no++;
|
||||
}
|
||||
|
||||
infile.close();
|
||||
|
||||
return record;
|
||||
}
|
||||
|
||||
} /* namespace hku */
|
61
libs/hikyuu/data_driver/kdata/csv/CsvKDataDriverImp.h
Normal file
61
libs/hikyuu/data_driver/kdata/csv/CsvKDataDriverImp.h
Normal file
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* CsvKDataDriverImp.h
|
||||
*
|
||||
* Created on: 2017年7月19日
|
||||
* Author: fasiondog
|
||||
*/
|
||||
|
||||
#ifndef DATA_DRIVER_KDATA_CSV_CSVKDATADRIVERIMP_H_
|
||||
#define DATA_DRIVER_KDATA_CSV_CSVKDATADRIVERIMP_H_
|
||||
|
||||
#include "../../KDataDriverImp.h"
|
||||
|
||||
namespace hku {
|
||||
|
||||
class CsvKDataDriverImp: public KDataDriverImp {
|
||||
public:
|
||||
CsvKDataDriverImp(const shared_ptr<IniParser>&, const string& filename);
|
||||
virtual ~CsvKDataDriverImp();
|
||||
|
||||
virtual void loadKData(const string& market, const string& code,
|
||||
KQuery::KType kType, size_t start_ix, size_t end_ix,
|
||||
KRecordList* out_buffer);
|
||||
|
||||
virtual size_t
|
||||
getCount(const string& market, const string& code,
|
||||
KQuery::KType kType) ;
|
||||
|
||||
virtual bool
|
||||
getIndexRangeByDate(const string& market, const string& code,
|
||||
const KQuery& query, size_t& out_start, size_t& out_end);
|
||||
|
||||
virtual KRecord
|
||||
getKRecord(const string& market, const string& code,
|
||||
size_t pos, KQuery::KType kType);
|
||||
|
||||
private:
|
||||
void _get_title_column(const string&);
|
||||
void _get_token(const string&);
|
||||
|
||||
private:
|
||||
string m_filename;
|
||||
|
||||
enum COLUMN {
|
||||
DATE = 0,
|
||||
OPEN = 1,
|
||||
HIGH = 2,
|
||||
LOW = 3,
|
||||
CLOSE = 4,
|
||||
VOLUME = 5,
|
||||
AMOUNT = 6,
|
||||
LAST = 7
|
||||
};
|
||||
|
||||
size_t m_column[LAST];
|
||||
vector<string> m_token_buf;
|
||||
|
||||
};
|
||||
|
||||
} /* namespace hku */
|
||||
|
||||
#endif /* DATA_DRIVER_KDATA_CSV_CSVKDATADRIVERIMP_H_ */
|
243
test/data/test_data.csv
Normal file
243
test/data/test_data.csv
Normal file
@ -0,0 +1,243 @@
|
||||
Date,Open,Low,High,Close,Volume,Amount
|
||||
2012-01-10 09:31:00,2225.89,2218.73,2225.89,2220.27,1197342,1059492000
|
||||
2012-01-10 09:32:00,2220.27,2219.51,2224.25,2224.25,570047,499861700
|
||||
2012-01-10 09:33:00,2224.25,2224.01,2226.43,2226.43,545988,481714200
|
||||
2012-01-10 09:34:00,2226.43,2225.43,2229.61,2228.01,642494,579898500
|
||||
2012-01-10 09:35:00,2228.01,2228.01,2230.46,2229.32,663654,605965100
|
||||
2012-01-10 09:36:00,2229.32,2228.17,2230.82,2228.97,786925,687349000
|
||||
2012-01-10 09:37:00,2228.97,2228.76,2230.33,2228.76,666056,596582100
|
||||
2012-01-10 09:38:00,2228.76,2228.76,2232.26,2230.8,561443,493811700
|
||||
2012-01-10 09:39:00,2230.8,2230.8,2234.02,2233.18,616007,523755500
|
||||
2012-01-10 09:40:00,2233.18,2232.95,2235.2,2232.95,657271,581244400
|
||||
2012-01-10 09:41:00,2232.95,2232.45,2234.71,2232.91,768597,666072100
|
||||
2012-01-10 09:42:00,2232.91,2232.47,2234.76,2232.94,689984,577692200
|
||||
2012-01-10 09:43:00,2232.94,2231.32,2233.38,2233.13,621470,518084600
|
||||
2012-01-10 09:44:00,2233.13,2230.75,2233.68,2231.45,580620,484513800
|
||||
2012-01-10 09:45:00,2231.45,2230.56,2233.49,2231.06,629462,530658300
|
||||
2012-01-10 09:46:00,2231.06,2231.06,2232.5,2232.15,493683,420263900
|
||||
2012-01-10 09:47:00,2232.15,2231.27,2232.97,2232.41,438681,356275200
|
||||
2012-01-10 09:48:00,2232.41,2232.41,2234.04,2234.04,455077,395674600
|
||||
2012-01-10 09:49:00,2234.04,2233.11,2234.72,2233.46,517985,427772900
|
||||
2012-01-10 09:50:00,2233.46,2233.46,2235.93,2234.18,536025,446183400
|
||||
2012-01-10 09:51:00,2234.18,2234.18,2236.26,2235.65,556515,479476700
|
||||
2012-01-10 09:52:00,2235.65,2234.72,2236.33,2234.89,660882,553145300
|
||||
2012-01-10 09:53:00,2234.89,2234.45,2237.42,2237.03,548929,490263600
|
||||
2012-01-10 09:54:00,2237.03,2235.08,2238.19,2235.08,567666,465312800
|
||||
2012-01-10 09:55:00,2235.08,2235.08,2237.06,2235.66,631583,517126100
|
||||
2012-01-10 09:56:00,2235.66,2235.66,2239.17,2239.17,577852,454200300
|
||||
2012-01-10 09:57:00,2239.17,2238.52,2240.73,2239.66,674682,527171600
|
||||
2012-01-10 09:58:00,2239.66,2239.22,2242.48,2242.48,714828,540953600
|
||||
2012-01-10 09:59:00,2242.48,2242.38,2244.56,2244.56,751120,574753800
|
||||
2012-01-10 10:00:00,2244.56,2242.36,2244.56,2242.36,901534,717574100
|
||||
2012-01-10 10:01:00,2242.36,2241.22,2243.74,2241.22,771554,615679000
|
||||
2012-01-10 10:02:00,2241.22,2240.2,2241.95,2240.2,643728,503859200
|
||||
2012-01-10 10:03:00,2240.2,2238.95,2241.5,2238.95,543682,445806600
|
||||
2012-01-10 10:04:00,2238.95,2238.95,2240.87,2239.51,517846,390344700
|
||||
2012-01-10 10:05:00,2239.51,2239.44,2241.84,2241.84,482072,396249100
|
||||
2012-01-10 10:06:00,2241.84,2240.22,2241.92,2241.32,450772,392888300
|
||||
2012-01-10 10:07:00,2241.32,2237.84,2242.07,2237.84,612318,504033300
|
||||
2012-01-10 10:08:00,2237.84,2236.64,2238.28,2236.64,594766,492484600
|
||||
2012-01-10 10:09:00,2236.64,2235.07,2237.03,2235.81,521320,436690900
|
||||
2012-01-10 10:10:00,2235.81,2234.92,2236.39,2236.03,441386,376551400
|
||||
2012-01-10 10:11:00,2236.03,2235.21,2236.03,2235.49,344766,287758300
|
||||
2012-01-10 10:12:00,2235.49,2235.05,2236.39,2235.92,413220,303790100
|
||||
2012-01-10 10:13:00,2235.92,2235.57,2237.02,2236.06,394548,292931600
|
||||
2012-01-10 10:14:00,2236.06,2236.06,2237.27,2236.48,319084,263108600
|
||||
2012-01-10 10:15:00,2236.48,2236.48,2237.43,2236.49,349712,277336100
|
||||
2012-01-10 10:16:00,2236.49,2236.31,2237.65,2237.5,350746,300466200
|
||||
2012-01-10 10:17:00,2237.5,2236.71,2238.37,2238.22,319678,263542800
|
||||
2012-01-10 10:18:00,2238.22,2237.34,2239.18,2239.18,273268,239011800
|
||||
2012-01-10 10:19:00,2239.18,2238.93,2240.18,2239.77,423636,335984600
|
||||
2012-01-10 10:20:00,2239.77,2239.77,2241.6,2241.12,374672,314955800
|
||||
2012-01-10 10:21:00,2241.12,2240.99,2242.49,2242.49,420520,342782000
|
||||
2012-01-10 10:22:00,2243.18,2239.71,2243.18,2240.53,556724,461717500
|
||||
2012-01-10 10:23:00,2240.53,2239.55,2241.62,2240.41,393738,329844700
|
||||
2012-01-10 10:24:00,2240.41,2239.89,2241.04,2240.57,318618,262785000
|
||||
2012-01-10 10:25:00,2240.57,2239.8,2241.11,2240.8,329668,256858100
|
||||
2012-01-10 10:26:00,2240.8,2240.16,2241.45,2240.78,313216,260966400
|
||||
2012-01-10 10:27:00,2240.78,2240.78,2241.89,2241.48,308850,249065500
|
||||
2012-01-10 10:28:00,2241.48,2241.48,2243.48,2242.5,331414,277463000
|
||||
2012-01-10 10:29:00,2242.5,2241.26,2243.96,2241.26,423024,351553500
|
||||
2012-01-10 10:30:00,2241.26,2240.63,2242.12,2241.44,487012,393111600
|
||||
2012-01-10 10:31:00,2241.44,2241.44,2243.1,2242.33,316708,257876000
|
||||
2012-01-10 10:32:00,2242.33,2242.23,2243.51,2243.51,284638,221814800
|
||||
2012-01-10 10:33:00,2243.51,2242.94,2243.89,2243.62,293818,237097000
|
||||
2012-01-10 10:34:00,2243.62,2243.59,2245.33,2245.33,368330,310487000
|
||||
2012-01-10 10:35:00,2245.33,2244.71,2247.03,2245.79,424910,352997400
|
||||
2012-01-10 10:36:00,2245.79,2245.58,2247,2245.88,531620,429219800
|
||||
2012-01-10 10:37:00,2245.88,2245.88,2247.77,2247.31,449756,361154600
|
||||
2012-01-10 10:38:00,2247.31,2245.81,2248.02,2248.02,399464,335687700
|
||||
2012-01-10 10:39:00,2248.02,2245.92,2248.86,2245.92,475656,376827900
|
||||
2012-01-10 10:40:00,2245.92,2245.79,2247.94,2246.97,438004,353660900
|
||||
2012-01-10 10:41:00,2246.97,2246.7,2248.01,2247.69,363016,297596900
|
||||
2012-01-10 10:42:00,2247.69,2247.18,2248.54,2247.37,316676,260667400
|
||||
2012-01-10 10:43:00,2247.37,2247.36,2248.97,2248.97,340012,287756300
|
||||
2012-01-10 10:44:00,2248.97,2246.91,2248.97,2248.01,347384,302352400
|
||||
2012-01-10 10:45:00,2248.01,2245.82,2248.7,2245.82,449912,361203700
|
||||
2012-01-10 10:46:00,2245.82,2243.27,2245.82,2243.27,527260,430942200
|
||||
2012-01-10 10:47:00,2243.27,2243.24,2245.19,2243.52,410348,343705600
|
||||
2012-01-10 10:48:00,2243.52,2242.67,2244.6,2243.37,368800,301735900
|
||||
2012-01-10 10:49:00,2243.37,2243.37,2244.43,2243.52,284068,239437800
|
||||
2012-01-10 10:50:00,2243.52,2243.52,2244.76,2243.83,242128,207112200
|
||||
2012-01-10 10:51:00,2243.83,2243.61,2245.17,2243.61,287056,239712300
|
||||
2012-01-10 10:52:00,2243.61,2243.43,2244.68,2244.05,282512,249083900
|
||||
2012-01-10 10:53:00,2244.05,2243.03,2244.73,2243.03,259936,220805100
|
||||
2012-01-10 10:54:00,2243.03,2241.79,2243.99,2241.87,330176,285458400
|
||||
2012-01-10 10:55:00,2241.87,2241.35,2243.15,2241.35,401404,369076200
|
||||
2012-01-10 10:56:00,2241.35,2240.21,2242.04,2240.83,405136,330072100
|
||||
2012-01-10 10:57:00,2240.83,2239.37,2241.67,2239.71,346324,271441900
|
||||
2012-01-10 10:58:00,2239.71,2239.14,2240.88,2240.11,301900,251408400
|
||||
2012-01-10 10:59:00,2240.11,2239.14,2240.36,2239.15,245752,219562000
|
||||
2012-01-10 11:00:00,2239.15,2239.15,2240.94,2240.88,296920,227651600
|
||||
2012-01-10 11:01:00,2240.88,2240.44,2241.38,2240.58,231904,191180800
|
||||
2012-01-10 11:02:00,2240.58,2240.58,2242.01,2241.77,227936,192376800
|
||||
2012-01-10 11:03:00,2241.77,2241.71,2242.38,2242,238948,196202500
|
||||
2012-01-10 11:04:00,2242,2242,2242.81,2242.81,286540,216809500
|
||||
2012-01-10 11:05:00,2242.81,2241.93,2243.7,2243.5,270092,227897300
|
||||
2012-01-10 11:06:00,2243.5,2242.74,2244.14,2243.6,289088,235941900
|
||||
2012-01-10 11:07:00,2243.6,2243.42,2244.42,2243.49,269536,198504400
|
||||
2012-01-10 11:08:00,2243.49,2243.49,2246.07,2246.07,365468,266903600
|
||||
2012-01-10 11:09:00,2246.07,2246.07,2247,2246.98,400312,320626700
|
||||
2012-01-10 11:10:00,2246.98,2246.52,2248.49,2247.65,368268,293183500
|
||||
2012-01-10 11:11:00,2247.65,2247.39,2248.7,2248.7,77116,67862530
|
||||
2012-01-10 11:11:00,2248.87,2248.34,2249.17,2248.69,222428,180793300
|
||||
2012-01-10 11:12:00,2248.94,2248.94,2250.3,2249.68,414668,327151600
|
||||
2012-01-10 11:13:00,2249.68,2249.68,2251.38,2250.86,373528,320737300
|
||||
2012-01-10 11:14:00,2250.86,2250.86,2252.2,2251.83,399808,308719600
|
||||
2012-01-10 11:15:00,2251.83,2250.92,2251.83,2251.29,344600,290070500
|
||||
2012-01-10 11:16:00,2251.29,2251.29,2252.41,2252.4,358028,276631600
|
||||
2012-01-10 11:17:00,2252.22,2251.76,2252.69,2252.52,329232,268292100
|
||||
2012-01-10 11:18:00,2252.52,2251.71,2252.89,2251.71,373204,294486000
|
||||
2012-01-10 11:19:00,2251.71,2251.66,2253.42,2253.17,319736,257544200
|
||||
2012-01-10 11:20:00,2253.17,2252.3,2253.25,2253.06,304056,234303500
|
||||
2012-01-10 11:21:00,2253.06,2252.22,2254.21,2254.21,335320,273342500
|
||||
2012-01-10 11:22:00,2254.21,2254.21,2255.73,2255.34,570756,428711900
|
||||
2012-01-10 11:23:00,2255.34,2255.34,2257.39,2257.19,487264,373747700
|
||||
2012-01-10 11:24:00,2257.19,2256.83,2258.73,2258.24,495724,411201500
|
||||
2012-01-10 11:25:00,2258.24,2257.67,2258.83,2258.74,455136,358740000
|
||||
2012-01-10 11:26:00,2258.74,2258.01,2260.05,2259.62,452800,371941400
|
||||
2012-01-10 11:27:00,2259.62,2259.58,2260.07,2259.87,414908,350257200
|
||||
2012-01-10 11:28:00,2259.87,2258.54,2260.28,2258.54,410128,325070800
|
||||
2012-01-10 11:29:00,2258.54,2258.29,2259.84,2259.51,306700,257069100
|
||||
2012-01-10 11:30:00,2259.51,2258.86,2259.92,2259.88,323400,248197100
|
||||
2012-01-10 13:01:00,2259.88,2259.88,2261.27,2261.01,835644,620212200
|
||||
2012-01-10 13:02:00,2261.01,2260.22,2262,2261.43,292780,229785600
|
||||
2012-01-10 13:03:00,2261.43,2260.42,2262.25,2261.66,338856,268922900
|
||||
2012-01-10 13:04:00,2261.66,2261.26,2262.3,2262.3,286484,238772200
|
||||
2012-01-10 13:05:00,2261.17,2260.48,2262.91,2261.91,330376,269918200
|
||||
2012-01-10 13:06:00,2261.91,2261.48,2262.96,2262.5,233976,202285100
|
||||
2012-01-10 13:07:00,2262.5,2261.78,2263.61,2262.26,268512,233984000
|
||||
2012-01-10 13:08:00,2262.26,2262.26,2264.14,2264.14,272596,233676800
|
||||
2012-01-10 13:09:00,2264.14,2263.57,2264.82,2264.82,335096,282271700
|
||||
2012-01-10 13:10:00,2264.82,2264.57,2265.23,2264.96,372644,309104600
|
||||
2012-01-10 13:11:00,2264.96,2263.97,2266.48,2266.48,400236,333033500
|
||||
2012-01-10 13:12:00,2266.48,2263.39,2266.48,2265.12,459392,410538000
|
||||
2012-01-10 13:13:00,2265.12,2263.29,2265.84,2263.67,357432,304123900
|
||||
2012-01-10 13:14:00,2263.67,2263.36,2264.55,2264.55,367952,315584500
|
||||
2012-01-10 13:15:00,2264.55,2263.41,2264.55,2264.24,309752,266530800
|
||||
2012-01-10 13:16:00,2264.24,2263.01,2264.36,2263.94,343296,301834200
|
||||
2012-01-10 13:17:00,2263.94,2263.28,2264.58,2263.28,289516,235483100
|
||||
2012-01-10 13:18:00,2263.28,2262.42,2264.55,2264.14,287628,238116900
|
||||
2012-01-10 13:19:00,2262.18,2261.65,2263.69,2262.64,367376,318304300
|
||||
2012-01-10 13:20:00,2262.64,2262.15,2264,2264,325904,311832600
|
||||
2012-01-10 13:21:00,2264,2264,2265.88,2265.31,424948,378048500
|
||||
2012-01-10 13:22:00,2265.31,2265.31,2267.28,2266.98,473856,403656700
|
||||
2012-01-10 13:23:00,2266.98,2266.98,2268.97,2268.63,706520,569843700
|
||||
2012-01-10 13:24:00,2268.63,2268.56,2270.39,2270.39,617164,529489900
|
||||
2012-01-10 13:25:00,2270.39,2270.23,2271.93,2270.23,628416,540696600
|
||||
2012-01-10 13:26:00,2270.23,2270.23,2272.31,2270.94,644012,559116300
|
||||
2012-01-10 13:27:00,2270.94,2270.51,2271.86,2270.6,569144,470994900
|
||||
2012-01-10 13:28:00,2270.6,2270.38,2271.99,2271.21,438152,371023900
|
||||
2012-01-10 13:29:00,2271.21,2271.21,2272.7,2272.56,453080,395644900
|
||||
2012-01-10 13:30:00,2272.56,2271.57,2273.2,2273.01,432300,383848400
|
||||
2012-01-10 13:31:00,2273.01,2272.89,2274.04,2273.78,460812,406134800
|
||||
2012-01-10 13:32:00,2273.78,2273.4,2275.22,2274.75,427936,370548700
|
||||
2012-01-10 13:33:00,2274.75,2274.75,2276.52,2276.4,490228,390320100
|
||||
2012-01-10 13:34:00,2276.46,2276.12,2277.74,2277.61,532688,448770000
|
||||
2012-01-10 13:35:00,2277.61,2276.7,2277.98,2277.78,531072,447873000
|
||||
2012-01-10 13:36:00,2277.78,2277.06,2279.59,2279.59,605272,491012100
|
||||
2012-01-10 13:37:00,2279.59,2279.59,2282.24,2281.6,919288,731660300
|
||||
2012-01-10 13:38:00,2281.6,2281.6,2283.75,2282.08,715448,583573500
|
||||
2012-01-10 13:39:00,2282.08,2279.55,2284.02,2279.55,788112,640585700
|
||||
2012-01-10 13:40:00,2279.55,2279.48,2281.01,2279.48,618840,519974900
|
||||
2012-01-10 13:41:00,2279.48,2277.61,2279.48,2278,457384,370974700
|
||||
2012-01-10 13:42:00,2278,2275.87,2278,2276.32,518520,409972700
|
||||
2012-01-10 13:43:00,2276.32,2274.71,2276.39,2275.51,417120,342982700
|
||||
2012-01-10 13:44:00,2275.51,2274.07,2275.51,2275.26,371304,311054300
|
||||
2012-01-10 13:45:00,2275.26,2273.8,2275.26,2274.72,340936,282562600
|
||||
2012-01-10 13:46:00,2274.72,2274.12,2275.74,2275.47,380848,301359100
|
||||
2012-01-10 13:47:00,2275.47,2274.99,2276.94,2276.87,347144,291708900
|
||||
2012-01-10 13:48:00,2276.87,2276.03,2277.47,2277.47,327544,285073400
|
||||
2012-01-10 13:49:00,2277.47,2276.48,2277.58,2276.75,370584,316850200
|
||||
2012-01-10 13:50:00,2276.75,2275.86,2277.05,2276.36,354696,299110400
|
||||
2012-01-10 13:51:00,2276.36,2275.34,2276.57,2276.49,380296,315326500
|
||||
2012-01-10 13:52:00,2276.49,2274.54,2276.49,2274.54,371984,293953500
|
||||
2012-01-10 13:53:00,2274.54,2273.67,2275.13,2274.11,389248,296337400
|
||||
2012-01-10 13:54:00,2274.11,2273.03,2274.11,2273.59,404136,315240400
|
||||
2012-01-10 13:55:00,2273.59,2273.25,2276.15,2275.73,540160,437321700
|
||||
2012-01-10 13:56:00,2275.73,2275.09,2276.59,2275.8,363624,326930400
|
||||
2012-01-10 13:57:00,2275.8,2275.47,2276.56,2276.12,376632,300302300
|
||||
2012-01-10 13:58:00,2276.12,2275.86,2277,2276.26,414560,294109200
|
||||
2012-01-10 13:59:00,2276.26,2275.11,2276.53,2275.98,401104,283902000
|
||||
2012-01-10 14:00:00,2275.98,2275.04,2276.24,2275.93,347608,269332500
|
||||
2012-01-10 14:01:00,2275.93,2274.91,2275.93,2275.17,421424,336687100
|
||||
2012-01-10 14:02:00,2275.17,2273.27,2275.17,2273.64,327192,274202600
|
||||
2012-01-10 14:03:00,2273.83,2271.73,2273.96,2272.11,420536,351944700
|
||||
2012-01-10 14:04:00,2272.11,2270.58,2272.16,2271.32,490944,401670100
|
||||
2012-01-10 14:05:00,2271.32,2270.5,2272.84,2272.58,458616,384602100
|
||||
2012-01-10 14:06:00,2272.58,2272.09,2275.14,2275.14,590176,490254300
|
||||
2012-01-10 14:07:00,2275.14,2274.91,2278.76,2278.76,725712,568770600
|
||||
2012-01-10 14:08:00,2278.76,2277.94,2281.62,2281.62,721024,577478700
|
||||
2012-01-10 14:09:00,2281.62,2280.18,2281.62,2281.17,594384,476872700
|
||||
2012-01-10 14:10:00,2281.17,2281.11,2282.58,2282.24,514832,419266600
|
||||
2012-01-10 14:11:00,2282.24,2281.38,2282.66,2281.98,415648,341606400
|
||||
2012-01-10 14:12:00,2281.98,2281.15,2282.17,2281.6,432440,320749600
|
||||
2012-01-10 14:13:00,2281.6,2281.11,2282.28,2282.23,350216,290373600
|
||||
2012-01-10 14:14:00,2282.23,2281.52,2283.12,2283.12,419504,321855500
|
||||
2012-01-10 14:15:00,2283.12,2282.03,2283.12,2282.24,363528,314064900
|
||||
2012-01-10 14:16:00,2282.24,2281.51,2282.67,2281.51,313208,270106600
|
||||
2012-01-10 14:17:00,2281.91,2281.91,2283.25,2282.5,410864,339181600
|
||||
2012-01-10 14:18:00,2282.5,2282.18,2285.37,2285.37,419008,344203300
|
||||
2012-01-10 14:19:00,2285.37,2284.59,2286.43,2285.87,624776,525967400
|
||||
2012-01-10 14:20:00,2285.87,2285.76,2286.88,2286.83,607480,495370200
|
||||
2012-01-10 14:21:00,2286.83,2286.72,2287.93,2287.51,598808,466755600
|
||||
2012-01-10 14:22:00,2287.51,2286.61,2288.57,2287.44,523040,420675600
|
||||
2012-01-10 14:23:00,2287.44,2287.13,2288.3,2287.35,498144,410058800
|
||||
2012-01-10 14:24:00,2287.35,2286.68,2288.07,2286.68,360528,286638100
|
||||
2012-01-10 14:24:00,2286.68,2286.68,2287.37,2287.37,61960,48029700
|
||||
2012-01-10 14:25:00,2287.37,2285.58,2287.37,2285.58,446048,343269400
|
||||
2012-01-10 14:26:00,2285.58,2284.07,2286.54,2285.22,418896,337788900
|
||||
2012-01-10 14:27:00,2285.22,2283.17,2285.22,2284.77,383288,309125100
|
||||
2012-01-10 14:28:00,2284.77,2283.89,2284.77,2284.06,335760,282705900
|
||||
2012-01-10 14:29:00,2284.06,2283.46,2285.21,2285.13,354016,303980500
|
||||
2012-01-10 14:30:00,2285.13,2284.4,2285.61,2285.22,396672,325107700
|
||||
2012-01-10 14:31:00,2285.22,2284.41,2286.21,2285.38,352328,277758000
|
||||
2012-01-10 14:32:00,2285.43,2284.02,2285.96,2284.57,371344,314409000
|
||||
2012-01-10 14:33:00,2284.57,2283.79,2284.87,2284.51,358136,307257300
|
||||
2012-01-10 14:34:00,2284.51,2281.5,2284.51,2282.35,392096,314826800
|
||||
2012-01-10 14:35:00,2282.35,2281.57,2283.8,2281.92,440736,361553900
|
||||
2012-01-10 14:36:00,2281.92,2280.81,2282.09,2281.64,430064,343613400
|
||||
2012-01-10 14:37:00,2281.64,2280.7,2281.99,2280.7,459544,361963500
|
||||
2012-01-10 14:38:00,2280.7,2279.08,2280.71,2279.55,363376,312918000
|
||||
2012-01-10 14:39:00,2279.55,2278.31,2279.69,2278.53,408152,338231300
|
||||
2012-01-10 14:40:00,2278.53,2277.68,2279.21,2278.76,402440,316997600
|
||||
2012-01-10 14:41:00,2278.76,2277.31,2278.85,2278.85,367840,292216800
|
||||
2012-01-10 14:42:00,2278.85,2278.03,2280.08,2279.89,416928,355180500
|
||||
2012-01-10 14:43:00,2279.89,2279.26,2280.46,2279.84,421472,369221600
|
||||
2012-01-10 14:44:00,2279.84,2279.15,2281.51,2280.21,427928,358055900
|
||||
2012-01-10 14:45:00,2280.21,2280.21,2282.81,2282.05,379136,324722700
|
||||
2012-01-10 14:46:00,2282.05,2281.54,2283.04,2283.04,456872,383746000
|
||||
2012-01-10 14:47:00,2283.04,2282.39,2283.39,2283.2,489928,377774100
|
||||
2012-01-10 14:48:00,2283.2,2282.2,2283.66,2282.88,486208,388137000
|
||||
2012-01-10 14:49:00,2282.88,2282.88,2284.09,2283.19,428968,338772000
|
||||
2012-01-10 14:50:00,2283.19,2283.01,2283.91,2283.85,494096,400465900
|
||||
2012-01-10 14:51:00,2283.85,2283.64,2284.72,2283.81,477776,395075600
|
||||
2012-01-10 14:52:00,2284.94,2283.98,2284.94,2283.98,554688,481140700
|
||||
2012-01-10 14:53:00,2283.85,2283.85,2285.03,2284.2,865600,1240121000
|
||||
2012-01-10 14:54:00,2284.2,2284.17,2285.24,2285.24,581200,521732100
|
||||
2012-01-10 14:55:00,2285.24,2284.29,2285.24,2284.86,568136,513343500
|
||||
2012-01-10 14:56:00,2284.86,2284.56,2286.16,2284.83,675792,592642000
|
||||
2012-01-10 14:57:00,2284.83,2284.66,2285.52,2285.07,637832,547209200
|
||||
2012-01-10 14:58:00,2285.07,2284.18,2285.57,2285.25,678856,573964300
|
||||
2012-01-10 14:59:00,2285.41,2284.21,2286.08,2285.39,922784,758865900
|
||||
2012-01-10 15:00:00,2285.39,2284.47,2286.31,2285.74,1092104,932519900
|
|
Loading…
Reference in New Issue
Block a user