1027-股票择时--框架

import pandas as pd
pd.set_option('expand_frame_repr',False)  #当列多时不换行

#=========读入数据
df = pd.read_csv('filename',encoding='gbk')
df.columns = [i.encode('utf-8') for i in df.columns]
df = df[['交易日期','股票代码','开盘价','收盘价','最高价','最低价','涨跌幅','成交量']]
df.sort_values(by=[' 交易日期'], inplace=True)
df.reset_index(inplace=True, drop=True)

#===========计算复权价、
df['复权因子'] = (df['涨跌幅']+1).cumprod()
initial_price = df.iloc[0]['收盘价']/(1+df.iloc[0]['涨跌幅'])
df['收盘价—后复权'] = initial_price * df['复权因子']
df['开盘价—后复权'] = df['开盘价']/df['收盘价'] * df['收盘价-后复权']
df['最高价—后复权'] = df['最高价']/df['收盘价'] * df['收盘价-后复权']
df['最低价—后复权'] = df['最低价']/df['收盘价'] * df['收盘价-后复权']
df[['开盘价''最高价','最低价','收盘价']] = df[['收盘价—后复权','开盘价—后复权','最高价—后复权','最低价—后复权']]
df = df[['交易日期','股票代码','开盘价','收盘价','最高价','最低价','涨跌幅','成交量']]

#===========计算均线策略
#均线策略
#当短期均线上穿长期均线时,第二天以开盘价全仓买入,并在之后一直持有
#当短期均线下穿长期均线时,第二天开盘卖出,并空仓,直到下一次买入

#=======计算均线
ma_short = 5  #ma==moving_average
ma_long = 50    #长期均线
df['ma_short'] = df['收盘价'].rolling(ma_short,min_periods=1).mean()
df['ma_long'] = df['收盘价'].rolling(ma_long,min_periods=1).mean()

#将缺失的均线补齐
# df['ma_short'].fillna(value=df['收盘价'].expanding().mean(),inplace=True)
# df['ma_long'].fillna(value=df['收盘价'].expanding().mean(),inplace=True)
print(df)
exit()
#补全数据还可以使用rolling函数中的min_periods参数
#==============找出买出信号
condition1 = (df['ma_short'] >= df['ma_long'])
condition2 = (df['ma_short'].shift(1) < df['ma_long'].shift(1))
#将买入信号当天的signal设置为1
df.lor[condition1 & condition2,'signal'] = 0
print(df[['ma_short','ma_long','signal']])
exit()
#将无关变量剔除
df.drop(['ma_short','ma_long'], axis=1, inplace=True)
发布了86 篇原创文章 · 获赞 5 · 访问量 2416

猜你喜欢

转载自blog.csdn.net/yuge1023/article/details/102764804