Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:TA Lib Ta lib python Pattern DataFrame Integration

From Leeroopedia


Knowledge Sources
Domains Technical_Analysis, Data_Preparation
Last Updated 2026-02-09 22:00 GMT

Overview

Concrete tool for integrating pattern recognition signals into pandas/polars DataFrames via the _wrapper decorator and abstract.Function.run method.

Description

Pattern recognition results can be integrated into DataFrames through two approaches:

  1. Function API with _wrapper: Pass DataFrame columns (pandas/polars Series) directly to CDL functions. The _wrapper converts and preserves types.
  2. Abstract API: Use abstract.Function('CDLDOJI').run(df) with a dict/DataFrame containing OHLC columns.

Usage

Use either approach to add pattern columns to your analysis DataFrame.

Code Reference

Source Location

  • Repository: ta-lib-python
  • File: talib/__init__.py:L40-106 (_wrapper), talib/abstract.py:L13-20 (Function factory), talib/_abstract.pxi:L399-409 (run method)

Signature

# Approach 1: Function API with pandas Series
result = talib.CDLDOJI(df['open'], df['high'], df['low'], df['close'])
# Returns pd.Series with same index as input

# Approach 2: Abstract API with DataFrame
from talib import abstract
func = abstract.Function('CDLDOJI')
result = func.run(df)
# Returns pd.Series if DataFrame input

Import

import talib
from talib import abstract

I/O Contract

Inputs

Name Type Required Description
ohlc_data pd.DataFrame / pl.DataFrame Yes DataFrame with open, high, low, close columns

Outputs

Name Type Description
pattern_signal pd.Series / pl.Series Integer signal Series aligned with input DataFrame index

Usage Examples

DataFrame Column Addition

import pandas as pd
import numpy as np
import talib

# Create OHLCV DataFrame
n = 200
df = pd.DataFrame({
    'open': np.cumsum(np.random.randn(n) * 0.5) + 100,
    'high': np.cumsum(np.random.randn(n) * 0.5) + 101,
    'low': np.cumsum(np.random.randn(n) * 0.5) + 99,
    'close': np.cumsum(np.random.randn(n) * 0.5) + 100,
}, index=pd.date_range('2024-01-01', periods=n))

# Add pattern columns
df['doji'] = talib.CDLDOJI(df['open'], df['high'], df['low'], df['close'])
df['engulfing'] = talib.CDLENGULFING(df['open'], df['high'], df['low'], df['close'])

# Filter dates with patterns
pattern_dates = df[(df['doji'] != 0) | (df['engulfing'] != 0)]

Abstract API Batch Scan

from talib import abstract

patterns = talib.get_function_groups()['Pattern Recognition']
for name in patterns:
    func = abstract.Function(name)
    df[name] = func.run(df)

Related Pages

Implements Principle

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment