導航:首頁 > 炒股攻略 > 炒股軟體是怎麼獲取股票數據的

炒股軟體是怎麼獲取股票數據的

發布時間:2020-12-27 01:21:27

㈠ 如何編程從免費股票軟體中提取實時數據

自己寫程序的話,一種方法是從已提供的信息源,例如webservice獲取數據。還有種辦法就是去連接提供即時信息的網頁硬解析。

代碼舉例如下:

Created on Thu Jul 23 09:17:27 2015
@author: jet
"""
DAY_PRICE_COLS = ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20', 'turnover']
DAY_PRICE_URL = '%sapi.finance.%s/%s/?code=%s&type=last'
INDEX_KEY = ['SH', 'SZ', 'HS300', 'SZ50', 'GEB', 'SMEB']
INDEX_LIST = {'SH': 'sh000001', 'SZ': 'sz399001', 'HS300': 'sz399300',
'SZ50': 'sh000016', 'GEB': 'sz399006', 'SMEB': 'sz399005'}
INDEX_DAY_PRICE_COLS= ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20']
K_TYPE_KEY = ['D', 'W', 'M']
K_TYPE_MIN_KEY = ['5', '15', '30', '60']
K_TYPE = {'D': 'akdaily', 'W': 'akweekly', 'M': 'akmonthly'}
MIN_PRICE_URL = '%sapi.finance.%s/akmin?scode=%s&type=%s'
PAGE_TYPE = {'http': 'http://', 'ftp': 'ftp://'}
PAGE_DOMAIN = {'sina': 'sina.com.cn', 'ifeng': 'ifeng.com'}
URL_ERROR_MSG = '獲取失敗,請檢查網路狀態,或者API埠URL已經不匹配!'

get_hist_data.py
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 23 09:15:40 2015
@author: jet
"""
import const as ct
import pandas as pd
import json
from urllib2 import urlopen,Request

def get_hist_data(code = None, start = None, end = None, ktype = 'D'):
"""
功能:
獲取個股歷史交易數據
--------
輸入:
--------
code:string
股票代碼 比如:601989
start:string
開始日期 格式:YYYY-MM-DD 為空時取到API所提供的最早日期數據
end:string
結束日期 格式:YYYY-MM-DD 為空時取到最近一個交易日數據
ktype:string(default=D, 函數內部自動統一為大寫)
數據類型 D=日K線,W=周K線,M=月K線,5=5分鍾,15=15分鍾
30=30分鍾,60=60分鍾
輸出:
--------
DataFrame
date 日期
open 開盤價
high 最高價
close 收盤價
low 最低價
chg 漲跌額
p_chg 漲跌幅
ma5 5日均價
ma10 10日均價
ma20 20日均價
vma5 5日均量
vma10 10日均量
vma20 20日均量
turnover換手率(指數無此項)
"""
code = code_to_APIcode(code.upper())
ktype = ktype.upper()

url = ''
url = get_url(ktype, code)
print(url)

js = json.loads(ping_API(url))
cols = []

if len(js['record'][0]) == 14:
cols = ct.INDEX_DAY_PRICE_COLS
else:
cols = ct.DAY_PRICE_COLS
df = pd.DataFrame(js['record'], columns=cols)

if ktype in ct.K_TYPE_KEY:
df = df.applymap(lambda x:x.replace(u',', u''))
for col in cols[1:]:
df[col]=df[col].astype(float)
if start is not None:
df = df [df.date >= start]
if end is not None:
df = df[df.date <= end]
df = df.set_index('date')
return df

def code_to_APIcode(code):
"""
功能:
驗證輸入的股票代碼是否正確,若正確則返回API對應使用的股票代碼
"""
print(code)
if code in ct.INDEX_KEY:
return ct.INDEX_LIST[code]
else:
if len(code) != 6:
raise IOError('code input error!')
else:
return 'sh%s'%code if code[:1] in ['5', '6'] else 'sz%s'%code

def get_url(ktype, code):
"""
功能:
驗證輸入的K線類型是否正確,若正確則返回url
"""
if ktype in ct.K_TYPE_KEY:
url = ct.DAY_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
ct.K_TYPE[ktype], code)
return url
elif ktype in ct.K_TYPE_MIN_KEY:
url = ct.MIN_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
code, ktype)
return url
else:
raise IOError('ktype input error!')

