一、获取国内股票代码

import tushare
import pandas
import datetime
tickersRawDate = tushare.get_stock_basics()
#日期是索引,所以这里是index.tolist
tickers = tickersRawDate.index.tolist()
print(tickers)

备注:使用to_CSV的话,使用excel打开会乱码,用sublime打开就不会了。

效果展示:

python股票自动化交易 股票自动化交易编程_sed

备注:如何在sublime中执行python

点击右下角的一个图标,在弹出的菜单中选择“console”,然后按“Ctrl+B”

python股票自动化交易 股票自动化交易编程_python股票自动化交易_02

二、获取国外股票代码

import requests
import pandas
import io
import datetime
import os
import time
def dataframeFromUrl(url):
dataString = requests.get(url).content
parsedResult = pandas.read_csv(io.StringIO(dataString.decode('utf-8')), index_col=0)
return parsedResult
def stockPriceIntraday(ticker, folder):
# Step 1. Get data online
url = 'https://www.alphavantage.co/query?apikey=NGV2US07ZZQULVGP&function=TIME_SERIES_INTRADAY&symbol={ticker}&interval=1min&outputsize=full&datatype=csv'.format(ticker=ticker)
intraday = dataframeFromUrl(url)
# Step 2. Append if history exists
file = folder+'/'+ticker+'.csv'
if os.path.exists(file):
history = pandas.read_csv(file, index_col=0) #将第0行,第0列作为它的索引列。
intraday.append(history)
# Step 3. Inverse based on index
intraday.sort_index(inplace=True) #sort_index是指按index建立索引
#intraday.index.name = 'timestamp' #修改index的name
# Step 4. Save
intraday.to_csv(file)
print ('Intraday for ['+ticker+'] got.')
# Step 1. Get ticker list online
tickersRawData = dataframeFromUrl('https://www.nasdaq.com/screening/companies-by-industry.aspx?exchange=NASDAQ&&render=download')
tickers = tickersRawData.index.tolist()
# Step 2. Save the ticker list to a local file
dateToday = datetime.datetime.today().strftime('%Y%m%d')
file = '../02. Data/00. TickerListUS/TickerList'+dateToday+'.csv'
tickersRawData.to_csv(file)
print ('Tickers saved.')
# Step 3. Get stock price (intraday)
for i, ticker in enumerate(tickers):
try:
print ('Intraday', i, '/', len(tickers))
stockPriceIntraday(ticker, folder='../02. Data/01. IntradayUS')
time.sleep(2)
except:
pass
print ('Intraday for all stocks got.')


三、生成散点图、K线图

import pandas
import matplotlib
import mpl_finance
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
#matplotlib.style.use('dark_background')
def stockPricePlot(ticker):
# Step 1. Load Data
history = pandas.read_csv('../02. Data/01. IntradayUS/'+ticker+'.csv', parse_dates=True, index_col=0)
# Step 2. Data Manipulation
close = history['close'] #这里close会自动带上timestamp的索引。
close = close.reset_index() #增加一个额外的索引列,从0开始
#matplot对时间要求很高,要求转化成它内部的一个整数型数组(映射到matlib的整数域)
close['timestamp'] = close['timestamp'].map(matplotlib.dates.date2num)
ohlc = history[['open', 'high', 'low', 'close']].resample('1H').ohlc() #按1小时重新采样
ohlc = ohlc.reset_index()
ohlc['timestamp'] = ohlc['timestamp'].map(matplotlib.dates.date2num)
# Step 3. Plot Figures. Subplot 1: scatter plot. Subplot 2: candle stick plot.
# Step 3.1. Subplot 1: scatter plot
#总图表2行一列,这个散点图在0行0列开始,占据一行,一列
subplot1 = plt.subplot2grid((2,1), (0,0), rowspan=1, colspan=1)
subplot1.xaxis_date() #为了让横轴设置成时间
subplot1.plot(close['timestamp'], close['close'], 'b.') #分别是x轴、y轴、蓝色
plt.title(ticker) #图的标题
# Step 3.2. Subplot 2: candle stick plot
subplot2 = plt.subplot2grid((2,1), (1,0), rowspan=1, colspan=1, sharex=subplot1) #sharex=subplot1表示和subplot1共享X轴
#ax为画图的位置,quotes是数据
mpl_finance.candlestick_ohlc(ax=subplot2, quotes=ohlc.values, width=0.01, colorup='g', colordown='r')
plt.show()
stockPricePlot('AAON')

成果展示:

python股票自动化交易 股票自动化交易编程_ide_03