python |
您所在的位置:网站首页 › 股票的每日的涨跌是根据什么来看 › python |
炒股的人通常都喜欢各种技术指标,来指定买卖策略,然而我们却经常看到股民们亏钱,难道是这些指标有问题吗?还是专家在忽悠股民朋友们?将以非常简单的均线指标为例,来挖掘其在一只股票上的绩效潜力。 实现流程的简单梳理1.读取数据,了解数据的结构 2.对读取的数据进行清洗,使数据符合进一步分析 3.计算相应的股票日涨跌幅度 4.通过画图来展示: a.基于回测资金曲线 b.股票k线图 c.参数优化的热力图 读取数据 注意事项:pd.read_excel()有两个设置参数,分别是: 1.parse_dates:是指将指定列转化为时间类型格式,注意是列表形式指定列[“交易日期”] 2.index_cel:是指将指定列变为行索引index # 导包 import pandas as pd df = pd.read_excel("sz002115",parse_dates=["加油日期"],index_cel="交易日期")主要是后面的作图,直接传入时间数据为y轴,用str数据类型,有可能不会被识别. 最后我们查看一下数据的基本构造,看数据是否有空值,是否需要填充 df.info()1.股票涨跌幅:股票每天相对的昨日收盘价的涨跌幅 2.股票涨跌停价格:股票每一天的涨停价,跌停价 3.复权:把复权简单理解为就是排除送股,配股,分红等影响因素。 计算股票涨跌幅 df["涨跌幅"] = df["收盘价"]/df["前收盘价"]-1 注意事项使用前收盘价,而非用开盘价,是为了避免因为送股,配股,分红等影响因素的股价不合理变化. 计算股票涨跌停 df["涨停价"] = df["前收盘价"]*1.1 df["跌停价"] = df["前收盘价"]*0.8 计算股票后复权价格 概念解析前复权处理:股票最近一天价格不变,之前数据按照真实日涨跌幅做调整; 后复权处理:股票上市第一天价格不变,之后数据按照真实日涨跌幅做调整;(后复权类似于基金净值的统计) 计算股票资金曲线所谓资金曲线,即把股票上市第一天的净值设为1,之后每天净值随真实日涨跌幅波动的曲线 1+涨跌幅 我们的到的是涨跌比例,我们把每一天的涨跌比例累程起来.我们的到一个1+涨跌幅的累乘数据,在做归一化 df[“xxx”].iat[x] 当前"xxx"这一列的第x值 loc与ilocloc是标签名,不带i的是名字 iloc是位置号,带i的就是index位置 取数据都遵循:左行右列loc[左行,有列] iloc[左行,右列] 计算后复权价格格式: 收盘后复权 = 第一天的当日收盘价(固定值) * 资金曲线的值 (一直在变动反应股票涨跌变化情况的值) 其他后复权,求出对于收盘价的涨跌幅后乘上收盘价后复权 涨跌幅 * 收盘价后复权 df["收盘价_后复权"] = df["资金曲线"] * df["收盘价"].iat[0] # 股票第一天的价格不变作为基准价 df["开盘价_后复权"] = df["开盘价"]/df["收盘价"]*df["收盘价_后复权"] df["最高价_后复权"] = df["最高价"]/df["收盘价"]*df["收盘_后复权"] df["最低价_后复权"] = df["最低价"]/df["收盘价"]*df["收盘_后复权"] # 生成新的4个字段 df[["开盘价_后复权","最高价_后复权","最低价_后复权","收盘价_后复权"]]pandasSeries.rolling(n)是表示对一列的n个数据做滚动处理,rolling(3).mean()表示 对滚动的数据做均值计算,并且记录在最后一行
对于短周期均线前天小后天大是上传买入信号,前天大后天小是下穿卖出信号 ## 1位买入信号 df.loc[(df["MA50"]df["MA200"].shift(1)), "交易信号"]=1 # 0卖出信号 df.loc[(df["MA50"]>df["MA200"])& (df["MA50"].shift(1)=df["涨停价"])& (df["交易信号"]==1), "交易信号"]=None df.loc[(df["收盘价"]'股票资金曲线终值':df['资金曲线'].iat[-1], '策略资金曲线终值':df['资金曲线_策略'].iat[-1], '相对收益':df['资金曲线_策略'].iat[-1]/df['资金曲线'].iat[-1], '总交易次数':df['持仓分组'].unique().shape[0], '平均持仓时间':(df.index[-1]-df.index[0])/df['持仓分组'].unique().shape[0], '历史最大回撤':df['最大回撤'].max(), '股票夏普率':df['涨跌幅'].mean()/df['涨跌幅'].std(ddof=0), '策略夏普率':df['涨跌幅_策略'].mean()/df['涨跌幅_策略'].std(ddof=0)} # 调用函数,把原始的df_ma数据传入资金曲线计算函数 result = fund_curve(df_ma) # 查看绩效指标,并绘制资金曲线对比可视化图表 print(result[1]) result[0][['资金曲线','资金曲线_策略']].plot(figsize=(20,8),grid=True)
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |