[关闭]
@Channelchan 2018-04-10T19:28:46.000000Z 字数 3220 阅读 78332

条件过滤

  1. 读取本地数据
  2. 基本面因子(过滤指数成分停牌涨跌停)
  3. 技术因子与事件驱动(可买可卖)

1_读取本地数据

  1. import jaqs_fxdayu
  2. jaqs_fxdayu.patch_all()
  3. from jaqs.data import DataView
  4. from jaqs.data import RemoteDataService
  5. import os
  6. import numpy as np
  7. import warnings
  8. warnings.filterwarnings("ignore")
D:\Anaconda3\lib\importlib\__init__.py:126: FutureWarning: The pandas.core.datetools module is deprecated and will be removed in a future version. Please use the pandas.tseries module instead.
  return _bootstrap._gcd_import(name[level:], package, level)
D:\Anaconda3\lib\site-packages\matplotlib\__init__.py:1405: UserWarning: 
This call to matplotlib.use() has no effect because the backend has already
been chosen; matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.

  warnings.warn(_use_error_msg)
  1. dataview_folder = './JAQS_Data/hs300'
  2. dv = DataView()
  3. dv.load_dataview(dataview_folder)
Dataview loaded successfully.

3_过滤停牌涨跌停(可买可卖)

mask_index_member为要过滤的为True

can_enter与can_exit皆为可交易为True

  1. from jaqs_fxdayu.util import dp
  2. from jaqs.data.dataapi import DataApi
  3. def mask_index():
  4. df_index_member = dv.get_ts('index_member')
  5. mask_index_member = df_index_member==0 #定义信号过滤条件-非指数成分
  6. return mask_index_member
  7. def limit_up_down():
  8. # 定义可买卖条件——未停牌、未涨跌停
  9. trade_status = dv.get_ts('trade_status')
  10. mask_sus = trade_status == u'停牌'
  11. # 涨停
  12. # dv.remove_field('up_limit')
  13. dv.add_formula('up_limit', '(close - Delay(close, 1)) / Delay(close, 1) > 0.095', is_quarterly=False, add_data=True)
  14. # 跌停
  15. # dv.remove_field('down_limit')
  16. dv.add_formula('down_limit', '(close - Delay(close, 1)) / Delay(close, 1) < -0.095', is_quarterly=False, add_data=True)
  17. can_enter = np.logical_and(dv.get_ts('up_limit') < 1, ~mask_sus) # 未涨停未停牌
  18. can_exit = np.logical_and(dv.get_ts('down_limit') < 1, ~mask_sus) # 未跌停未停牌
  19. return can_enter,can_exit
  1. mask_index_member = mask_index()
  2. can_enter,can_exit = limit_up_down()
Field [up_limit] is overwritten.
Field [down_limit] is overwritten.
  1. # dv.remove_field('mask_index_member')
  2. # dv.remove_field('can_enter')
  3. # dv.remove_field('can_exit')
  1. dv.append_df(mask_index_member, 'mask_index_member')
  2. dv.append_df(can_enter, 'can_enter')
  3. dv.append_df(can_exit, 'can_exit')
Field [mask_index_member] is overwritten.
Field [can_enter] is overwritten.
Field [can_exit] is overwritten.
  1. dv.save_dataview('./JAQS_Data/hs300')
Store data...
Dataview has been successfully saved to:
E:\QTC\PythonQTC\course\3_JAQS\JAQS_Data\hs300

You can load it with load_dataview('E:\QTC\PythonQTC\course\3_JAQS\JAQS_Data\hs300')
  1. print(dv.get_ts('mask_index_member').head())
symbol      000001.SZ  000002.SZ  000008.SZ  000009.SZ  000012.SZ  000021.SZ  \
trade_date                                                                     
20120105        False      False       True      False      False      False   
20120106        False      False       True      False      False      False   
20120109        False      False       True      False      False      False   
20120110        False      False       True      False      False      False   
20120111        False      False       True      False      False      False   

symbol      000024.SZ  000027.SZ  000031.SZ  000039.SZ    ...      601998.SH  \
trade_date                                                ...                  
20120105        False      False       True      False    ...          False   
20120106        False      False       True      False    ...          False   
20120109        False      False       True      False    ...          False   
20120110        False      False       True      False    ...          False   
20120111        False      False       True      False    ...          False   

symbol      603000.SH  603160.SH  603288.SH  603699.SH  603799.SH  603833.SH  \
trade_date                                                                     
20120105         True       True       True       True       True       True   
20120106         True       True       True       True       True       True   
20120109         True       True       True       True       True       True   
20120110         True       True       True       True       True       True   
20120111         True       True       True       True       True       True   

symbol      603858.SH  603885.SH  603993.SH  
trade_date                                   
20120105         True       True       True  
20120106         True       True       True  
20120109         True       True       True  
20120110         True       True       True  
20120111         True       True       True  

[5 rows x 539 columns]
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注