def ping_API(url):
"""
功能:
向API發送數據請求,若鏈接正常返回數據
"""
text = ''
try:
req = Request(url)
text = urlopen(req,timeout=10).read()
if len(text) < 15:
raise IOError('no data!')
except Exception as e:
print(e)
else:
return text

#測試入口
print(get_hist_data('601989','2015-07-11','2015-07-22'))

㈡ 開發炒股軟體,從哪裡獲得股票數據

目前市場上有很多股票行情交易軟體,各種軟體提供了豐富的分析和展示功能,而且基本上是免費的。但這些數據都是在線的、無法統一地下載到本地進行分析,於是上網找了些資料,有的是將程序到新浪搜狐的財經頻道或其他財經類網站抓取並分析網頁,這種方法操作性不強而且准確率較低,遇到廣告或網頁變動時風險較大。於是找到了Sina股票數據介面,這個介面是通過在IE端輸入"http://hq.sinajs.cn/list="+相應股票代碼網站返回一個文件形式的數據,也可以通過JS獲取該文件中的變數得到想要的數據字元串。
以大秦鐵路(股票代碼:601006)為例,如果要獲取它的最新行情,只需訪問新浪的股票數據介面:http://hq.sinajs.cn/list=sh601006這個url會返回一串文本,例如:
var hq_str_sh601006="大秦鐵路, 27.55, 27.25, 26.91, 27.55, 26.20, 26.91, 26.92,
22114263, 589824680, 4695, 26.91, 57590, 26.90, 14700, 26.89, 14300,
26.88, 15100, 26.87, 3100, 26.92, 8900, 26.93, 14230, 26.94, 25150, 26.95, 15220, 26.96, 2008-01-11, 15:05:32";
這個字元串由許多數據拼接在一起,不同含義的數據用逗號隔開了,按照程序員的思路,順序號從0開始。
0:」大秦鐵路」,股票名字;
1:」27.55″,今日開盤價;
2:」27.25″,昨日收盤價;
3:」26.91″,當前價格;
4:」27.55″,今日最高價;
5:」26.20″,今日最低價;
6:」26.91″,競買價,即「買一」報價;
7:」26.92″,競賣價,即「賣一」報價;
8:」22114263″,成交的股票數,由於股票交易以一百股為基本單位,所以在使用時,通常把該值除以一百;
9:」589824680″,成交金額,單位為「元」,為了一目瞭然,通常以「萬元」為成交金額的單位,所以通常把該值除以一萬;
10:」4695″,「買一」申請4695股,即47手;
11:」26.91″,「買一」報價;
12:」57590″,「買二」
13:」26.90″,「買二」
14:」14700″,「買三」
15:」26.89″,「買三」
16:」14300″,「買四」
17:」26.88″,「買四」
18:」15100″,「買五」
19:」26.87″,「買五」
20:」3100″,「賣一」申報3100股,即31手;
21:」26.92″,「賣一」報價
(22, 23), (24, 25), (26,27), (28, 29)分別為「賣二」至「賣四的情況」
30:」2008-01-11″,日期;
31:」15:05:32″,時間;
相應地,也可以獲得深市相關股票信息,但是這種方法的弊病是只能獲得最新的或者是當天的股票數據,無法將歷史數據導入到資料庫,當然,你也可以以某一天為起始點自己重新創造歷史數據。所以繼續尋找其他網站介面,終於找到了雅虎財經網站,它提供的介面可以直接把股票歷史數據導成Excel,真實太方便了!直接在瀏覽器地址中數據網址即可http://table.finance.yahoo.com/table.csv?s=股票代碼,但是如果手動輸入再逐一下載保存簡直是太麻煩了,光上證股票就800多個,估計剛手動下載完就又開盤了還得重新下載。所以我的思路是,1、利用多線程方法下載股票文件。2、將這些文件統一導入資料庫。
1.1文件下載類:
import java.io.*;
import java.net.*;
import java.util.List;
import fatowen.stocksystem.sysconfig.data.DownLoadVO;
public class HttpDownFile {
private static int BUFFER_SIZE = 8096;
/**根據URL下載文件並保存
* @param destUrl String
* @param fileName String
* @throws Exception
*/
public void saveToFile(String destUrl, String fileName) throws IOException {

FileOutputStream fos = null;
BufferedInputStream bis = null;
HttpURLConnection httpUrl = null;
URL url = null;
byte[] buf = new byte[BUFFER_SIZE];
int size = 0;

url = new URL(destUrl);
httpUrl = (HttpURLConnection) url.openConnection();
httpUrl.connect();
bis = new BufferedInputStream(httpUrl.getInputStream());
fos = new FileOutputStream(fileName);
while ((size = bis.read(buf)) != -1)
fos.write(buf, 0, size);
fos.close();
bis.close();
httpUrl.disconnect();
}
}
1.2多線程實現下載類:
import java.util.ArrayList;
import java.util.List;
public class HisDataAddThread extends Thread {
boolean runFlag = true;
List myParamList = null;
String downLoadData ="";
String baseUrl = "http://table.finance.yahoo.com/table.csv?s=";
String result = "";
String savePath = "";

public HisDataAddThread(List paramList,String savePath){
this.myParamList = paramList;
this.savePath = savePath;
}

public void run() {

while(runFlag){
downLoadData = PublicDataUtil.getDownLoadData(myParamList);
if(!Lib.isEmpty(downLoadData)){
HttpDownFile oInstance = new HttpDownFile();
try {
oInstance.saveToFile(baseUrl + downLoadData, savePath + downLoadData + ".csv");
}catch (Exception err) {
System.out.println(err.toString());
}
}else{
runFlag = false;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public List getFailureList() {
return failureList;
}
public void setFailureList(List failureList) {
this.failureList = failureList;
}
public List getSuccessList() {
return successList;
}
public void setSuccessList(List successList) {
this.successList = successList;
}
}
2.將下載完的文件統一保存到資料庫工具類
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class CSVUtitl {
private BufferedReader bufferedreader = null;
private List list = new ArrayList();

public CSVUtitl(){
}
public CSVUtitl(String filename) throws IOException{
bufferedreader = new BufferedReader(new FileReader(filename));
String stemp;
while((stemp = bufferedreader.readLine()) != null){
list.add(stemp);
}
}
public List getList() throws IOException {
return list;
}
// 得到csv文件的行數
public int getRowNum(){
return list.size();
}
//得到csv文件的列數
public int getColNum(){
if(!list.toString().equals("[]")) {

//csv文件中,每列之間的是用','來分隔的
if(list.get(0).toString().contains(",")) {
return list.get(0).toString().split(",").length;
}else if(list.get(0).toString().trim().length() != 0) {
return 1;
}else{
return 0;
}
}else{
return 0;
}
}

//取得指定行的值
public String getRow(int index) {
if (this.list.size() != 0)
return (String) list.get(index);
else
return null;
}
//取得指定列的值
public String getCol(int index){
if (this.getColNum() == 0){
return null;
}

StringBuffer scol = new StringBuffer();
String temp = null;
int colnum = this.getColNum();

if (colnum > 1){
for (Iterator it = list.iterator(); it.hasNext();) {
temp = it.next().toString();
scol = scol.append(temp.split(",")[index] + ",");
}
}else{
for (Iterator it = list.iterator(); it.hasNext();) {
temp = it.next().toString();
scol = scol.append(temp + ",");
}
}
String str=new String(scol.toString());
str = str.substring(0, str.length() - 1);
return str;
}
//取得指定行,指定列的值
public String getString(int row, int col) {
String temp = null;
int colnum = this.getColNum();
if(colnum > 1){
temp = list.get(row).toString().split(",")[col];
}else if(colnum == 1) {
temp = list.get(row).toString();
}else{
temp = null;
}
return temp;
}

public void CsvClose() throws IOException {
this.bufferedreader.close();
}
public void run(String filename) throws IOException {

CSVUtitl cu = new CSVUtitl(filename);
for(int i=0;i<cu.getRowNum();i++){
String SSCCTag = formatData(cu.getString(i,1));//得到第i行.第一列的數據.
String SiteName = formatData(cu.getString(i,2));//得到第i行.第二列的數據.
String StationId= formatData(cu.getString(i,3));

//將數據保存到資料庫中
... ...
... ...
... ...
}
cu.CsvClose();
}
public String formatData(String baseData){

String result = null;
if(!"".equals(baseData) && baseData != null){
if(baseData.length() > 1){
result = baseData.substring(1,baseData.length());
result = result.substring(0, result.length()-1);
}else{
result = baseData;
}
}else{
result = "";
}
return result.trim();
}

public static void main(String[] args) throws IOException {
CSVUtitl test = new CSVUtitl();
try{
File path = new File("e:\\data");
File[] f = path.listFiles();
List l = new ArrayList();
for(int i=0;i<f.length;i++){
if(f[i].getName().endsWith(".csv"))
l.add(f[i]); www.2cto.com
}
Iterator it = l.iterator();
while(it.hasNext()){
File ff = (File)it.next();
test.run(path.toString()+File.separator+ff.getName());
}
}catch (Exception e){

}
}
}

㈢ 股票行情軟體的數據從哪裡得來的

打開行抄情軟體,點擊主襲頁最左上角的【系統】/【數據導出】,如下圖所示

在彈出的對話框選擇【Excel】/【報表中所有數據】,再選擇瀏覽,設置好存貯路徑,方便查找使用。

設置好路徑後選擇確定,如下圖所示。

設置好存貯路徑,最終點擊確定,生成電子表格。

打開電子表格,如下圖所示,方便我們進行研究。

㈣ 請問怎麼把歷史數據導入到股票軟體里去

你這個是要編程進去的啊,不然你這樣交易怎麼可能導入進去的啊!

㈤ 如何調用股票軟體裡面的歷史數據

股票歷史數據查詢有個很不錯的網頁工具可以推薦,地址是http://tool.cnfunny.cn/#/打開就可以直接使專用,還可以大批屬量下載,方便省事。

㈥ 股票軟體怎麼使用看到一隻股票的全部歷史數據

不用下載軟體,股票歷史數據查詢有個很不錯的網頁工具可以推薦,專地址是http://tool.cnfunny.cn/#/打開就可以屬直接使用,還可以大批量下載,操作簡單,方便省事。

㈦ 如何從股票軟體提前月線數據,開盤收盤價等

你好,以同花順為例,查看股票以前的數據方式:
1、打開股票k線圖能看到半回年之內的k線變動情況,用滑鼠左鍵答點擊開線圖就會出現由一條橫線和一條豎線相互交叉的十字線,橫線坐標表示當前的價格,豎線坐標表示日期。當出現十字線時k線圖左邊的位置會出現當日股票的成交情況。
2、用鍵盤上方向鍵中的左右鍵可以改變十字坐標的位置,也就是改變想查股票的日期。上下鍵可以縮放整個k線圖以便於查看整個k線的走勢。另外ctrl鍵+左右鍵可以快速拉動十字線,以便快速差找股票的歷史數據。

㈧ 怎麼獲取股票實時數據呢開發炒股軟體用

我可以幫你直接對接港交所的實時數據,需要拉專線連接

㈨ 怎樣看懂炒股軟體里的數據

怎樣抄看懂炒股軟體里襲的數據?
大多數投資者似乎對出售股票更加猶豫不決。這在一定程度上是可以理解的,因為人們可能已經變得情感上依附於它,或者可能不太願意接受他們做出了糟糕的投資決策。我去艾倫漢確實有失檢點,

㈩ 如何通過軟體抓取新浪財經里單只股票數據

如果你是准備抓歷史數據,那還不如直接使用免費的wdz程序,滬深1990年至今的全部日線歷史;2000年至今十幾年的5分鍾數據都可以直接輸出,而且可轉化為各種格式。根本不用去新浪中抓取。

閱讀全文

與炒股軟體是怎麼獲取股票數據的相關的資料

熱點內容
中國銀行貨幣收藏理財上下班時間 瀏覽:442
中國醫葯衛生事業發展基金會公司 瀏覽:520
公司分紅股票會漲嗎 瀏覽:778
基金定投的定投規模品種 瀏覽:950
跨地經營的金融公司管理制度 瀏覽:343
民生銀行理財產品屬於基金嗎 瀏覽:671
開間金融公司 瀏覽:482
基金從業資格科目一的章節 瀏覽:207
貨幣基金可以每日查看收益率 瀏覽:590
投資幾個基金合適 瀏覽:909
東莞市社會保險基金管理局地址 瀏覽:273
亞洲指數基金 瀏覽:80
金融公司貸款倒閉了怎麼辦 瀏覽:349
金融服務人員存在的問題 瀏覽:303
怎樣開展普惠金融服務 瀏覽:123
今天雞蛋期貨交易價格 瀏覽:751
汕頭本地證券 瀏覽:263
利市派股票代碼 瀏覽:104
科創板基金一周年收益 瀏覽:737
2016年指數型基金 瀏覽:119