说明
前面我写好了一些因子,比如真实换手率,区间净额,
我准备把他们作为特征变量,特征变量还有基础的日线数据和周线数据。
总共40个训练特征量,1个目标特征量
目标特征量是未来五天的情况,如果最高价超过当日收盘价的百分之五,标签为1
如果最低价低于当日收盘价的百分之五,标签为-1,其他为0,另外如果既有上涨百分之五和下跌百分之五,打1.
时间有点晚了,直接贴代码把。
def get_modoel_data_zjgk(start_date,end_date):
#先获取日线数据
df = pro.query('daily',ts_code='600895.SH',start_date=start_date,end_date=end_date)
df=label_daily_data(df,0.05,5)
df1=df[['ts_code','trade_date','open','high','low','close','pre_close','change','pct_chg','vol','amount','label']]
df1.head()
# 使用 apply 方法并合并返回的数据
new_data1 = df1.apply(add_week_data, axis=1)
new_data2=df1.apply(add_turnover_rate, axis=1)
new_data3=df1.apply(add_unusual_capital_flow, axis=1)
# 将新数据合并到原 DataFrame
df2 = pd.concat([df1, new_data1], axis=1)
df3=pd.concat([df2, new_data2], axis=1)
df4=pd.concat([df3, new_data3], axis=1)
df4.fillna(0, inplace=True)
# 删除 ts_code 和 trade_date 列
df4.drop(columns=['ts_code', 'trade_date'], inplace=True)
return df4
# 定义函数来提取数据并扩展到DataFrame中
def add_week_data(row):
data = get_previous_trading_days_summary(row['ts_code'], row['trade_date'])
return pd.Series(data)
def add_turnover_rate(row):
data=get_real_turnover_ratio(row['ts_code'], row['trade_date'])
return pd.Series(data)
def add_unusual_capital_flow(row):
data=return_zjgk_unusual_price(row['trade_date'],row['trade_date'],row['ts_code'])
return pd.Series(data)