(1)打开Spyder软件,在目录D:\zwPython\zwrk\1_Quant_TensorFlow,新建文件
31-StockMovementRateCalculation.py
# -*- coding: utf-8 -*-
"""
Created on Fri Feb 14 20:50:29 2025
Stock movement rate calculation
@author: Administrator
"""
import sys, os
sys.path.append("topqt/")
import numpy as np
import pandas as pd
import tushare as ts
import plotly as py
import plotly.figure_factory as pyff
import math,arrow,ffn
import pypinyin
import pandas_datareader as pdr
import matplotlib.pyplot as plt
import zsys2025 #20250213
import ztools as zt
import ztools_str as zstr
import ztools_data2025 as zdat
import ztools_draw2025 as zdr
import ztools_tq2025 as ztq #20250213
import zpd_talib2025 as zta
#1
fss='data/600663.csv'
print('\n#1 fss,',fss)
df=pd.read_csv(fss,index_col=0)
df=df.sort_index(ascending=True);
print(df.tail())
#2 计算衍生参数
vlst=list(range(1,10))
print('\n#2 vlst,',vlst)
df=zta.mul_talib(zta.ROC,df, ksgn='close',vlst=zsys2025.ma100Lst_var)
print(df.head())
print(df.tail())
#
print('\n#3 roc01')
close_d0=df['close'][0]
close_d1=df['close'][1]
roc1=(close_d1 - close_d0)/close_d0
print('close_d0,d1:',close_d0,close_d1)
print('roc1:',roc1)
(2)程序输出结果
runfile('D:/zwPython/zwrk/1_Quant_TensorFlow/31-StockMovementRateCalculation.py', wdir='D:/zwPython/zwrk/1_Quant_TensorFlow')
Reloaded modules: zsys2025, ztools, zsys, ztools_str, ztools_web, ztools_data, ztools_tq, zpd_talib, ztools_data2025, zpd_talib2025, ztools_draw2025, ztools_tq2025
#1 fss, data/600663.csv
open high low close volume
date
2017-09-04 24.26000 24.40000 24.20000 24.27000 25418.00000
2017-09-05 24.20000 24.28000 23.91000 24.00000 35635.00000
2017-09-06 23.88000 24.00000 23.64000 23.71000 38661.00000
2017-09-07 23.70000 24.02000 23.70000 23.84000 24343.00000
2017-09-08 23.72000 24.00000 23.68000 23.76000 23190.00000
#2 vlst, [1, 2, 3, 4, 5, 6, 7, 8, 9]
open high low close volume roc_2 roc_3 roc_5 roc_10 roc_15 roc_20 roc_25 roc_30 roc_50 roc_100
date
1994-01-03 3.91300 4.02200 3.86700 3.98600 43822.57000 nan nan nan nan nan nan nan nan nan nan
1994-01-04 4.02600 4.21100 3.99800 4.20400 54842.36000 0.05469 nan nan nan nan nan nan nan nan nan
1994-01-05 4.20000 4.37800 4.10400 4.35200 69982.39000 0.03520 0.09182 nan nan nan nan nan nan nan nan
1994-01-06 4.34400 4.52900 4.31600 4.40000 98823.97000 0.01103 0.04662 nan nan nan nan nan nan nan nan
1994-01-07 4.40000 4.45500 4.32700 4.39100 53383.72000 -0.00205 0.00896 0.10161 nan nan nan nan nan nan nan
open high low close volume roc_2 roc_3 roc_5 roc_10 roc_15 roc_20 roc_25 roc_30 roc_50 roc_100
date
2017-09-04 24.26000 24.40000 24.20000 24.27000 25418.00000 -0.00288 -0.00858 -0.01261 -0.00123 -0.00858 0.00289 -0.02098 0.06869 0.02926 0.05197
2017-09-05 24.20000 24.28000 23.91000 24.00000 35635.00000 -0.01112 -0.01397 -0.02597 -0.00703 -0.02001 -0.02558 -0.00291 0.05171 0.01652 0.04698
2017-09-06 23.88000 24.00000 23.64000 23.71000 38661.00000 -0.01208 -0.02307 -0.03145 -0.02428 -0.03382 -0.04626 -0.03852 0.03222 0.00937 0.03388
2017-09-07 23.70000 24.02000 23.70000 23.84000 24343.00000 0.00548 -0.00667 -0.02054 -0.02014 -0.01650 -0.04564 -0.02495 0.04470 0.00846 0.01094
2017-09-08 23.72000 24.00000 23.68000 23.76000 23190.00000 -0.00336 0.00211 -0.02101 -0.03100 -0.03020 -0.04078 -0.02862 0.00465 0.00465 0.02857
#3 roc01
close_d0,d1: 3.986 4.204
roc1: 0.05469141996989451
(3)程序代码注释
# -*- coding: utf-8 -*-
# 声明文件使用 UTF-8 编码,确保可以处理包含非 ASCII 字符的文本
"""
Created on Fri Feb 14 20:50:29 2025
Stock movement rate calculation
@author: Administrator
"""
# 文档字符串,记录代码的创建时间、程序功能和作者信息,表明此代码用于股票移动率计算
import sys, os
# 导入 sys 和 os 模块
# sys 模块提供与 Python 解释器和系统相关的功能,如修改模块搜索路径
# os 模块提供与操作系统交互的功能,如文件和目录操作
sys.path.append("topqt/")
# 将 'topqt/' 目录添加到 Python 的模块搜索路径中,以便后续导入该目录下的自定义模块
import numpy as np
# 导入 numpy 库并别名为 np,numpy 用于数值计算和数组操作
import pandas as pd
# 导入 pandas 库并别名为 pd,pandas 用于数据处理和分析
import tushare as ts
# 导入 tushare 库,用于获取财经数据
import plotly as py
# 导入 plotly 库并别名为 py,plotly 用于创建交互式可视化图表
import plotly.figure_factory as pyff
# 从 plotly 库中导入 figure_factory 模块并别名为 pyff,用于创建特定类型的图表
import math,arrow,ffn
# 导入 math 模块用于数学计算,arrow 模块用于处理日期和时间,ffn 模块用于金融数据分析
import pypinyin
# 导入 pypinyin 库,用于将中文转换为拼音
import pandas_datareader as pdr
# 导入 pandas_datareader 库并别名为 pdr,用于从不同数据源读取数据
import matplotlib.pyplot as plt
# 导入 matplotlib 库的 pyplot 模块并别名为 plt,用于创建静态可视化图表
import zsys2025 #20250213
# 导入自定义模块 zsys2025,注释表明该模块在 2025 年 2 月 13 日有相关操作
import ztools as zt
# 导入自定义模块 ztools 并别名为 zt
import ztools_str as zstr
# 导入自定义模块 ztools_str 并别名为 zstr
import ztools_data2025 as zdat
# 导入自定义模块 ztools_data2025 并别名为 zdat
import ztools_draw2025 as zdr
# 导入自定义模块 ztools_draw2025 并别名为 zdr
import ztools_tq2025 as ztq #20250213
# 导入自定义模块 ztools_tq2025 并别名为 ztq,注释表明该模块在 2025 年 2 月 13 日有相关操作
import zpd_talib2025 as zta
# 导入自定义模块 zpd_talib2025 并别名为 zta
#1
fss='data/600663.csv'
# 定义要读取的 CSV 文件的路径,该文件可能包含股票数据
print('\n#1 fss,',fss)
# 打印文件路径信息
df = pd.read_csv(fss, index_col=0)
# 使用 pandas 的 read_csv 函数读取指定路径的 CSV 文件
# index_col=0 表示将第一列作为 DataFrame 的索引
df = df.sort_index(ascending=True)
# 按照索引对 DataFrame 进行升序排序,确保数据按索引顺序排列
print(df.tail())
# 打印 DataFrame 的最后几行数据,查看数据的基本情况
#2 计算衍生参数
vlst = list(range(1, 10))
# 创建一个包含从 1 到 9 的整数列表,可能用于后续计算的周期参数
print('\n#2 vlst,', vlst)
# 打印该列表信息
df = zta.mul_talib(zta.ROC, df, ksgn='close', vlst=zsys2025.ma100Lst_var)
# 调用 zta 模块中的 mul_talib 函数进行多个周期的 ROC(Rate of Change,变动率指标)计算
# 参数说明:
# zta.ROC:要使用的计算函数,这里是计算 ROC 的函数
# df:要处理的 DataFrame
# ksgn='close':指定计算 ROC 时使用的列名为 'close'(收盘价)
# vlst=zsys2025.ma100Lst_var:指定计算 ROC 的周期列表,来自 zsys2025 模块的 ma100Lst_var 变量
print(df.head())
# 打印 DataFrame 的前几行数据,查看计算后的结果
print(df.tail())
# 打印 DataFrame 的最后几行数据,查看计算后的结果
#
print('\n#3 roc01')
# 打印提示信息,表示开始手动计算第一天的 ROC
close_d0 = df['close'][0]
# 获取 DataFrame 中 'close' 列的第一个值,即第一天的收盘价
close_d1 = df['close'][1]
# 获取 DataFrame 中 'close' 列的第二个值,即第二天的收盘价
roc1 = (close_d1 - close_d0) / close_d0
# 手动计算第一天到第二天的 ROC,公式为 (当前收盘价 - 前一天收盘价) / 前一天收盘价
print('close_d0,d1:', close_d0, close_d1)
# 打印第一天和第二天的收盘价信息
print('roc1:', roc1)
# 打印手动计算得到的 ROC 值
(4)涉及的函数:
def ROC(df, n,ksgn='close'):
'''
def ROC(df, n,ksgn='close'):
变动率(Rate of change,ROC)
ROC是由当天的股价与一定的天数之前的某一天股价比较,其变动速度的大小,来反映股票市场变动的快慢程度。
ROC,也叫做变动速度指标、变动率指标或变化速率指标。
【输入】
df, pd.dataframe格式数据源
n,时间长度
ksgn,列名,一般是:close收盘价
【输出】
df, pd.dataframe格式数据源,
增加了一栏:_{n},输出数据
'''
xnam='roc_{n}'.format(n=n)
M = df[ksgn].diff(n - 1)
N = df[ksgn].shift(n - 1)
ROC = pd.Series(M / N, name = xnam)
df = df.join(ROC)
return df
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/907132
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!