之前的两篇文章介绍了如何获取股票代码,如何用股票代码获取股票数据,有了股票数据我们就可以做一些简单的分析了。本篇介绍比较简单的一种技术:金针探底。关于金针探底的详细介绍可以网上去找,大致意思就是股票在下跌过程中突然出现了一根长下影线,可能预示行情即将出现拐点。分时交易图上的表现就是盘中股价被砸的很低,收盘又拉起来了。分析的第一步就是先获取有长下影线的股票。获取的算法也很简单,这里采用的方法是如果收阳线,公式为(开盘-最低)/开盘>探底系数阈值,如果收阴线,公式为(收盘-最低)/收盘>探底系数阈值。探底系数反映下影线的长度,这个阈值可以自行设定,值越大,下影线越长,筛选出来的股票越少。举个例子,10元的股票平开,盘中跌停到9元,收盘拉回到10元,探底系数为(10-9)/10=0.1。直接上计算代码吧:
void stockDialog::on_goldLow_clicked()
{
ui->tableWidget->clear();
ui->refreshStatus->setText("正在查询...");
QSqlQuery query;
bool ret;
QString str = "";
QString stockTmp;
QString tableName;
QStringList result;
float close,open,low;
for(int i=0;i<stockNumList.size();i++){
stockTmp = stockNumList.at(i);
QString s = QString::number(i, 10)+"/"+QString::number(stockNumList.size(), 10)+":"+stockTmp;
ui->refreshStatus->setText(s);
qDebug()<<i<<"/"<<stockNumList.size()<<":"<<stockTmp;
tableName = getTableName(stockTmp);
str = QString("select low,open,close from %1 where stockId = %2 and date = %3").arg(tableName).arg(stockTmp).arg(ui->thisTime->text());
ret = query.exec(str);
if(ret){
while(query.next()){
low = query.value(0).toString().toFloat();
open = query.value(1).toString().toFloat();
close = query.value(2).toString().toFloat();
if(open>close){
if((close-low)/close > ui->goldScale->text().toFloat()){
result<<stockTmp;
}
}else{
if((open-low)/open > ui->goldScale->text().toFloat()){
result<<stockTmp;
}
}
}
}
}
ui->tableWidget->setRowCount(result.size());
for(int i=0;i<result.size();i++){
ui->tableWidget->setItem(i,0,new QTableWidgetItem(result.at(i)));
}
ui->refreshStatus->setText("查询结束");
}
程序中thisTime传入的是时间,goldScale传入的是探底系数阈值,这样我们就可以把该天下影线比例大于某个值的所有股票都找出来了。
如有问题可关注以下公众号并留言:阿兴啊,更多内容将在公众号发布,我们一起探讨学习。