python實時獲取股票交易數據
『壹』 怎樣用 Python 寫一個股票自動交易的程序
概率炒股法:
下面方法買漲不買跌,同時避免被套,缺點,手續費比較高,但完全可以吃完整個牛市,熊市不會被套。
用python獲取股票價格,如tushare,如果發現股票當天漲幅在大盤之上(2點30到2點50判斷),買入持有一天,下跌當天就別買,你可以用概率論方法,根據資金同時持有5支,10支或20支,這樣不怕停盤影響,理論上可以跑贏大盤。好處:避免人為沖動,缺點手續費高
還有一種是操作etf,如大盤50etf,etf300,中小板etf,創業板etf,當天2.30分判斷那個etf上漲就買入那支,買入漲幅最大的,不上漲什麼都不買,持有一天,第二天上午判斷一下,如果下跌超過2%賣掉。好處:不會踩地雷,缺點:漲隨大盤,我比較推薦這個方法,外圍的風險比較小。
具體的python程序我有,比上面復雜,有止贏止損位,資金管理,監視管理,我用在實盤當中,自動化下單也已解決。
我覺得程序的成敗不在一日之功,在於長期穩定賺錢,如運行十年,過多的數據分析也無意義,因為預測未來永遠是一個概率問題,不是百分之百確定的,如果你的程序能在長時間多次數上戰勝市場,你的程序就能趨向大數定理。
否則一時的回撤會讓你停止程序自動執行,而無法趨向大數定理中的穩定概率。
如果有一個程序能百分之99確定,那麼基本上肯定是分析了內幕交易數據,和徐x一樣,每次重倉一支股,這種手法應該是得到了內幕,也就不需要什麼程序來交易了。
巴菲特的交易模式實質上也是內幕交易的一種,因為他靠的是外在分析,實地考查,估計這是尋找內幕的手段,現在做大了,這種效果就不靈了,收益也下降了,美國經濟也下滑了,所以巴菲特的未來是必定是暗淡的,因為內幕交易的池子有限,資金量大了不好操作。
想想如果巴菲特生在蘇聯,印度,日本等等其他國家,他可能在街頭要飯,美國二戰後經濟環境加傾向內幕造就了他,而不是炒股技術有多神。所以巴菲特不屑於程序化交易。
巴菲特及不少美國式的股神實際上是倖存者偏差造成的,你想想蘇聯的股神在那裡?為什麼一個都沒有?(「沉默的數據」、「死人不會說話」)
我覺得未來真正能成股神必定是程序,不是人,因為一個好的程序策略可以用一輩子,實現長期穩定增長,當然前提是社會經濟環境穩定,不會出現類似蘇聯的動亂,也不會出現日本式的惡性通脹(對貨幣m2有點擔心)。
太多的股票讓股民每天沉浸在選股的游戲中,選股造就了券商的行情軟體,實際上很多數據都是沒有用的,所有的關鍵是按操作方法永遠執行下去才能趨向穩定概率,否則今天換一種明天換一種方法,今天按kdj,明天按macd,後天按boll,大後天按ddx,大大後天按自編指標,多條件選股,最後錢都交手續費或止損不及時被套牢了。這時券商收傭金的目的也就達到了,每年券商收的傭金比股市分紅要高。不管行情如何,只要多請幾個股評員,總有方向說對的,玩個概率游戲讓大家頻繁交易,券商的收入只會增不會降。所以千萬別信股評,玩的是概率游戲,如同預測硬幣的正反,請十個股評師必定有個能預測三次正確的神股評。你信這個神股評,後面可能是三次都不準,呵呵。所以券商和行情軟體總會在收盤或午休時彈出各種消息或評價,說實在的這種東西沒有一分錢的價值。可能早就寫好了上漲的說法是模塊a,下跌的說法是模板b,平市的說法是模板c,只是填上當天數據即可,都是八股文,都是馬後炮,一樣的事件上午說成是上漲理由,下午說成是下跌理由。
程序的策略經過測試後的關鍵在於穩定執行,長期穩定執行,長期長期穩定穩定執行執行,重要的事說三遍。
人性無法戰勝的弱點是執行力,小學生都懂的天天向上,每日進步,世間有幾人能做到?而穩定幾十年執行更是難上加難,如同背英語單詞一樣,理論上一天背一百個,一百天就可以一萬詞,但十年,二十年過去了,你可能還是三千詞以下。
用程序的目的就是百分之百執行到位,沒有折扣,真正戰勝人性的弱點,和t+1沒有關系。
另外通過一定方法降低手續費也可以使你的資金活得更久,如把上面的日模型改為周或月模型。
『貳』 如何在yahoo-finance這個Python包中獲取上證的交易數據
yahoo-finance是美股的,國內有另外一個庫,叫tushare
使用前提
安裝Python
安裝pandas
lxml也是必須的,正常情況下安裝了Anaconda後無須單獨安裝,如果沒有可執行:pip install lxml
『叄』 想要開發一個股票交易軟體 需要怎樣獲取實時數據 數據介面
惠德贏策 大家記住了啊,這個垃圾公司老闆叫:祝清。公司內部垃圾就算了,公司出的產品都是騙人的,還有他們開發的一個模擬炒股的網站要交錢才能炒股,都是騙人的,大家千萬別上當受騙,這家公司老闆超級卑鄙,合夥別人把他原來的公司給搞垮自己開公司,不過心在自己公司也快倒閉了,員工工資都發布出來了,哈哈,真雞-巴爽呀,那個B兒子真沒話說了。
我就是受害者呀,噴血相告,切記呀
『肆』 Python 如何爬股票數據
現在都不用爬數據拉,很多量化平台能提供數據介面的服務。像比如基礎金融數據,包括滬深A股行情數據,上市公司財務數據,場內基金數據,指數數據,期貨數據以及宏觀經濟數據;或者Alpha特色因子,技術分析指標因子,股票tick數據以及網路因子數據這些數據都可以在JQData這種數據服務中找到的。
有的供應商還能提供level2的行情數據,不過這種比較貴,幾萬塊一年吧
『伍』 如何用python抓取股票數據
很多伺服器通過瀏覽器發給它的報頭來確認是否是人類用戶,所以我們可以通過模仿瀏覽器的行為構造請求報頭給伺服器發送請求。伺服器會識別其中的一些參數來識別你是否是人類用戶,很多網站都會識別User-Agent這個參數,所以請求頭最好帶上。
有一些警覺性比較高的網站可能還會通過其他參數識別,比如通過Accept-Language來辨別你是否是人類用戶,一些有防盜鏈功能的網站還得帶上referer這個參數等等。
『陸』 如何獲取實時的股票數據
要跟供應商協商得到他的介面才能得到實時股票行情數據;
股票實時行情,可以通過兩個方法來進行查看:
第一種,在網路搜索頁面直接輸入股票代碼,如:000717,網路輸入後,即可在搜索結果中看到,其中分時,就是該股票在當天的實時走向。
第二種,通過炒股軟體,如東財,同花順等,在開啟後,直接輸入,股票代碼,如600854,點擊回車。進入的第一個頁面就是該股票在當天的實時行情。
同時在股票軟體的分時成交界面,可以查看到每一分鍾的成交價和手數。股票行情趨勢判斷必要時也需要結合分時成交界面的數據來進行判斷。
查看其它股票的行情也是一樣的道理,直接鍵入該股票的代碼就可以查看到該股票當天或某個時間段內的行情。當然,精準的行情走勢、趨勢,是需要結合多種指標來共同進行分析的。
『柒』 怎樣用 Python 寫一個股票自動交易的程序
方法一
前期的數據抓取和分析可能python都寫好了,所以差這交易指令介面最後一步。對於股票的散戶,正規的法子是華寶,國信,興業這樣願意給介面的券商,但貌似開戶費很高才給這權利,而且只有lts,ctp這樣的c++介面,沒python版就需要你自己封裝。
方法二
是wind這樣的軟體也有直接的介面,支持部分券商,但也貴,幾萬一年是要的。
方法三
滑鼠鍵盤模擬法,很復雜的,就是模擬鍵盤滑鼠去操作一些軟體,比如券商版交易軟體和大智慧之類的。
方法四
就是找到這些軟體的關於交易指令的底層代碼並更改,不過T+1的規則下,預測准確率的重要性高於交易的及時性,花功夫做數據分析就好,交易就人工完成吧
『捌』 如何編程從免費股票軟體中提取實時數據
自己寫程序的話,一種方法是從已提供的信息源,例如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'))
『玖』 如何用python 取所有股票一段時間歷史數據
各種股票軟體,例如通達信、同花順、大智慧,都可以實時查看股票價格和走勢,做一些簡單的選股和定量分析,但是如果你想做更復雜的分析,例如回歸分析、關聯分析等就有點捉襟見肘,所以最好能夠獲取股票歷史及實時數據並存儲到資料庫,然後再通過其他工具,例如SPSS、SAS、EXCEL或者其他高級編程語言連接資料庫獲取股票數據進行定量分析,這樣就能實現更多目的了。
『拾』 如何用python獲取股票數據
在Python的QSTK中,是通過s_datapath變數,定義相應股票數據所在的文件夾。一般可以通過QSDATA這個環境變數來設置對應的數據文件夾。具體的股票數據來源,例如滬深、港股等市場,你可以使用免費的WDZ程序輸出相應日線、5分鍾數據到s_datapath變數所指定的文件夾中。然後可使用Python的QSTK中,qstkutil.DataAccess進行數據訪問。