close

一、前言

量化資料的入門在於回測你的策略,要先有好的策略不然其他都是免談!

本篇手把手教學讓你能建構出屬於你的策略!這專題會分為兩篇文章!

全部有以下內容:

上篇:1.下載股票資料 2.資料預處理 3.計算技術指標 5.敘述統計

下篇:1.策略視覺化 2.策略回測績效 3.策略評估

直接推開你量化交易的大門!

建議對DataFrame不熟的可以先看:

【Pandas】資料量化必學的DataFrame用法不會要吃虧喔:資料運算也就這幾個概念拉!

 

二、下載股票資料

mport pandas, numpy
import pandas_datareader as web # 下載股價資料
import talib # 技術指標套件 pip install TA-LIB
import talib.abstract as abstract
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec

# 下載股票資料 #################################################################
start = '2018-01-01'
end = '2020-12-31'


ticker = '2330.TW' # 下載台積電股票資料
df = web.DataReader(ticker, data_source='yahoo', start='2001-01-01')

這使用過非常多次了,不會的可以看:【Python量化資料】用Python抓取Yahoo Finance、investing.com股價資料

image

 

三、資料處理

# 資料處理 #####################################################################
df = df.dropna() # 去除nan值
df = df[df['Volume'] != 0] # 去除成交量等於0 沒有開盤意思

為了防止「垃圾進,垃圾出」的問題發生,一定要先進行資料的預處理,

Yahoo Finance裡的台股資料因為某些關係會出現我們沒開盤他們有紀錄的狀況,

所以資料裡面會出現交易量為0或是nan(遺失值),我們這邊排除問題。

df['Volume'] != 0使交易量不等於0的為True,此時用df[df['Volume'] != 0]包起來就可以找出交易量為0的資料。

image

 

四、計算技術指標

# 計算技術指標 #################################################################
## 方法一 手動算
df['SMA5'] = df['Close'].rolling(5).mean() # 計算5日移動平均

## 方法二 套件算talib
df['SMA20'] = talib.SMA(df['Close'], 20) # 計算20日移動平均
macd, macdsignal, macdhist = talib.MACD(df['Close'], 5, 20, 10) # 計算macd
df['dif'], df['macd'], df['osc'] = macd, macdsignal, macdhist

計算技術指標,不會的可以看:【Talib】Python一次就裝好talib的方法及使用talib計算上百種技術分析指標

這邊提到的兩個方法,如果你要使用的技術指標talib沒有支援,那麼就只好動手算了!

image

 

五、敘述統計

# 敘述統計 #####################################################################
des = df.describe()

總要知道自己指標的狀況跟整個資料的狀況吧,不然怎麼寫策略!?

image

 

六、後記

下一篇我們來看:

1.資料視覺化 2.策略回測績效 3.策略評估

【Python量化資料】這樣買台積電會賺嗎?手把手教你策略回測與績效分析(下)

arrow
arrow

    恩哥Python 發表在 痞客邦 留言(0) 人氣()