{"id":28407,"library":"tradingview-ta","title":"TradingView TA","description":"Unofficial TradingView technical analysis API wrapper for Python. Provides buy/sell signals, indicator values, and symbol search. Current version 3.3.0, supports Python >=3.6. Release cadence irregular, focused on adding indicators and fixing TradingView algorithm changes.","status":"active","version":"3.3.0","language":"python","source_language":"en","source_url":"https://github.com/brian-the-dev/python-tradingview-ta","tags":["tradingview","technical-analysis","api-wrapper","crypto","stocks"],"install":[{"cmd":"pip install tradingview-ta","lang":"bash","label":"Default install"}],"dependencies":[{"reason":"HTTP requests to TradingView","package":"requests","optional":false},{"reason":"Type hints for older Python versions","package":"typing-extensions","optional":true}],"imports":[{"note":"Common mistake: importing from a submodule instead of the top-level package.","wrong":"from tradingview_ta.ta_handler import TA_Handler","symbol":"TA_Handler","correct":"from tradingview_ta import TA_Handler"},{"note":"Use Interval.INTERVAL_1HOUR etc.","wrong":"","symbol":"Interval","correct":"from tradingview_ta import Interval"},{"note":"Use Exchange.BINANCE or Exchange.NYSE.","wrong":"","symbol":"Exchange","correct":"from tradingview_ta import Exchange"}],"quickstart":{"code":"from tradingview_ta import TA_Handler, Interval, Exchange\n\n# Example: Get analysis for BTCUSDT on Binance\nhandler = TA_Handler(\n    symbol=\"BTCUSDT\",\n    screener=\"crypto\",\n    exchange=\"BINANCE\",\n    interval=Interval.INTERVAL_1HOUR,\n)\nanalysis = handler.get_analysis()\nprint(analysis.summary)\nprint(\"RSI:\", analysis.indicators[\"RSI\"])","lang":"python","description":"Fetch technical analysis summary and indicators for a symbol."},"warnings":[{"fix":"Use Interval.INTERVAL_1HOUR instead of '1h'.","message":"Starting from v3.0.0, the interval parameter must be an Interval enum, not a string like '1h'.","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"Access data via analysis.summary, analysis.indicators, analysis.time, analysis.ticker instead of analysis['summary'].","message":"From v3.2.0, get_analysis() returns a dict-like object instead of a custom class with attributes directly.","severity":"breaking","affected_versions":">=3.2.0"},{"fix":"Always verify signals with real chart; consider running in testing mode with a small amount.","message":"TradingView frequently changes its technical analysis algorithms, leading to inaccurate signals. The library updates indicators but may lag.","severity":"gotcha","affected_versions":"all"},{"fix":"Implement your own rate limiting (e.g., 1 request per second). Use proxies if needed.","message":"The library is unofficial and rate-limits are not enforced by the library, but TradingView may block excessive requests.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Check symbol/exchange/screener validity. Add error handling: analysis = handler.get_analysis(); if analysis: print(analysis.summary)","cause":"get_analysis() returned None. This can happen if the symbol is invalid or network issue.","error":"AttributeError: 'NoneType' object has no attribute 'summary'"},{"fix":"Use valid exchange names from Exchange enum, e.g., Exchange.BINANCE, Exchange.NYSE.","cause":"Specified exchange name is not recognized (e.g., 'BINANCEUS' instead of 'BINANCE').","error":"tradingview_ta.ta_handler.ExchangeNotFound"},{"fix":"Run 'pip install tradingview-ta' (note the underscore in import vs hyphen in package name).","cause":"Package not installed or installed under a different name.","error":"ModuleNotFoundError: No module named 'tradingview_ta'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}