Ⅰ 怎麼用python計算股票
作為一個新手,在學習中遇到很多問題,要善於運用各種方法。今天,在學習中,碰到了如何通過收盤價計算股票的漲跌幅。
第一種:
讀取數據並建立函數:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import spline
from pylab import *
import pandas as pd
from pandas import Series
a=pd.read_csv('d:///1.csv',sep=',')#文件位置
t=a['close']
def f(t):
s=[]
for i in range(1,len(t)):
if i==1:
continue
else:
s.append((t[i]-t[i-1])/t[i]*100)
print s
plot(s)
plt.show()
f(t)
第二種:
利用pandas裡面的方法:
import pandas as pd
a=pd.read_csv('d:///1.csv')
rets = a['close'].pct_change() * 100
print rets
第三種:
close=a['close']
rets=close/close.shift(1)-1
print rets
總結:python是一種非常好的編程語言,一般而言,我們可以運用構建相關函數來實現自己的思想,但是,眾所周知,python中裡面的有很多科學計算包,裡面有很多方法可以快速解決計算的需要,如上面提到的pandas中的pct_change()。因此在平時的使用中應當學會尋找更好的方法,提高運算速度。
Ⅱ 怎樣用 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沒有關系。
另外通過一定方法降低手續費也可以使你的資金活得更久,如把上面的日模型改為周或月模型。
Ⅲ 如何用Python和機器學習炒股賺錢
相信很多人都想過讓人工智慧來幫你賺錢,但到底該如何做呢?瑞士日內瓦的一位金融數據顧問 Gaëtan Rickter 近日發表文章介紹了他利用 Python 和機器學習來幫助炒股的經驗,其最終成果的收益率跑贏了長期處於牛市的標准普爾 500 指數。雖然這篇文章並沒有將他的方法完全徹底公開,但已公開的內容或許能給我們帶來如何用人工智慧炒股的啟迪。
我終於跑贏了標准普爾 500 指數 10 個百分點!聽起來可能不是很多,但是當我們處理的是大量流動性很高的資本時,對沖基金的利潤就相當可觀。更激進的做法還能得到更高的回報。
這一切都始於我閱讀了 Gur Huberman 的一篇題為《Contagious Speculation and a Cure for Cancer: A Non-Event that Made Stock Prices Soar》的論文。該研究描述了一件發生在 1998 年的涉及到一家上市公司 EntreMed(當時股票代碼是 ENMD)的事件:
「星期天《紐約時報》上發表的一篇關於癌症治療新葯開發潛力的文章導致 EntreMed 的股價從周五收盤時的 12.063 飆升至 85,在周一收盤時接近 52。在接下來的三周,它的收盤價都在 30 以上。這股投資熱情也讓其它生物科技股得到了溢價。但是,這個癌症研究方面的可能突破在至少五個月前就已經被 Nature 期刊和各種流行的報紙報道過了,其中甚至包括《泰晤士報》!因此,僅僅是熱情的公眾關注就能引發股價的持續上漲,即便實際上並沒有出現真正的新信息。」
在研究者給出的許多有見地的觀察中,其中有一個總結很突出:
「(股價)運動可能會集中於有一些共同之處的股票上,但這些共同之處不一定要是經濟基礎。」
我就想,能不能基於通常所用的指標之外的其它指標來劃分股票。我開始在資料庫裡面挖掘,幾周之後我發現了一個,其包含了一個分數,描述了股票和元素周期表中的元素之間的「已知和隱藏關系」的強度。
我有計算基因組學的背景,這讓我想起了基因和它們的細胞信號網路之間的關系是如何地不為人所知。但是,當我們分析數據時,我們又會開始看到我們之前可能無法預測的新關系和相關性。
如果你使用機器學習,就可能在具有已知和隱藏關系的上市公司的寄生、共生和共情關系之上搶佔先機,這是很有趣而且可以盈利的。最後,一個人的盈利能力似乎完全關乎他在生成這些類別的數據時想出特徵標簽(即概念(concept))的強大組合的能力。
我在這類模型上的下一次迭代應該會包含一個用於自動生成特徵組合或獨特列表的單獨演算法。也許會基於近乎實時的事件,這可能會影響那些具有隻有配備了無監督學習演算法的人類才能預測的隱藏關系的股票組。
Ⅳ python 怎麼下單炒股票
前期的數據抓取和分析可能python都寫好了,所以差這交易指令介面最後一步。版對於股票的散戶,正規權的法子是華寶,國信,興業這樣願意給介面的券商,但貌似開戶費很高才給這權利,而且只有lts,ctp這樣的c++介面,沒python版就需要你自己封裝。
Ⅳ 怎樣用 Python 寫一個股票自動交易的程序
方法一來
前期的數據抓自取和分析可能python都寫好了,所以差這交易指令介面最後一步。對於股票的散戶,正規的法子是華寶,國信,興業這樣願意給介面的券商,但貌似開戶費很高才給這權利,而且只有lts,ctp這樣的c++介面,沒python版就需要你自己封裝。
方法二
是wind這樣的軟體也有直接的介面,支持部分券商,但也貴,幾萬一年是要的。
方法三
滑鼠鍵盤模擬法,很復雜的,就是模擬鍵盤滑鼠去操作一些軟體,比如券商版交易軟體和大智慧之類的。
方法四
就是找到這些軟體的關於交易指令的底層代碼並更改,不過T+1的規則下,預測准確率的重要性高於交易的及時性,花功夫做數據分析就好,交易就人工完成吧
Ⅵ python的量化代碼怎麼用到股市中
(1) #按照市值從小到大的順序活得N支股票的代碼;
(2) #分別對這一百隻股票進行100支股票操版作;
(3) #獲取權從2016.05.01到2016.11.17的漲跌幅數據;
(4) #選取記錄大於40個的數據,去除次新股;
(5) #將文件名名為「股票代碼.csv」。
Ⅶ 怎樣用python處理股票
用Python處理股票需要獲取股票數據,以國內股票數據為例,可以安裝Python的第三方庫回:tushare;一個國內股答票數據獲取包。可以在網路中搜索「Python tushare」來查詢相關資料,或者在tushare的官網上查詢說明文檔。
Ⅷ 怎樣用 Python 寫一個股票自動買賣的程序
方法一來
前期的數據源抓取和分析可能python都寫好了,所以差這交易指令介面最後一步。對於股票的散戶,正規的法子是華寶,國信,興業這樣願意給介面的券商,但貌似開戶費很高才給這權利,而且只有lts,ctp這樣的c++介面,沒python版就需要你自己封裝。
方法二
是wind這樣的軟體也有直接的介面,支持部分券商,但也貴,幾萬一年是要的。
方法三
滑鼠鍵盤模擬法,很復雜的,就是模擬鍵盤滑鼠去操作一些軟體,比如券商版交易軟體和大智慧之類的。
方法四
就是找到這些軟體的關於交易指令的底層代碼並更改,不過T+1的規則下,預測准確率的重要性高於交易的及時性,花功夫做數據分析就好,交易就人工完成吧
Ⅸ 如何用Python炒股
如果想直接執行python程序的話可以寫一個.bat新建一個記事本,然後寫一段下面的代碼,專最後存屬成.bat文件,以後直接執行這段代碼就可以了。其實也可以直接執行.py文件c:\program files\python file.py
Ⅹ 怎麼學習python量化交易
下面教你八步寫個量化交易策略——單股票均線策略
1 確定策略內容與框架
若昨日收盤價高出過去20日平均價今天開盤買入股票
若昨日收盤價低於過去20日平均價今天開盤賣出股票
只操作一隻股票,很簡單對吧,但怎麼用代碼說給計算機聽呢?
想想人是怎麼操作的,應該包括這樣兩個部分
既然是單股票策略,事先決定好交易哪一個股票。
每天看看昨日收盤價是否高出過去20日平均價,是的話開盤就買入,不是開盤就賣出。每天都這么做,循環下去。
對應代碼也是這兩個部分
definitialize(context):
用來寫最開始要做什麼的地方
defhandle_data(context,data):
用來寫每天循環要做什麼的地方
2 初始化
我們要寫設置要交易的股票的代碼,比如 兔寶寶(002043)
definitialize(context):
g.security='002043.XSHE'#存入兔寶寶的股票代碼
3 獲取收盤價與均價
首先,獲取昨日股票的收盤價
#用法:變數=data[股票代碼].close
last_price=data[g.security].close#取得最近日收盤價,命名為last_price
然後,獲取近二十日股票收盤價的平均價
#用法:變數=data[股票代碼].mavg(天數,『close』)
#獲取近二十日股票收盤價的平均價,命名為average_price
average_price=data[g.security].mavg(20,'close')
4 判斷是否買賣
數據都獲取完,該做買賣判斷了
#如果昨日收盤價高出二十日平均價,則買入,否則賣出
iflast_price>average_price:
買入
eliflast_price<average_price:
賣出
問題來了,現在該寫買賣下單了,但是拿多少錢去買我們還沒有告訴計算機,所以每天還要獲取賬戶里現金量。
#用法:變數=context.portfolio.cash
cash=context.portfolio.cash#取得當前的現金量,命名為cash
5 買入賣出
#用法:order_value(要買入股票股票的股票代碼,要多少錢去買)
order_value(g.security,cash)#用當前所有資金買入股票
#用法:order_target(要買賣股票的股票代碼,目標持倉金額)
order_target(g.security,0)#將股票倉位調整到0,即全賣出
6 策略代碼寫完,進行回測
把買入賣出的代碼寫好,策略就寫完了,如下
definitialize(context):#初始化
g.security='002043.XSHE'#股票名:兔寶寶
defhandle_data(context,data):#每日循環
last_price=data[g.security].close#取得最近日收盤價
#取得過去二十天的平均價格
average_price=data[g.security].mavg(20,'close')
cash=context.portfolio.cash#取得當前的現金
#如果昨日收盤價高出二十日平均價,則買入,否則賣出。
iflast_price>average_price:
order_value(g.security,cash)#用當前所有資金買入股票
eliflast_price<average_price:
order_target(g.security,0)#將股票倉位調整到0,即全賣出
現在,在策略回測界面右上部,設置回測時間從20140101到20160601,設置初始資金100000,設置回測頻率,然後點擊運行回測。
7 建立模擬交易,使策略和行情實時連接自動運行
策略寫好,回測完成,點擊回測結果界面(如上圖)右上部紅色模擬交易按鈕,新建模擬交易如下圖。 寫好交易名稱,設置初始資金,數據頻率,此處是每天,設置好後點提交。
8 開啟微信通知,接收交易信號
點擊聚寬導航欄我的交易,可以看到創建的模擬交易,如下圖。 點擊右邊的微信通知開關,將OFF調到ON,按照指示掃描二維碼,綁定微信,就能微信接收交易信號了。