怎么说呢,我希望得到一个数据,就是某个K线的影线长短。可以这样算,用高点和低点的差值作为分母,开盘价和收盘价的差值的绝对值作为分子,得出的值得越大,说明影线越长,影线越长,说明上传下跳得越厉害,也就是震荡得越厉害。我喜欢这种个股。
步骤:
1,获得K线数据
2,新增一列,计算影线长度占比
-
- import pandas as pd
- import numpy as np
- import tkinter as tk
- from tkinter import filedialog
- import os
-
- path=''
-
- def open_file():
- global path
- path = filedialog.askopenfilename(initialdir="./", title="Select file", filetypes=(("Text files", "*"), ("All files", "*.*")))
- print("Selected file:", path)
- root.quit() # 选择完文件后退出主循环
-
- root = tk.Tk()
- root.title("File Selector")
-
- button = tk.Button(root, text="Open File", command=open_file)
- button.pack()
-
- root.mainloop()
-
- # 读取表格数据
- df = pd.read_csv(path, delimiter=',')
-
- # 计算影线长度占比
- df['影线长度占比'] = 1- (abs(df['开盘'] - df['收盘'])) / (df['最高'] - df['最低'])
-
- # 如果分母为0,将影线长度占比设为0
- df = df.replace({'影线长度占比': {0: np.nan}}) # 将0替换为NaN,方便后续处理
-
- # 使用条件判断,如果分母为0,则影线长度占比设为0,否则保持原值
- df['影线长度占比'] = df['影线长度占比'].apply(lambda x: 0 if x == 0 else x)
- df['影线长度占比'] = df['影线长度占比'].round(3)
-
- filename = os.path.basename(path)
- # 保存到新的CSV文件
- # df.to_csv('002456_2018_new.csv', index=False)
- df.to_csv('shadow_'+filename, index=False)
- print("已经保存文件--shadow_"+filename)
-
- # 计算均值
- 影线长度占比 = df['影线长度占比']
- 均值 = 影线长度占比.mean()
-
- print("影线长度占比均值:", 均值)
-
-
K线数据的获取,参考再《005》
效果: