6. 计算跟踪止损单价格

  1. # pip install pandas_datareader 或 conda install pandas_datareader,来安装pandas_datareader
  2. In[47]: import pandas_datareader as pdr

笔记:pandas_datareader的问题
pandas_datareader在读取“google”源时会有问题。如果碰到问题,切换到“Yahoo”。

  1. # 查询特斯拉在2017年第一天的股价
  2. In[49]: tsla = pdr.DataReader('tsla', data_source='yahoo',start='2017-1-1')
  3. tsla.head(8)
  4. Out[49]:

6. 计算跟踪止损单价格 - 图1

  1. # 只关注每天的收盘价,使用cummax得到迄今为止的收盘价最大值
  2. In[50]: tsla_close = tsla['Close']
  3. In[51]: tsla_cummax = tsla_close.cummax()
  4. tsla_cummax.head(8)
  5. Out[51]:

6. 计算跟踪止损单价格 - 图2

  1. # 将下行区间限制到10%,将tsla_cummax乘以0.9
  2. >>> tsla_trailing_stop = tsla_cummax * .9
  3. >>> tsla_trailing_stop.head(8)
  4. Date
  5. 2017-01-03 195.291
  6. 2017-01-04 204.291
  7. 2017-01-05 204.291
  8. 2017-01-06 206.109
  9. 2017-01-09 208.152
  10. 2017-01-10 208.152
  11. 2017-01-11 208.152
  12. 2017-01-12 208.152
  13. Name: Close, dtype: float64

更多

  1. # 将上述功能包装成一个函数
  2. In[52]: def set_trailing_loss(symbol, purchase_date, perc):
  3. close = pdr.DataReader(symbol, 'yahoo', start=purchase_date)['Close']
  4. return close.cummax() * perc
  5. In[53]: tsla_cummax = tsla_close.cummax()
  6. tsla_cummax.head(8)
  7. Out[53]:

6. 计算跟踪止损单价格 - 图3