Ⅰ 怎麼用python計算股票
作為一個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都寫好了慶察,所以差這交易指令介面最後一步。
對於股票的散戶,正規的法子是華寶,國信,興業這樣願意給介面的券商,但貌似開戶費很高才給這權利,而且只有lts,ctp這樣的c++介面,沒python版就需要你自己封裝。方法二是wind這樣的軟體也有直鎮攔接的介面,支持部分券商,但也貴,幾萬一年是要的。方法三滑鼠鍵盤模擬法,很復雜的,就是模擬鍵盤滑鼠去操作一些軟體,比如券商版交易軟體和大智慧之類的。方法四就是找到這些軟體的關於交易指令的底層代碼並更改,不過T+1的規則下,預譽旅茄測准確率的重要性高於交易的及時性,花功夫做數據分析就好,交易就人工完成吧Ⅲ python 設計一個名為Stock的類來表示一個公司的股票
是的,設計一個名為 Stock的類表示股票,該類包括:
1、一個名為symbol的字元串數據域表示股票代碼:
2、一個名為name的字元串數據域表示股票名稱;
3、一個名為previousPrice的double型數據域,用來存儲股票的前一 日收盤價:
4、一個名為currentPrice的double型數據域,用來存儲股票的當前價格:
5、創建一個給定特定代碼和名稱的股票構造方法:
6、一個名為getChangePercentO方法,返回從前的日價格到當前價格變化的百分比。
實現這個類,編寫個測試程序,創建一個Stock 對象,它的股票代碼是600000,股票名稱是「浦發銀行」,前一日收盤價是 25.5元,當前的最新價是28.6元,顯示市值變化的百分比。
拓展資料
設計一個Stock類和DividendStock類
編寫了一個表示擁有股票情況的Stock類,這里給出了一個簡化版,去掉了對參數的合法性的檢查等細節,現在需要創建一個可以發放分紅的股票。紅利的多少和持有股票的數量成正比,不是所有的股票都是會有分紅的,所以不能直接在Stock類上直接增加這個功能,而是應該在Stock類的基礎上,繼承一個DividendStock類。並在這個子類中增加分紅的屬性和行為。
(1)一個用於記錄分紅的欄位dividents
(2)重寫父類的getProfit方法(在父類的getProfit方法的基礎上還要加上分紅的)
父類的getProfit+股票的總的分紅(也就是欄位dividents的值)
(3)增加計算分紅的方法,方法中的參數表示每股的紅利,可以理解為成員變數dividents賦值: 股票的總的分紅=每股的紅利*總股數
public void payDividend(double amountPerShare)
編寫一個測試的程序,創建一個名為」Oracle」的分紅股票,先後以單價32元購買200股,以單價40元購買350股。每股的分紅2.8元。這支股票的當前價格是每股50元。
Ⅳ 問一個Python分析股票價格的問題......
你先把價格按日期排序之後變成一個list的話,比如:
price=[70,74, 73, 72, 71,75]
你可以這么辦:
operations=[]
isLong=False
for i in range(len(price)-1):
if(not isLong):
if(price[i]<price[i+1]):
print "Go long on day " + str(i)
operations.append(-1);
isLong=True;
else:
operations.append(0);
else:
if(price[i]>price[i+1]):
print "Go short on day " + str(i)
operations.append(1);
isLong=False;
else:
operations.append(0);
if(isLong):
print "Go short on day " + str(len(price)-1)
operations.append(1)
else:
operations.append(0)
ProfitPerShare=0
for i in range(len(price)):
ProfitPerShare+=price[i]*operations[i]
print "Summary profit per share: "+str(ProfitPerShare)
這裡面就是說,如果你是空倉,那麼如果明天比今天高就買,否則明天買就比今天買更劃算;如果你不空倉,那麼如果明天比今天價低你就要清倉,否則明天賣就會更劃算。然後用一個叫operations的list來記錄你每天的操作,-1表示買,0表示沒有,1表示賣,所以最後可以計算每股獲得的收入price[i]*operations[i]的總和。
Ⅳ 如何用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量化交易
下面教你八步寫個量化交易策略——單股票均線策略
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,按照指示掃描二維碼,綁定微信,就能微信接收交易信號了。
Ⅶ 如何用python代碼判斷一段范圍內股票最高點
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
登錄
python+聚寬 統計A股市場個股在某時間段的最高價、最低價及其時間 原創
2019-10-12 09:20:50
開拖拉機的大寶
碼齡4年
關注
使用工具pycharm + 聚寬數據源,統計A股市場個股在某時間段的最高價、最低價及其時間,並列印excel表格輸出
from jqdatasdk import *
import pandas as pd
import logging
import sys
logger = logging.getLogger("logger")
logger.setLevel(logging.INFO)
# 聚寬數據賬戶名和密碼設置
auth('username','password')
#獲取A股列表,包括代號,名稱,上市退市時間等。
security = get_all_securities(types=[], date=None)
pd2 = get_all_securities(['stock'])
# 獲取股票代號
stocks = list(get_all_securities(['stock']).index)
# 獲取股票名稱
stocknames = pd2['display_name']
start_date = -01-01'
end_date = -12-31'
def get_stocks_high_low(start_date,end_date):
# 新建表,表頭列
# 為:"idx","stockcode","stockname","maxvalue","maxtime","lowvalue","lowtime"
result = pd.DataFrame(columns=["idx", "stockcode", "stockname", "maxvalue", "maxtime", "lowvalue", "lowtime"])
for i in range(0,stocks.__len__()-1):
pd01 = get_price(stocks[i], start_date, end_date, frequency='daily',
fields=None, skip_paused=False,fq='pre', count=None)
result=result.append(pd.DataFrame({'idx':[i],'stockcode':[stocks[i]],'stockname':
[stocknames[i]],'maxvalue':[pd01['high'].max()],'maxtime':
[pd01['high'].idxmax()],'lowvalue': [pd01['low'].min()], 'lowtime':
[pd01['low'].idxmin()]}),ignore_index=True)
result.to_csv("stock_max_min.csv",encoding = 'utf-8', index = True)
logger.warning("執行完畢!
Ⅷ 說明 Python 處理業財數據的應用場景,並寫出相應代碼。可以從采購業務、存貨
Python 是一種流行的編程語言,通常用卜叢於處理財務數據。一個常見的純盯應用是在數據分析和數據科學領域,Python強大的數據處理和可視化庫可用於分析大型數據集並識別數據中的趨勢和模式。
可用於分析財務數據的 Python 腳本的一個示例是計算指定時間段內特定股票平均價格的腳本。金融分析師可以使用此腳本來做弊和跟蹤股票的表現並預測其未來的價格走勢。
下面是計算股票平均價格的 Python 代碼示例:
在此代碼中,我們首先導入 and 庫,這些庫通常用於處理 Python 中的財務數據。然後,我們使用庫中的函數將庫存數據從 CSV 文件載入到 ,這是一種用於處理表格數據的強大數據結構。pandasnumpyread_csv()pandasDataFrame
接下來,我們使用對象中的函數來計算股票的平均價格。最後,我們將結果列印到控制台。mean()DataFrame
這只是Python如何用於財務數據分析的一個簡單示例。在這個領域使用Python還有許多其他應用和可能性,包括分析投資組合的表現,預測股票價格等等。
回答不易望請採納
Ⅸ 怎樣用python處理股票
用Python處理股票需要獲取股票數據,以國內股票數據為例,可以安裝Python的第三方庫:tushare;一個國內股票數據獲取包。可以在網路中搜索「Python tushare」來查詢相關資料,或者在tushare的官網上查詢說明文檔。
Ⅹ 用Python中的蒙特卡洛模擬兩支股票組成的投資組合的價格趨勢分析
蒙特卡洛模擬是一種模擬把真實系統中的概率過程用計算機程序來模擬的方法。對於投資組合的價格趨勢分析,可以使用Python中的蒙特卡洛模擬。首先,回顧投資組合的價格趨勢。投資組合中的股票價格的趨勢是受多種因素影響的,可分為經濟、政治和技術因素,其中經濟因素最重要。因此,蒙特卡洛模擬可以模擬這些因素對投資組合價格趨勢的影響,並通過計算機繪制投資組合價格趨勢的曲線。
Python中的蒙特卡洛模擬首先需要計算投資組合中各股票價格的每一期的收益率,其次,計算出投資組合的收益率;隨後,計算預測投資組合的期權價格,並將所有的期權價格疊加起來,從而繪制投資組合的價格曲線。最後,在投資組合的價格曲線的基礎上,可以分析投資組合在不同時期的價格走勢,並進行投資組合結構的調整,從而獲得最優投資組合。