AI使用TA-Lib全部模式识别函数识别K线形态
编辑
0
2025-06-24

提示词
我希望获取TA-Lib中识别K线形态的所有函数,然后通过循环的方式用这些函数对一个包含OHLC数据的DataFrame进行模式识别,最后将识别的结果保存到一个新的DataFrame中,不需要可视化,请给出示例代码。
答案
import pandas as pd
import talib
# 假设df是包含OHLC数据的DataFrame,索引为日期
# 列名应为:'open', 'high', 'low', 'close' (小写)
# 示例数据:
# df = pd.DataFrame({
# 'open': [ ... ],
# 'high': [ ... ],
# 'low': [ ... ],
# 'close': [ ... ]
# }, index=pd.DatetimeIndex([ ... ]))
# 获取所有以"CDL"开头的形态识别函数名
pattern_functions = [func for func in dir(talib) if func.startswith('CDL')]
# 创建新的DataFrame存储结果
pattern_df = pd.DataFrame(index=df.index)
# 循环应用所有形态识别函数
for pattern_func in pattern_functions:
try:
# 获取函数对象
func = getattr(talib, pattern_func)
# 应用函数识别形态
pattern_result = func(df['开盘价'], df['最高价'], df['最低价'], df['收盘价'])
# 将结果保存到新DataFrame
pattern_df[pattern_func] = pattern_result
except Exception as e:
print(f"Error processing {pattern_func}: {str(e)}")
pattern_df[pattern_func] = None # 出错时填充None
# 查看结果
print(f"识别了{len(pattern_functions)}种K线形态")
print(pattern_df.tail())
# 可选:保存结果到CSV文件
# pattern_df.to_csv('kline_pattern_results.csv')
# 可选:筛选出现特定形态的日期
# 例如筛选早晨之星(CDLMORNINGSTAR)
# morning_star_dates = pattern_df[pattern_df['CDLMORNINGSTAR'] > 0].index
我修改了表格列名的代码,其余都是ai写的。
结果:
进一步筛选
提示词
# Python代码
# 获取Pattern Recognition组中的所有函数
pattern_recognition_functions = talib.get_function_groups()['Pattern Recognition']
# 创建新的DataFrame来存储模式识别的结果
pattern_results = pd.DataFrame(index=df.index)
# 用循环识别并存储K线形态结果
for pattern_function in pattern_recognition_functions:
result = getattr(talib, pattern_function)(df['开盘价'],
df['最高价'],
df['最低价'],
df['收盘价'])
pattern_results[pattern_function] = result
# 显示新的DataFrame
pattern_results.tail()
上面这个保存结果的DataFrame中,需要将最后一条记录中,不等于0的列筛选出来,请给出示例代码。
答案
# 获取最后一行数据
last_row = pattern_results.iloc[-1] # 提取最后一行作为Series
# 筛选非零值
non_zero_patterns = last_row[last_row != 0]
# 显示结果
print("最后一行识别的有效形态:")
print(non_zero_patterns)
输出
最后一行识别的有效形态:
CDLDOJI 100
CDLHIGHWAVE 100
CDLLONGLEGGEDDOJI 100
CDLRICKSHAWMAN 100
CDLSPINNINGTOP 100
Name: 2022-12-30 00:00:00, dtype: int32
还可以让ai进一步解释
提示词
什么是K线中的DOJI形态?
- 0
- 0
-
赞助
支付宝
微信
-
分享