① 如何通過雪球查詢股票之前的變動狀況
一. 雪球公司介紹
雪球 聰明的投資者都在這里。
web 1.0:新聞資訊,股價信息,K線圖
web 2.0:SNS 訂閱,分享,聊天
web 3.0:移動 APP,交易閉環
雪球現在員工數還不到100,其中技術人員佔一半。去年9月C輪融資4kw刀。我們現在的技術棧由下列組件組成:Java,Scala,Akka,Finagle,Nodejs,Docker ,Hadoop。我們當前是租用IDC機房自建私有雲,正在往「公私混合雲」方向發展。
在雪球上,用戶可以獲取滬深港美2w+股票的新聞信息,股價變化情況,也可以獲取債券,期貨,基金,比特幣,信託,理財,私募等等理財產品的各類信息,也可以關注雪球用戶建立的百萬組合,訂閱它們的實時調倉信息,還可以關注雪球大V。雪球當前有百萬日活躍用戶,每天有4億的API調用。App Store 財務免費榜第 18 名。歷史上曾排到財務第二,總免費榜第 19。
二. 雪球當前總體架構
作為一個典型的移動互聯網創業公司,雪球的總體架構也是非常典型的設計:
最上層是三個端:web端,android端和iOS端。流量比例大約為 2:4:4 。web3.0 的交易功能,在 web 端並不提供。
接入層以及下面的幾個層,都在我們的自建機房內部。雪球當前只部署了一個機房,還屬於單機房時代。正在進行「私有雲+公有雲混合部署」方案推進過程中。
我們當前使用 nodejs 作為 web 端模板引擎。nodejs 模塊與android 和 ios 的 app 模塊一起屬於大前端團隊負責。
再往下是位於 nginx 後面的 api 模塊。跟 linkedin 的 leo 和微博的 v4 一樣,雪球也有一個遺留的大一統系統,名字就叫 snowball 。最初,所有的邏輯都在 snowball 中實現的。後來慢慢的拆出去了很多 rpc 服務,再後來慢慢的拆出去了一些 http api 做成了獨立業務,但即便如此,snowball 仍然是雪球系統中最大的一個部署單元。
在需要性能的地方,我們使用 netty 搭建了一些獨立的介面,比如 quoto server,是用來提供開盤期間每秒一次的股價查詢服務,單機 qps 5w+,這個一會再細說;而 IM 服務,起初設計里是用來提供聊天服務,而現在,它最大的用途是提供一個可靠的 push 通道,提供 5w/s 的消息下發容量,這個也一會再細說。
雪球的服務化拆分及治理採用 twitter 開源的 finagle rpc 框架,並在上面進行了一些二次開發和定製。定製的功能主要集中在 access log 增強,和 fail fast,fail over 策略及降級開關等。 finagle 的實現比較復雜,debug 和二次開發的門檻較高,團隊內部對此也進行了一些討論。
雪球的業務比較復雜,在服務層中,大致可以分為幾類:第一類是web1.0,2.0 及基礎服務,我們稱為社區,包括用戶,帖子,新聞,股價,搜索等等,類比對象就是新浪財經門戶+微博;第二類是組合及推薦,主要提供股票投資策略的展示和建議,類比對象是美國的motif;第三類是通道,類似股市中的「支付寶」,接入多家券商,提供瞬間開戶,一鍵下單等等各種方便操作的功能。
雪球的業務實現中,包含很多非同步計算邏輯,比如搜索建索引,比如股票漲跌停發通知,比如組合收益計算等等,為此,我們設計了一個獨立的 Thread/Task 模塊,方便管理所有的後台計算任務。但隨著這些 task 越來越多,邏輯差異越來越大,一個統一的模塊並不是總是最佳的方案,所以,我們又把它拆成了兩大類:流式的,和批量式的。
雪球的推薦體系包括組合推薦「買什麼」和個性化推薦。我們最近正在重新梳理我們的大數據體系,這個感興趣的話可以單聊。
最下面是基礎設施層。雪球基礎設施層包括:redis,mysql,mq,zk,hdfs,以及容器 docker。
線上服務之外,我們的開發及後台設施也很典型:gitlab開發,jenkins打包,zabbix 監控系統向 openfalcon 遷移,redimine向confluence遷移,jira,以及內部開發的 skiing 後台管理系統。
** 三. 雪球架構優化歷程**
首先描述一下標題中的「股市動盪」定語修飾詞吧:
上證指數從年初的3000點半年時間漲到了5000多,6月12號達到最高點5200點,然後就急轉直下,最大單日跌幅 8.48%,一路跌回4000點以下。最近一周都在3900多徘徊。
3月最後一周,A股開戶 166萬戶,超過歷史最高紀錄 2007年5月第二周165萬戶。
4月份,證監會宣布A股支持單用戶開設多賬戶。
6月底,證金公司代表國家隊入場救市。
7月份,證監會宣布嚴打場外配資。
中國好聲音廣告第一晚,帶來超過平時峰值200倍的注冊量
挑戰:小 VS 大:
小:小公司的體量,團隊小,機器規模小
大:堪比大公司的業務線數量,業務復雜度,瞬間峰值沖擊
雪球的業務線 = 1個新浪財經 + 1 個微博 + 1 個 motif + 1 個大智慧/同花順。由於基數小,API調用瞬間峰值大約為平時峰值的 30+ 倍。
挑戰:快速增長,移動互聯網 + 金融,風口,A股大盤劇烈波動。
首先,在app端,在我們核心業務從 web2.0 sns 向 3.0 移動交易閉環進化的過程中,我們開發了一個自己的 hybrid 框架:本地原生框架,加離線 h5 頁面,以此來支撐我們的快速業務迭代。當前,雪球前端可以做到 2 周一個版本,且同時並行推進 3 個版本:一個在 app store 等待審核上線,一個在內測或公測,一個在開發。我們的前端架構師孟祥宇在今年的 wot 上有一個關於這方面的詳細分享,有興趣的可以稍後再深入了解。
雪球App實踐—構建靈活、可靠的Hybrid框架 http://wot.51cto.com/2015mobile/ http://down.51cto.com/data/2080769
另外,為了保障服務的可用性,我們做了一系列的「端到端服務質量監控」。感興趣的可以搜索我今年4月份在環信SM meetup上做的分享《移動時代端到端的穩定性保障》。其中在 app 端,我們採用了一種代價最小的數據傳輸方案:對用戶的網路流量,電池等額外消耗幾乎為0
每個請求里帶上前一個請求的結果
succ or fail : 1 char
失敗原因:0 - 1 char
請求介面編號: 1 char
請求耗時:2 - 3 char
其它:網路制式,etc
炒股的人大多都會盯盤:即在開盤期間,開著一個web頁面或者app,實時的看股價的上下跳動。說到「實時」,美股港股當前都是流式的數據推送,但國內的A股,基本上都是每隔一段時間給出一份系統中所有股票現價的一個快照。這個時間間隔,理論上是3秒,實際上一般都在5秒左右。 交了錢簽了合同,雪球作為合作方就可以從交易所下屬的數據公司那裡拿到數據了,然後提供給自己的用戶使用。
剛才介紹總體架構圖的時候有提到 quote server ,說到這是需要性能的地方。
業務場景是這樣的,雪球上個人主頁,開盤期間,每秒輪詢一次當前用戶關注的股票價格變動情況。在內部,所有的組合收益計算,每隔一段時間需要獲取一下當前所有股票的實時價格。起初同時在線用戶不多,這個介面就是一個部署在 snowball 中的普通介面,股價信息被實時寫入 redis ,讀取的時候就從 redis 中讀。後來,A股大漲,snowball 抗不住了。於是我們就做了一個典型的優化:獨立 server + 本地內存存儲。開盤期間每次數據更新後,數據接收組件主動去更新 quote server 內存中的數據。 後續進一步優化方案是將這個介面以及相關的處理邏輯都遷移到公有雲上去。
對於那些不盯盤的人,最實用的功能就是股價提醒了。在雪球上,你除了可以關注用戶,還可以關注股票。如果你關注的某隻股票漲了或跌了,我們都可以非常及時的通知你。雪球上熱門股票擁有超過 50w 粉絲(招商銀行,蘇寧雲商)粉絲可以設置:當這支股票漲幅或跌幅超過 x%(默認7%)時提醒我。曾經連續3天,每天超過1000股跌停,證監會開了一個會,於是接下來2天超過1000股漲停
原來做法:
股票漲(跌)x%,掃一遍粉絲列表,過濾出所有符合條件的粉絲,推送消息
新做法:
預先建立索引,開盤期間載入內存
1%:uid1,uid2
2%:uid3,uid4,uid5
3%:uid6
問題:有時候嫌太及時了:頻繁跌停,打開跌停,再跌停,再打開。。。的時候
內部線上記錄:
4台機器。
單條消息延時 99% 小於 30秒。
下一步優化目標:99% 小於 10 秒
IM 系統最初的設計目標是為雪球上的用戶提供一個聊天的功能:
送達率第一
雪球IM:Netty + 自定義網路協議
Akka : 每個在線client一個actor
推模式:client 在線情況下使用推模式
多端同步:單賬號多端可登錄,並保持各種狀態同步
移動互聯網時代,除了微信qq以外的所有IM,都轉型成了推送通道,核心指標變成了瞬間峰值性能。原有架構很多地方都不太合適了。
優化:
分配更多資源:推送賬號actor池
精簡業務邏輯:重復消息只存id,實時提醒內容不推歷史設備,不更新非活躍設備的session列表等等
本地緩存:拉黑等無法精簡的業務邏輯遷移到本地緩存
優化代碼:非同步加密存儲,去除不合理的 akka 使用
akka這個解釋一下:akka 有一個自己的 log adapter,內部使用一個 actor 來處理所有的 log event stream 。當瞬間峰值到來的時候,這個 event stream 一下子就堵了上百萬條 log ,導致 gc 顛簸非常嚴重。最後的解決辦法是,繞過 akka 的 log adapter,直接使用 logback 的 appender
線上記錄:5w/s (主動限速)的推送持續 3 分鍾,p99 性能指標無明顯變化
7月10號我們在中國好聲音上做了3期廣告。在廣告播出之前,我們針對廣告可能帶來的對系統的沖擊進行了壓力測試,主要是新用戶注冊模塊,當時預估廣告播出期間2小時新注冊100萬
壓測發現 DB 成為瓶頸:
昵稱檢測 cache miss > 40%
昵稱禁用詞 where like 模糊查詢
手機號是否注冊 cache miss > 80%
注冊新用戶:5 insert
優化:
redis store:昵稱,手機號
本地存儲:昵稱禁用詞
業務流程優化:DB insert 操作同步改非同步
下一步優化計劃:
將 sns 系統中所有的上行操作都改成類似的非同步模式
介面調用時中只更新緩存,而且主動設置5分鍾過期,然後寫一個消息到 mq 隊列,隊列處理程序拿到消息再做其它耗時操作。
為了支持失敗重試,需要將主要的資源操作步驟都做成冪等。
前置模塊HA:
合作方合規要求:業務單元部署到合作方內網,用戶的敏感數據不允許離開進程內存
業務本身要求:業務單元本身為有狀態服務,業務單元高可用
解決方案:
使用 Hazelcast In-Memory Data Grid 的 replication map 在多個 jvm 實例之間做數據同步。
java 啟動參數加上 -XX:+DisableAttachMechanism -XX:-UsePerfData,禁止 jstack,jmap 等等 jdk 工具連接
關於前置模塊,其實還有很多很奇葩的故事,鑒於時間關系,這里就不展開講了。以後有機會可以當笑話給大家講。
組合凈值計算性能優化:
一支股票可能在超過20萬個組合里(南車北車中車,暴風科技)
離線計算,存儲計算後的結果
股價3秒變一次,涉及到這支股票的所有組合理論上也需要每 3 秒重新計算一次
大家可能會問,為什麼不用戶請求時,實時計算呢?這是因為「組合凈值」中還包括分紅送配,分股,送股,拆股,合股,現金,紅利等等,業務太過復雜,開發初期經常需要調整計算邏輯,所以就設計成後台離線計算模式了。當前正在改造,將分紅送配邏輯做成離線計算,股價組成的凈值實時計算。介面請求是,將實時計算部分和離線計算部分合並成最終結果。
實際上,我們的計算邏輯是比較低效的:循環遍歷所有的組合,對每個組合,獲取所有的價值數據,然後計算。完成一遍循環後,立即開始下一輪循環。
優化:
分級:活躍用戶的活躍組合,其它組合。
批量:拉取當前所有股票的現價到 JVM 內存里,這一輪的所有組合計算都用這一份股價快照。
關於這個話題的更詳細內容,感興趣的可以參考雪球組合業務總監張岩楓在今年的 arch summit 深圳大會上的分享:構建高可用的雪球投資組合系統技術實踐 http://sz2015.archsummit.com/speakers/201825
最後,我們還做了一些通用的架構和性能優化,包括jdk升級到8,開發了一個基於 zookeeper 的 config center 和開關降級系統
四. 聊聊關於架構優化的一些總結和感想
在各種場合經常聽說的架構優化,一般都是優化某一個具體的業務模塊,將性能優化到極致。而在雪球,我們做的架構優化更多的是從問題出發,解決實際問題,解決到可以接受的程度即可。可能大家看起來會覺得很凌亂,而且每個事情單獨拎出來好像都不是什麼大事。
我們在對一個大服務做架構優化時,一般是往深入的本質進行挖掘;當我們面對一堆架構各異的小服務時,「架構優化」的含義其實是有一些不一樣的。大部分時候,我們並不需要(也沒有辦法)深入到小服務的最底層進行優化,而是去掉或者優化原來明顯不合理的地方就可以了。
在快速迭代的創業公司,我們可能不會針對某一個服務做很完善的架構設計和代碼實現,當出現各種問題時,也不會去追求極致的優化,而是以解決瓶頸問題為先。
即使我們經歷過一回將 snowball 拆分服務化的過程,但當我們重新上一個新的業務時,我們依然選擇將它做成一個大一統的服務。只是這一次,我們會提前定義好每個模塊的 service 介面,為以後可能的服務化鋪好路。
在創業公司里,重寫是不能接受的;大的重構,從時間和人力投入上看,一般也是無法承擔的。而「裱糊匠」式做法,哪裡有性能問題就加機器,加緩存,加資料庫,有可用性問題就加重試,加log,出故障就加流程,加測試,這也不是雪球團隊工作方式。我們一般都採用最小改動的方式,即,准確定義問題,定位問題根源,找到問題本質,制定最佳方案,以最小的改動代價,將問題解決到可接受的范圍內。
我們現在正在所有的地方強推3個數據指標:qps,p99,error rate。每個技術人員對自己負責的服務,一定要有最基本的數據指標意識。數字,是發現問題,定位根源,找到本質的最重要的依賴條件。沒有之一。
我們的原則:保持技術棧的一致性和簡單性,有節制的嘗試新技術,保持所有線上服務依賴的技術可控,簡單來說,能 hold 住。
能用cache的地方絕不用db,能非同步的地方,絕不同步。俗稱的:吃一塹,長一智。
特事特辦:業務在發展,需求在變化,實現方式也需要跟著變化。簡單的來說:遺留系統的優化,最佳方案就是砍需求,呵呵。
② 誰知道現在什麼軟體能提供比較穩定的股票實時行情數據,像數暢,網際風等,想找一個穩定的價格無所謂
BIGI行情股指期貨外盤期貨外匯現貨期權滬深股票A股實時行情數據K線介面
1、國際期貨、國內期貨、外匯、貴金屬、現貨、期權、股指、數字貨幣和A股
交易所:紐約NYMEX、紐約COMEX、芝加哥CME、芝加哥CBOE、美國ICE、歐洲ICE、瑞士EUREX、倫敦LME、香港HKEX、新加坡SGX、京東TOCOM、馬來西亞BMD、中金所CFFEX、上期所SHFE、大商所DCE、鄭商所CZCE、上期能源INE、滬深交易所
2、接入socket websocket http
3、免費調用K線,實時推送K線
4、無延時
5、API介面
6、專業一對一指導
③ 基於微信大數據的股票預測研究
基於微信大數據的股票預測研究
大數據是近些年來的熱門話題,無論國際上還是國內,影響很大。經濟學、政治學、社會學和許多科學門類都會發生巨大甚至是本質上的變化和發展,進而影響人類的價值體系、知識體系和生活方式。而全球經濟目前生成了史無前例的大量數據,如果把每天產生的大量數據比作神話時期的大洪水是完全正確的,這個數據洪流是我們前所未見的,他是全新的、強大的、當然,也是讓人恐慌但又極端刺激的。
而我所分享的話題,正是在互聯網環境下,如何利用大數據技術,進行股票預測的研究。–今天,我想分享我認為有意義的四點。
1.大數據下的商業預測
根據大數據,我們可以有效地進行故障、人流、流量、用電量、股票市場、疾病預防、交通、食物配送、產業供需等方面的預測。而本文我們所關心的內容是股票市場的預測。
大數據的核心是預測,預測依賴於對數據的分析。那麼分析的方法是否是基於隨機采樣的結果而設計的,這樣的分析方法是否會有誤差?
從傳統認識上,由於資源和科技的局限,如人和計算資源受限、從計算機處理能力來講無法處理全部數據來獲取人們所關注的結果。因此隨機采樣應運而生,通過所選取的個體來代表全體,如使用隨機抽取的方式來使得推論結果更科學。但既然提到了大數據,它是資源發展到一定程度、以及技術發展到一定階段產生的一個新的認識。如同電力的出現,使人類進入了一個快速發展階段,大數據也一樣,它的含義是全體樣本,從整體樣本來做推論。在本文大數據的含義是所有股票在整個社交網路上的流動信息,從數據源上講,本文沒有採用所有社交網路上的數據,只分析了微信這個最具代表性的社交媒體作為信息源。
互動數據能反映用戶情緒,搜索數據能反映用戶的關注點和意圖,在股市預測時這兩種數據哪種更具有參考價值?
我認為都有價值,互動數據反映了用戶對某一特定股票的喜好和厭惡,可以簡單描述為對該股票的操作是繼續持有還是賣出;而搜索數據則代表用戶在收集該股票信息的過程,它是關注度的概念,某隻股票搜索度高則意味著消息的影響力大。互動代表著方向,搜索代表著振幅。
我們知道這兩種數據得出的結論會有差異,您是如何平衡這兩種數據反映的情況來進行預測的?
正如上一個問題里提到的,如果是股票推薦,買進賣出等原則問題,則應該考慮互動數據,但如果已經買到手了,搜索數據可以提供一個幅度的概念,類似債券評級A級、AA級、AAA級等,供投資者參考,因為不同投資者對風險的承受度是不同的。
將股票和市場的消息整理成140字的短消息發布,是否意味著主要發布渠道是微博?現在微信公眾號很火,有沒有考慮通過這個渠道也發布消息?
事實上,信息傳播的方式很多,微信作為新媒體當然影響力不容小覷,但目前技術投入最小的還是郵件、簡訊等方式,未來會考慮使用公眾號來推送股票和市場消息。
如果在未來通過微信公眾號推送消息,那麼推送的消息會不會作為數據來源被再次採集?這會有多大的影響?
會被採集,但互聯網上的每日關於個股的信息數量會達到很大,該推送會增加推薦股票1點權重,每隻股票的權重成百上千,因此影響極小。
數據來源是微信公眾號,除了准確性的考慮之外,是否還考慮過這樣收集數據會較少觸犯個人隱私?
從法律角度來看,搜索微信或其他個人聊天記錄,是侵犯個人隱私權的,因此如果騰訊開放了這樣的介面,每個公民都可以對這樣的行為進行投訴、抗議、甚至進行法律起訴直至其改正過錯、賠償損失的。
這樣是否意味著即使存在違法的行為,其結果也是由騰訊來承擔,而我們作為數據的使用方不需要承擔任何法律責任?
在整個社會,我們作為系統技術提供方,應恪守大數據的倫理道德,遵守國家法律,如侵犯個人隱私,系統不會採集,谷歌有一句座右銘「谷歌不作惡」,本文提到的系統也一樣。
2.基於大數據進行股票推薦實驗
股票的及時度反應了微信文章所發布的時效性,及時度越高,數據價值就越大。
股票的熱度反應了當前某隻股票被關注的頻度,關注頻度越大,上漲的可能性越高。
數據的完整性:我們採用循環的方式對所有深滬兩地發行約2236隻股票(創業版除外)在微信搜索網站上的搜索結果進行保存。
數據的一致性:文件格式由負責保存數據文件的程序決定,單一的流程保障了文件的一致性。
數據的准確性:由於所分析的訂閱號文章的是由微信公共平台的公眾號所提供,在一定程度上杜絕了虛假消息對於預測系統的破壞。
數據的及時性:考慮到磁碟讀寫以及採集程序所處的網路帶寬,以及搜索引擎對於採集程序的屏蔽,程序中採集兩條信息之間間隔了5秒,因此理論上11180秒(3.1個小時)可收集完當日推薦所需要的數據。對於每個交易日,在9點-9點30分之間採集所有數據,需要7台以上的設備可達到最佳效果。本次試驗受限於試驗設備,在一台設備上,交易日每天早六時開始進行數據採集,也滿足及時性要求。
數據分析:查看三個高優先順序的股票,該股票當日的開盤價與收盤價,再與當日(2015-4-8)上證綜指進行比較,可得在收益上該演算法是優於上證綜指為樣本的整體股票的股價差收益的。
實驗結論:按照上述方式,系統每天推薦出當日股票,在開盤時進行買進,在第二個交易日進行賣出。經過一個月21個交易日(2015-3-1至2015-3-31),系統的收益為20%/月。通過微信搜索公眾號來預測市場走勢和投資情緒呈現出正相關性,因此可以作為股票甄選的因子。
3.股票預測的大數據發展趨勢
網路數據分成三種:
一是瀏覽數據,主要用於電商領域的消費者行為分析,瀏覽數據反映了用戶每一步的訪問腳步,進一步刻畫出用戶的訪問路徑,分析不同頁面的跳轉概率等。
二是搜索數據,主要指搜索引擎記錄的關鍵詞被搜索頻次的時間序列數據,能反映數億用戶的興趣、關注點、意圖。
三是互動數據,主要是微博、微信、社交網站的數據,反映用戶的傾向性和情緒因素。
2013年諾貝爾經濟學獎得主羅伯特?席勒的觀點被無數采訪對象引述。席勒於上世紀80年代設計的投資模型至今仍被業內稱道。在他的模型中,主要參考三個變數:投資項目計劃的現金流、公司資本的估算成本、股票市場對投資的反應(市場情緒)。他認為,市場本身帶有主觀判斷因素,投資者情緒會影響投資行為,而投資行為直接影響資產價格。
計算機通過分析新聞、研究報告、社交信息、搜索行為等,藉助自然語言處理方法,提取有用的信息;而藉助機器學習智能分析,過去量化投資只能覆蓋幾十個策略,大數據投資則可以覆蓋成千上萬個策略。
基於互聯網搜索數據和社交行為的經濟預測研究,已逐漸成為一個新的學術熱點,並在經濟、社會以及健康等領域的研究中取得了一定成果。在資本市場應用上,研究發現搜索數據可有效預測未來股市活躍度(以交易量指標衡量)及股價走勢的變化。
對於搜索數據:互聯網搜索行為與股票市場的關聯機理。這個研究屬於行為金融與互聯網的交叉領域,其原理是:股票量價調整是投資者行為在股票市場上的反應;與此同時,投資者行為在互聯網搜索市場也有相應地行為跡象,我們要做到是:找到互聯網搜索市場中領先於股票交易的行為指標,綜合眾多投資者的先行搜索指標,對未來的股票交易做出預判。
如同天氣預報那樣,不斷優化模型、灌入海量信息,然後給出結果。並且在處理的信息中,有80%是「非結構化」數據,例如政策文件、自然事件、地理環境、科技創新等,這類信息通常是電腦和模型難以消化的。採用了語義分析法,可以將互動數據里的金融對話量化為「-1(極度看空)」到「1(極度看多)」之間的投資建議,通過分析互動數據的數據文本,作為股市投資的信號。
4.正在發生的未來
大數據並不是一個充斥著演算法和機器的冰冷世界,人類的作用依然無法被完全替代。大數據為我們提供的不是最終答案,只是參考答案,幫助是暫時的,而更好的方法和答案還在不久的將來。
大數據在實用層面的影響很廣泛,解決了大量的日常問題。大數據更是利害攸關的,它將重塑我們的生活、工作和思維方式。在某些方面,我們面臨著一個僵局,比其他劃時代創新引起的社會信息范圍和規模急劇擴大所帶來的影響更大。我們腳下的地面在移動。過去確定無疑的事情正在受到質疑。大數據需要人們重新討論決策、命運和正義的性質。擁有知識曾意味著掌握過去,現在則意味著能夠預測未來。
大數據並不是一個充斥著演算法和機器的冰冷世界,其中仍需要人類扮演重要角色。人類獨有的弱點、錯覺、錯誤都是十分必要的,因為這些特性的另一頭牽著的是人類的創造力、直覺和天賦。這提示我們應該樂於接受類似的不準確,因為不準確正是我們之所以為人的特徵之一。就好像我們學習處理混亂數據一樣,因為這些數據服務的是更加廣大的目標。必將混亂構成了世界的本質,也構成了人腦的本職,而無論是世界的混亂還是人腦的混亂,學會接受和應用他們才能得益。
我相信,利用基礎數據、搜索數據、互動數據再進行加權計算,可以對所有股票進行大數據遴選,從而給出投資建議。我認為,我們的肉身剛剛步入大數據時代,但我們的精神還滯留在小數據、采樣思維之中,率先用理性擊碎固有思維的人,也將率先獲得大數據帶來的益處。
④ 股票軟體如何導入外部數據
這個真沒辦法導入,股票軟體的數據都是實時接收,資訊類的也是在後台整理好以後再推送的,你的數據可以導入到excel中進行分析
⑤ 銀江,數暢,網際風等行情介面怎樣購買
1、銀江網路行情介面是什麼概念,與券商的提供的免費軟體有什麼區別?
答:在互聯網還不是很普及的時候,大部分看盤軟體都是用硬體圖文卡通過閉路電視信號接受行情,隨著互聯網越來越普及,各家股票軟體公司都開始用互聯網傳輸數據,他們都有各自的行情數據介面。【銀江網路介面】是【銀江證券投資決策系統】網路版的行情介面,同時兼容分析家(通視卡)介面規范,也可供分析家、飛狐交易師、益盟操盤手、麟龍、乾坤、融易等分析軟體接收高速股票行情使用。所以如果你的軟體帶有圖文卡選項,並且是通視卡數據標准,基本上就可以使用銀江介面,注意:介面安裝的時候需要關閉所有相關軟體,安裝好以後,不需要單獨啟動銀江介面。第一次啟動相關股票軟體,選擇使用圖文卡接收接就會啟動銀江,以後啟動股票軟體就會自動啟動銀江介面的。
2、目前有哪些兼容的通視卡標准數據介面,銀江介面有什麼特點?
答:目前兼容的數據介面有數暢、網際風、王者、倚天金融快車、銀江等品牌,與其他介面相比銀江有以下特點:
◆大部分的兼容介面以及券商提供的免費軟體都是採用請求式數據傳輸方式,打開一隻股票畫面,數據才會自動下載,不打開的股票頁面,該畫面數據不會下載到本地硬碟上,所以如果網路不好,或者伺服器不好,就極為耽誤看盤。而且因為本地請求到的數據太少。分析軟體里的公式指標也沒法自動發揮作用,想實時預警或者選股什麼的,都沒法准確運行,這也是很多人不願意使用證券公司提供的免費軟體的原因。銀江網路行情介面,採用的是主動推送方式能將所有數據主動推送到本地硬碟,所以任意打開一個股票頁面,股票行情都能立即顯示。此時用分析軟體裡面預警和指標公式選股,都是最准確的。
◆銀江介面支持最多4個股票軟體同時運行接受當日的動態行情。擁有一套銀江網路行情介面,相當於擁有分析家、飛狐交易師、益盟操盤手等多個經典分析軟體。(注意:歷史數據需要單個軟體分別補充。)
◆銀江介面行情佔用系統資源少,運行高速穩定,各種數據全面、速度快,每分鍾9筆10筆是常見的,自動補充當日分時,自動更新F10資料,支持信息地雷,支持補充當日分筆數據。銀江網路行情介面是目前唯一支持分析家信息地雷、財務數據、除權數據自動下載支持分析家最好的介面,也是目前唯一支持益盟操盤手2.72版自動下載財務數據、除權數據、補充5分鍾線的介面。
◆支持代理伺服器,無論是win98還是win2000、xp、win2003都運行穩定流暢,多伺服器支持,不用擔心行情中斷。
◆一個會員號可以在任意電腦上面使用,但是同一時間只能一台電腦在線。
◆價格便宜,是眾多介面中價格最低的,傳輸數據全面,性能最好的介面。
3、銀江網路行情軟體支持那些版本的股票軟體?
答:銀江網路目前支持的股票軟體版本是分析家4.0---分析家2006 v6.0、飛狐交易師專業版4.06版以下、益盟操盤手2.72版以下等版本比較低一點的股票軟體,隨著互聯網的普及,各家股票軟體公司都關閉了圖文卡兼容介面,發展自己的行情數據介面,所以最新版的股票軟體大都不再提供圖文卡介面。所以也就不能再使用兼容數據介面以及銀江了。高版本的股票軟體裡面,目前網路上面流傳的只有飛狐交易師網路版4.9的D版可以使用銀江介面,益盟操盤手軟體網路上面流傳的3.04以上的D版都是將2.72的操盤手改了下版本號,並不是真正的高版本操盤手,2.72以上的操盤手要看行情必須使用正版才行。
⑥ 如何獲取實時的股票行情信息,有相關的公用介面或者數據源嗎
實時股票數據介面
股票數據的獲取目前有如下兩種方法可以獲取:
1.
http/javascript介面取數據
2.
web-service介面
1.http/javascript介面取數據
1.1Sina股票數據介面
以大秦鐵路(股票代碼: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″,時間;
一個簡單的JavaScript應用例子:
script
type="text/javascript" src="http://hq.sinajs.cn/list=sh601006"
charset="gb2312">/script>
/javascript">
var
elements=hq_str_sh601006.split(",");
document.write("current
price:"+elements[3]);
這段代碼輸出大秦鐵路(股票代碼:601006)的當前股價
current
price:14.20
如果你要同時查詢多個股票,那麼在URL最後加上一個逗號,再加上股票代碼就可以了;比如你要一次查詢大秦鐵路(601006)和大同煤業(601001)的行情,就這樣使用URL:
http://hq.sinajs.cn/list=sh601003,sh601001
查詢大盤指數,比如查詢上證綜合指數(000001):
http://hq.sinajs.cn/list=s_sh000001
伺服器返回的數據為:
var
hq_str_s_sh000001="上證指數,3094.668,-128.073,-3.97,436653,5458126";
數據含義分別為:指數名稱,當前點數,當前價格,漲跌率,成交量(手),成交額(萬元);
查詢深圳成指數:
http://hq.sinajs.cn/list=s_sz399001
對於股票的K線圖,日線圖等的獲取可以通過請求http://image.sinajs.cn/…./…/*.gif此URL獲取,其中*代表股票代碼,詳見如下:
查看日K線圖:
http://image.sinajs.cn/newchart/daily/n/sh601006.gif
分時線的查詢:
http://image.sinajs.cn/newchart/min/n/sh000001.gif
日K線查詢:
http://image.sinajs.cn/newchart/daily/n/sh000001.gif
周K線查詢:
http://image.sinajs.cn/newchart/weekly/n/sh000001.gif
月K線查詢:
http://image.sinajs.cn/newchart/monthly/n/sh000001.gif
1.2
Bai&Google的財經數據
在,
google中搜索某隻股票代碼時,將會在頭條顯示此股票的相關信息,例如在google搜索601006時,
第一條搜索結果如下圖:
通過點擊左邊的圖片我們發現會將此圖片鏈接到sina財經頻道上,也就是說google股票數據的獲取也是從sina獲取。後經抓包分析,發現google也是採用1.1中介紹的介面。
Bai的股票數據來自的財經頻道
http://stock..com/
1.3
其他方式
除了sina,等網站提供股票信息外,其他網站也有類似的介面。我們分析了一款論壇上採用的股票插件,
其中有關於實時股票數據獲取的介紹,詳見如下代碼,其中可以看到有些數據來自sina。
以下是ASP示例:
=5
then
stockdata=gethttp("http://hq.sinajs.cn/list=sh"&code&"")
if
not len(stockdata)=0 then
stockdata=split(stockdata,chr(34))(1)
end if
if
len(stockdata)=0
then
stockdata="0,0,0,0,0,0,0,0,0,0,0,0"
else
stockdatasplit=split(stockdata,",")
stockdata=""&exstock.checkstr(stockdatasplit(0))&","&stockdatasplit(1)&","&stockdatasplit(2)&","&stockdatasplit(3)&","&stockdatasplit(4)&","&stockdatasplit(5)&","&formatdatetime(""&stockdatasplit(30)&"
"&stockdatasplit(31)&"",0)&""
end
if
『0=股票名稱,1=開盤價格,2=昨收盤價格,3=當前價格,4=最高價,5=最低價,6=更新時間
getstockdata=stockdata
end
function
function getstockimg(code)
dim
rndnum,addnum,checkcode,imgsource
if len(code)=5
then
getstockimg="http://image.sinajs.cn/newchart/daily/n/sh"&code&".gif"
end
if
imgsource="http://finance.sina.com.cn"
case
3
getstockimg="http://hq.gazxfe.com/stockchart/realline.chart?"&code&"&1003&SZ
500 330"
imgsource="http://hq.gazxfe.com"
case
4
getstockimg="http://chartse.stockstar.com/chartserver?code="&code&""
imgsource="http://www.stockstar.com/"
end
select
getstockimg=split(""&getstockimg&"||"&imgsource&"","||")
end
function
function getastockimg()
dim
rndnum,addnum,checkcode
dim
getastockimgb,imgsource
addnum=6
randomize:rndnum=cint(rnd*addnum)
select
case rndnum
case
0
getastockimg="http://202.109.106.1/gifchartse/gif/000001.gif"
getastockimgb="http://202.109.106.1/gifchartse/gif/399001.gif"
imgsource="http://www.stockstar.com/"
case
1
getastockimg="http://money.163.com/special/100.gif?C39"
getastockimgb="http://money.163.com/special/101.gif?HrS"
imgsource="http://www.163.com"
case
2
getastockimg="http://www.10jqka.com.cn/curve/realtime/index2.php?code=1a0001&w=180&h=140"
getastockimgb="http://www.10jqka.com.cn/curve/realtime/index2.php?code=399001&w=180&h=140"
imgsource="http://www.10jqka.com.cn"
case
3
getastockimg="http://chart.cnlist.com/stockchart/realline.chart?1a0001&1002&SZ
180
140"
getastockimgb="http://chart.cnlist.com/stockchart/realline.chart?399001&1002&SZ
180
140"
imgsource="http://chart.cnlist.com/"
case
4
getastockimg="http://image.sinajs.cn/newchart/small/ish000001.gif?1189176558328"
getastockimgb="http://image.sinajs.cn/newchart/small/isz399001.gif?1189176558328"
imgsource="http://www.sinajs.cn"
case
5
getastockimg="http://218.1.72.66/cgi/pic/sh/realtime/JA000001164143.png"
getastockimgb="http://218.1.72.66/cgi/pic/sz/realtime/JA399001164143.png"
imgsource="http://www.cnstock.com/"
case
6
getastockimg="http://222.73.29.85/img/000001.png"
getastockimgb="http://222.73.29.85/img/399001.png"
imgsource="http://www.eastmoney.com/"
end
select
getastockimg=split(""&getastockimg&"||"&getastockimgb&"||"&imgsource&"","||")
end
function
%>
2.
web-service介面
2.1 CHINAstock的web-service:
http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx
中國股票行情數據
WEB 服務(支持深圳和上海股市的全部基金、債券和股票),數據即時更新。輸出GIF分時走勢圖、日/周/月 K
線圖、及時行情數據(股票名稱、行情時間、最新價、昨收盤、今開盤、漲跌額、最低、最高、漲跌幅、成交量、成交額、競買價、競賣價、委比、買一 - 買五、賣一 -
賣五)。此WEB服務提供了如下幾個介面:
2.1.1
getStockImageByCode
GET
股票GIF分時走勢圖
INput:theStockCode =
股票代號,如:sh000001
POST /WebServices/ChinaStockWebService.asmx
HTTP/1.1
Host: www.webxml.com.cn
Content-Type:
text/xml; charset=utf-8
Content-Length:
length
SOAPAction:
"http://WebXml.com.cn/getStockImageByCode"
string
Output:
2.1.2
getStockImageByteByCode
獲得中國股票GIF分時走勢圖位元組數組
INput:theStockCode
= 股票代號,如:sh000001
POST /WebServices/ChinaStockWebService.asmx
HTTP/1.1Host: www.webxml.com.cnContent-Type: text/xml;
charset=utf-8Content-Length: lengthSOAPAction:
"http://WebXml.com.cn/getStockImageByteByCode"
string
返回的數據如下:
hkMyt4m4VkJtstbv8A
2.1.3
getStockImage_kByCode
直接獲得中國股票GIF日/周/月 K
線圖(545*300pixel/72dpi)
INPUT: theStockCode =
股票代號
theType = K 線圖類型(D:日[默認]、W:周、M:月),
POST
/WebServices/ChinaStockWebService.asmx HTTP/1.1Host:
www.webxml.com.cnContent-Type: text/xml; charset=utf-8Content-Length:
lengthSOAPAction: "http://WebXml.com.cn/getStockImage_kByCode" string
string
比如按照下圖所示輸入:
返回的結果就是周K線圖:
2.1.4
getStockImage_kByteByCode
獲得中國股票GIF日/周/月 K
線圖位元組數組
Input:theStockCode = 股票代號,如:sh000001
POST
/WebServices/ChinaStockWebService.asmx HTTP/1.1Host:
www.webxml.com.cnContent-Type: text/xml; charset=utf-8Content-Length:
lengthSOAPAction: "http://WebXml.com.cn/getStockImage_kByteByCode" string string
HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length
base64Binary
比如按照下圖輸入:
返回的結果就是周K線圖位元組數組
hkMyt4m4VkJtstbv8A
2.1.5
getStockInfoByCode
獲得中國股票及時行情
input:theStockCode
= 股票代號
POST /WebServices/ChinaStockWebService.asmx HTTP/1.1Host:
www.webxml.com.cnContent-Type: text/xml; charset=utf-8Content-Length:
lengthSOAPAction: "http://WebXml.com.cn/getStockInfoByCode"
string
返回的值一個一維字元串數組
String(24),結構為:String(0)股票代號、String(1)股票名稱、String(2)行情時間、String(3)最新價(元)、String(4)昨收盤(元)、String(5)今開盤(元)、String(6)漲跌額(元)、String(7)最低(元)、String(8)最高(元)、String(9)漲跌幅(%)、String(10)成交量(手)、String(11)成交額(萬元)、String(12)競買價(元)、String(13)競賣價(元)、String(14)委比(%)、String(15)-String(19)買一
- 買五(元)/手、String(20)-String(24)賣一 - 賣五(元)/手。
Web
service的方法類似於現在concurrent項目的DBWS數據的獲取,都是通過SOAP協議向DBWS伺服器獲取相關的數據。
利用雅虎查中國股票
http://quote.yahoo.com/d/quotes.csv?s=MSFT&f=slc1wop
返回微軟的股票價格
"MSFT","4:00pm
- 30.70",+1.04,"21.46 -
30.75",29.77,29.66
http://quote.yahoo.com/d/quotes.csv?s=000969.SZ&f=slc1wop
這個返回安泰科技的,一般有半個小時的延遲。
但是s=000969.sz
這個後面的sz是深圳的意思, 滬市是SS後綴
⑦ 上證指數歷史數據在哪裡可以看到呢
適用股票分析軟體、上證網以及其他證券網站均可查詢!
股市指數是由證券交易所或金融服務機構編制的、表明股票行市變動的一種供參考的數字。
通過指數,對於當前各個股票市場的漲跌情況我們可以直觀地看到。
股票指數的編排原理還是比較錯綜復雜的,那學姐就不在這里細講了,點擊下方鏈接,教你快速看懂指數:新手小白必備的股市基礎知識大全
一、國內常見的指數有哪些?
會由股票指數的編制方法和性質來分類,股票指數有五種類型:規模指數、行業指數、主題指數、風格指數和策略指數。
這當中,最頻繁遇見的當屬規模指數,比如我們熟知的「滬深300」指數,它說明的是在滬深市場中交易活躍,且代表性和流動性都很好的300家大型企業股票的整體情況。
當然還有,「上證50 」指數也屬於規模指數,代表的是上海證券市場代表性好、規模大、流動性好的50 只股票的整體情況。
行業指數代表的則是某個行業目前的整體狀況。比如說「滬深300醫葯」就算是一個行業指數,代表滬深300中的醫葯行業股票,反映該行業公司股票的整體表現。
某一主題的整體情況是用主題指數作為代表的,就好比人工智慧、新能源汽車這些方面,以下是相關指數:「科技龍頭」、「新能源車」等。
想了解更多的指數分類,可以通過下載下方的幾個炒股神器來獲取詳細的分析:炒股的九大神器免費領取(附分享碼)
二、股票指數有什麼用?
經過文章前面的介紹,大家可以知道,指數選取了市場中具有代表性的一些股票,因此,指數能夠幫助我們比較快速的了解到市場的整體漲跌情況,這也是對市場的熱度做一個簡單的了解,甚至可以預測未來的走勢是怎麼樣的。具體則可以點擊下面的鏈接,獲取專業報告,學習分析的思路:最新行業研報免費分享
應答時間:2021-09-06,最新業務變化以文中鏈接內展示的數據為准,請點擊查看
⑧ 股票軟體怎麼開發股票軟體開發需要注意哪些
股票軟體開發開發過程包括以下五個階段:
一、股票軟體開發定製分析
然後把它用軟體工程開發語言(形式功能規約,軟體需求分析就是回答做什麼的問題。一個對用戶的需求進行去粗取精、去偽存真、正確理解。即需求規格說明書)表達進去的過程。本階段的基本任務是和用戶一起確定要解決的問題,建立軟體的邏輯模型,編寫需求規格說明書文檔並最終得到用戶的認可。需求分析的主要方法有結構化分析方法、數據流程圖和數據字典等方法。本階段的工作是根據需求說明書的要求,設計建立相應的軟體系統的體系結構,並將整個系統分解成若干個子系統或模塊,定義子系統或模塊間的介面關系,對各子系統進行具體設計定義,編寫軟體概要設計和詳細設計說明書,資料庫或數據結構設計說明書,組裝測試計劃。
二、股票軟體開發設計
也可以是可組合、可分解和可更換的功能單元。模塊,股票軟體設計可以分為概要設計和詳細設計兩個階段。實際上軟體設計的主要任務就是將軟體分解成模塊是指能實現某個功能的數據和程序說明、可執行程序的順序單元。可以是一個函數、過程、子程序、一段帶有順序說明的獨立的順序和數據。然後進行模塊設計。概要設計就是結構設計,其主要目標就是給出軟體的模塊結構,用軟體結構圖表示。詳細設計的首要任務就是設計模塊的順序流程、演算法和數據結構,主要任務就是設計資料庫,常用方法還是結構化順序設計方法。
三、股票軟體開發定製編碼
即寫成以某一順序設計語言表示的"源程序清單"充沛了解軟體開發語言、工具的特性和編程風格,軟體編碼是指把軟體設計轉換成計算機可以接受的順序。有助於開發工具的選擇以及保證軟體產品的開發質量。
四、股票軟體開發測試
關鍵在於理解測試方法。不同的測試方法有不同的測試用例設計方法。兩種常用的測試方法是白盒法測試對象是源程序,股票軟體測試的目的以較小的代價發現盡可能多的錯誤。要實現這個目標的關鍵在於設計一套出色的測試用例(測試數據和預期的輸出結果組成了測試用例)如何才幹設計出一套出色的測試用例。依據的順序內部的邏輯結構來發現軟體的編程錯誤、結構錯誤和數據錯誤。結構錯誤包括邏輯、數據流、初始化等錯誤。用例設計的關鍵是以較少的用例覆蓋盡可能多的內部順序邏輯結果。白盒法和黑盒法依據的軟體的功能或軟體行為描述,發現軟體的介面、功能和結構錯誤。其中介面錯誤包括內部/外部介面、資源管理、集成化以及系統錯誤。
五、股票軟體開發與維護
對軟體產品所進行的一些軟體工程的活動。即根據軟體運行的情況,維護是指在已完成對軟體的研製(分析、設計、編碼和測試)工作並交付使用以後。對軟體進行適當修改,以適應新的要求,以及糾正運行中發現的錯誤。編寫軟體問題演講、軟體修改演講。
⑨ 什麼是全推數據
所謂全推行情,就是股票數據介面將所有股票實時數據同步發送,只要打開軟體,無論翻看與否,所有股票的最新實時數據都自動更新,翻看時無停滯感。這樣的發送方式對伺服器的質量和數量要求較高。現在的nezip網際風介面和早期的數暢、銀江介面,以及大智慧新一代L2版具備全推數據提供,所有免費軟體都不是全推行情。
相對於全推行情,另一種傳輸方式就是點播行情,亦稱請求行情,是以通達信、經典版大智慧、錢龍為代表,更新模式為:當前頁面股票和上證指數行情更新最快,其中上證指數無條件更新(功能設計),其次是行情列表或自選股版面行情,依屏幕大小為30—50支股票,這個版面可見股票是自動更新的,其他股票一律不更新,大智慧新一代點播更絕(只有當前股票能夠實時更新)。所以相比飛狐和分析家的全推行情,要省掉95%以上的傳輸數據,伺服器承受的壓力當然要小得多,也就是為什麼通達信能夠一直堅持提供免費行情的原因。即便如此也需要用1000多台伺服器(和聯眾游戲差不多吧),要是通達信也搞全推,至少需要增加50倍以上的伺服器投入。
推和點播的優缺點:
點播行情
優點:自動偵測行情伺服器連接響應速度。股票歷史數據存儲在伺服器端,客戶端在翻動股票的時候會自動獲得數據並保留到本地供以後調用。在實時行情中,正在關注的股票K線數據源源不斷進來,未翻動股票K線數據會以較小的筆數發送,節約伺服器和客戶端帶寬資源。一旦翻到某個股票,伺服器會瞬間補充客戶端全部數據。每天不用收盤作業,只需聯網就可以翻閱歷史行情。盤後可以補充下載歷史數據。
缺點:由於該行情傳遞數據的方式,不能實現盤中實時預警和及時條件選股。
全推行情
優點:在實時接收中,軟體會按照伺服器的全部推送數據發送方式把所有深滬數據源源不斷獲得到本地,這種方式有利於盤中實時指標預警和盤中選股。
缺點:該數據傳遞方式需要佔用一定的系統資源和網路帶寬,如果網路質量不好,會影響實時數據的連貫性。全推行情介面支持的軟體相對專業,目前僅支持飛狐交易師、分析家、大智慧和步步匯盈,新手使用需要有個熟悉的過程。
⑩ 如何實時行情數據接收
這類數據接進來需要非常 使用前一定要測試下是否合適