FinTA للمؤشرات الفنية
مكتبة مؤشرات فنية سهلة الاستخدام مبنية على pandas. أكثر من 80 مؤشراً بواجهة بسيطة.
الصعوبة: مبتدئ
الفئة: مؤشرات
التثبيت
# Pure Python — works everywhere
$ pip install finta
80+ Available Indicators
Trend
SMAEMADEMATEMAWMAHMAKAMAZLEMAVWAPICHIMOKU
Momentum
RSIMACDSTOCHCCIMOMROCWILLRTSIUOAO
Volume
OBVVFIMFIADLCMFEMVVWAP
Volatility
ATRBBANDSKCDCSTARC
Other
PIVOTFISHAPZSQZMIVPTEBBP
أمثلة الكود
Installation
Install finta with pip
Python
pip install finta
# Verify
python -c "from finta import TA; print('finta ready!')"
Basic Usage
Simple one-line indicator calculations
Python
from finta import TA
import yfinance as yf
# Get OHLCV data
df = yf.download("EURUSD=X", period="1y")
# finta uses simple one-line calls
sma = TA.SMA(df, period=20)
ema = TA.EMA(df, period=12)
rsi = TA.RSI(df, period=14)
print(f"SMA(20): {sma.iloc[-1]:.5f}")
print(f"EMA(12): {ema.iloc[-1]:.5f}")
print(f"RSI(14): {rsi.iloc[-1]:.2f}")
Advanced Indicators
Bollinger Bands, MACD, and Ichimoku Cloud
Python
from finta import TA
# Bollinger Bands - returns DataFrame with upper, mid, lower
bbands = TA.BBANDS(df, period=20, std_multiplier=2)
print(f"Upper: {bbands['BB_UPPER'].iloc[-1]:.5f}")
print(f"Middle: {bbands['BB_MIDDLE'].iloc[-1]:.5f}")
print(f"Lower: {bbands['BB_LOWER'].iloc[-1]:.5f}")
# MACD
macd = TA.MACD(df)
print(f"MACD: {macd['MACD'].iloc[-1]:.5f}")
print(f"Signal: {macd['SIGNAL'].iloc[-1]:.5f}")
# Ichimoku Cloud
ichimoku = TA.ICHIMOKU(df)
print(ichimoku.columns.tolist())
Complete Trading Strategy
Multi-indicator strategy using finta
Python
from finta import TA
import yfinance as yf
import pandas as pd
df = yf.download("EURUSD=X", period="1y")
# Calculate indicators
df['SMA_20'] = TA.SMA(df, period=20)
df['SMA_50'] = TA.SMA(df, period=50)
df['RSI'] = TA.RSI(df, period=14)
df['ATR'] = TA.ATR(df, period=14)
macd = TA.MACD(df)
df['MACD'] = macd['MACD']
df['MACD_Signal'] = macd['SIGNAL']
# Generate signals
df['Buy'] = (
(df['SMA_20'] > df['SMA_50']) &
(df['RSI'] < 70) &
(df['MACD'] > df['MACD_Signal'])
)
df['Sell'] = (
(df['SMA_20'] < df['SMA_50']) |
(df['RSI'] > 70)
)
# Show latest signals
latest = df.iloc[-1]
signal = "BUY" if latest['Buy'] else "SELL" if latest['Sell'] else "HOLD"
print(f"Signal: {signal}")
print(f"RSI: {latest['RSI']:.2f}, ATR: {latest['ATR']:.5f}")
أفضل الممارسات
تنسيق DataFrame
finta expects standard OHLCV column names: Open, High, Low, Close, Volume
المقارنة مع TA-Lib
All indicators follow TA.INDICATOR(df) pattern — very easy to learn
تسمية الأعمدة
Pure Python — slower than C-based TA-Lib for large datasets
Limited Documentation
Check source code for advanced parameters and return types