Esempio n. 1
0
bool tcMarket::AppendStock(QWidget *pParent, tcStockInfo &pStockInfo)
{
	tcStockManager *stockmanager = tcObjService::GetStockManager();
	tcStock *stock = stockmanager->AppendStock(pParent);
	if (stock == NULL) {
		return false;
	}
	tcStockInfo stockinfo(stock->GetStockCode());
	mStockInfoList.append(stockinfo);
	pStockInfo = stockinfo;
	emit OnStocksModified();
	return true;
}
Esempio n. 2
0
bool tcMarket::AppendStock(const QString &pStockCode, const QString &pStockName, tcStockInfo &pStockInfo)
{
	tcStockManager *stockmanager = tcObjService::GetStockManager();
	tcStock *stock = stockmanager->AppendStock(pStockCode, pStockName);
	if (stock == NULL) {
		tcLogService::CreateLog(this, "Error when append stock to stock manager.");
		return false;
	}
	tcStockInfo stockinfo(stock->GetStockCode());
	mStockInfoList.append(stockinfo);
	pStockInfo = stockinfo;
	emit OnStocksModified();
	return true;
}
Esempio n. 3
0
void tcStockInfoDialog::DoOk()
{
	if (mAppendMode) {
		if (edt1->text().length() == 0) {
			QMessageBox::warning(this, SYSTEM_NAME, tr("Must input the stock code."));
			edt1->setFocus();
			return;
		}
		tcStockInfo stockinfo(edt1->text());
		if (stockinfo.IsAvailable()) {
			QMessageBox::warning(this, SYSTEM_NAME, tr("The stock with a same stock code already exists, change another stock code please."));
			edt1->setFocus();
			return;
		}
	}
	if (edt2->text().length() == 0) {
		QMessageBox::warning(this, SYSTEM_NAME, tr("Must input the stock name."));
		edt2->setFocus();
		return;
	}

	accept();
}
Esempio n. 4
0
void tcSinaWebImportSource::ProcessForOneStock(const QString &pText)
{
	/* process the text like this:
		<td class=td04 height=23>!!<a href="http://finance.sina.com.cn/realstock/sh600004.html" target=_blank>600004</a></td>
		<td class=td06>XXXXXX</td>
		<td class=td06>12.26</td>
		<td class=td06>12.110</td>
		<td class=td06>11.780</td>
		<td class=td06>12.330</td>
		<td class=td06>11.610</td>
		<td class=td06><font color=#ff0020>0.15(1.24%)</font></td>
		<td class=td06>5274438</td>
		<td class=td06>63744700</td>
		<td class=td06> 2007-03-19</td>
		<td class=td05> 14:44:37</td>
	*/
	QRegExp rx("<.+>([^<>]+)</.+>");
	rx.setMinimal(true);
	int pos = 0;
	int itemindex = 0;
	QString stockcode, stockname, currentprice, closeprice, openprice, maxprice, minprice, quantity, totalprice, datestr, timestr;
	while ((pos = rx.indexIn(pText, pos)) != -1) {
		switch (itemindex) {
		case 0:	//stock code
			stockcode = rx.cap(1);
			break;
		case 1:	//stock name
			stockname = rx.cap(1);
			break;
		case 2:	//current price
			currentprice = rx.cap(1);
			break;
		case 3:	//close price (yesterday)
			closeprice = rx.cap(1);
			break;
		case 4:	//open price
			openprice = rx.cap(1);
			break;
		case 5:	//max price
			maxprice = rx.cap(1);
			break;
		case 6:	//min price
			minprice = rx.cap(1);
			break;
		case 7:	//up/down rate
			break;
		case 8:	//quantity
			quantity = rx.cap(1);
			break;
		case 9:	//total price
			totalprice = rx.cap(1);
			break;
		case 10:	//date
			datestr = rx.cap(1);
			break;
		case 11:	//time
			timestr = rx.cap(1);
			break;
		default:
			break;
		}
		pos += rx.matchedLength();
		itemindex++;
	}

	emit OnAppendMessage(tr("Processing stock %1 ...").arg(stockcode), true);

	if (itemindex <12) {
		emit OnAppendMessage(tr("Error when extract data of stock."), false);
		return;
	}

	//get the stock object
	tcStockInfo stockinfo(stockcode);
	if (! stockinfo.IsAvailable()) {
		emit OnAppendMessage(tr("The stock not exists."), false);
		return;
	}

	//set the data of yesterday
	QDate date = QDate::fromString(datestr.right(10), "yyyy-MM-dd");
	date = date.addDays(-1);
	if (date.dayOfWeek() == 6) {
		date = date.addDays(-1);
	}
	else if (date.dayOfWeek() == 7) {
		date = date.addDays(-2);
	}

	tcStockDailyData dailydata;
	if (! stockinfo->ReadData(date, &dailydata)) {
		emit OnAppendMessage(tr("Error when get daily data of stock."), false);
		return;
	}
	dailydata.ClosePrice = long(closeprice.toFloat() * 100);
	if (! stockinfo->WriteData(date, &dailydata)) {
		emit OnAppendMessage(tr("Error when set daily data of stock."), false);
		return;
	}

	//set the data of today
	date = QDate::fromString(datestr.right(10), "yyyy-MM-dd");
	if (! stockinfo->ReadData(date, &dailydata)) {
		emit OnAppendMessage(tr("Error when get daily data of stock."), false);
		return;
	}
	dailydata.OpenPrice = long(openprice.toFloat() * 100);
	dailydata.ClosePrice = long(currentprice.toFloat() * 100);
	dailydata.MaxPrice = long(maxprice.toFloat() * 100);
	dailydata.MinPrice = long(minprice.toFloat() * 100);
	dailydata.TotalPrice = totalprice.toLong() / 100;
	dailydata.Quantity = quantity.toLong() / 100;
	if (! stockinfo->WriteData(date, &dailydata)) {
		emit OnAppendMessage(tr("Error when set daily data of stock."), false);
		return;
	}
}