{"id":37075190,"url":"https://github.com/stockalgo/stolgo","last_synced_at":"2026-01-14T08:50:52.998Z","repository":{"id":56187464,"uuid":"260898227","full_name":"stockalgo/stolgo","owner":"stockalgo","description":"Price Action Trading APIs, Algorithmic approach, Dealing with securities. Get APIs to detect candlestick patterns, identify trends, support resistance, and price breakout. ","archived":false,"fork":false,"pushed_at":"2021-02-17T05:37:28.000Z","size":5882,"stargazers_count":316,"open_issues_count":33,"forks_count":80,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-09-22T22:29:46.000Z","etag":null,"topics":["algo-trading-software","algorithmic-trading-python","algorithmic-trading-strategies","breakout-detection","candlestick-patterns-detection","nasdaq-python-api","price-action","price-action-python-api"],"latest_commit_sha":null,"homepage":"http://stolgo.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stockalgo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-03T11:37:55.000Z","updated_at":"2025-09-20T23:45:15.000Z","dependencies_parsed_at":"2022-08-15T14:20:25.933Z","dependency_job_id":null,"html_url":"https://github.com/stockalgo/stolgo","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/stockalgo/stolgo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stockalgo%2Fstolgo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stockalgo%2Fstolgo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stockalgo%2Fstolgo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stockalgo%2Fstolgo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stockalgo","download_url":"https://codeload.github.com/stockalgo/stolgo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stockalgo%2Fstolgo/sbom","scorecard":{"id":853651,"data":{"date":"2025-08-11","repo":{"name":"github.com/stockalgo/stolgo","commit":"8f697da41f9684bc36a94cce7a1b4824334f012a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 1/25 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 6 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T23:14:01.882Z","repository_id":56187464,"created_at":"2025-08-23T23:14:01.882Z","updated_at":"2025-08-23T23:14:01.882Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28414698,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:38:59.149Z","status":"ssl_error","status_checked_at":"2026-01-14T08:38:43.588Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algo-trading-software","algorithmic-trading-python","algorithmic-trading-strategies","breakout-detection","candlestick-patterns-detection","nasdaq-python-api","price-action","price-action-python-api"],"created_at":"2026-01-14T08:50:51.147Z","updated_at":"2026-01-14T08:50:52.293Z","avatar_url":"https://github.com/stockalgo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\r\n\u003cp align=\"center\"\u003e\u003ca href=\"http://stolgo.com\" target=\"_blank\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/stockalgo/stolgo/master/stolgo.svg\"\u003e\u003c/a\u003e \u003c/p\u003e\r\n\r\nStolgo is Price Action Trading Analysis Library. Whenever the price reaches resistance during an upward trend, more sellers will enter the market and enter their sell trades. This is a simple price action rule. But How to automate this rule? How to write backtest for this? Stolgo provides APIs for Price Action Trading.\r\n\r\n## Why Stolgo?\r\nThere are many libraries to backtest technical indicators (such as moving average crossover, MACD, RSI, etc.) base strategies, But What about the Price Action Trading?\r\nA Price Action Trader uses support/resistance, candlestick pattern, trend, breakout, and other parameters based on price. You can use Stolgo to backtest your price action trading rules.\r\n\r\n## Installation\r\n\r\nUse the package manager [pip](https://pip.pypa.io/en/stable/) to install stolgo.\r\n\r\n```bash\r\npip install stolgo\r\n```\r\n \r\n# For data feed, Stolgo uses [bandl.io](https://bandl.io) \u003ca href=\"https://github.com/stockalgo/bandl\" target=\"_blank\"\u003e\u003cimg src=\"https://img.icons8.com/ios-glyphs/30/000000/github.png\"/\u003e\u003c/a\u003e, Where by just calling get_data API, You can get data from your favourite broker, directly from exchange website or yahoo finance.\r\n\r\n## Usage\r\n\r\n### Get the data, for example using yahoo finance module form [bandl](https://bandl.io)\r\n```bash\r\npip install bandl\r\n```\r\n\r\n### Example: Get Indian (NSE/BSE) stock data using Yahoo finance\r\n```python\r\nfrom bandl.yfinance import Yfinance\r\ntestObj = Yfinance() # returns 'Yfinance class object'.\r\ndfs = testObj.get_data(\"SBIN\",start=\"21-Jan-2020\") #retruns data from 21Jan 2020 to till today\r\n```\r\n\r\n### Example: Get the data of Apple (US Stock) from Nasdaq\r\n```python\r\nfrom bandl.nasdaq import Nasdaq\r\ntestObj = Nasdaq() # returns 'Nasdaq class object'.\r\ndfs = testObj.get_data(\"AAPL\",periods=90) # returns last 90 days data\r\n```\r\n\r\n### check for bullish engulfing pattern\r\n```python\r\nfrom stolgo.candlestick import CandleStick\r\ncandle_test = CandleStick()\r\nis_be = candle_test.is_bullish_engulfing(dfs)\r\n```\r\n### check for an inverted hammer candle pattern\r\n```python\r\nfrom stolgo.candlestick import CandleStick\r\ncandle_test = CandleStick()\r\nis_it = candle_test.is_inverse_hammer_candle(dfs)\r\n```\r\n\r\n### check for breakout\r\n```python\r\nfrom stolgo.breakout import Breakout\r\nbreakout_test = Breakout()\r\nis_be = breakout_test.is_breaking_out(dfs,periods=None,percentage=None) #periods:Number of candles,percentage: range of consolidation in percentage\r\n```\r\n\r\n## Todo\r\n- Add unittest\r\n- Add more features such as Support Resistance, momemtum, etc.\r\n- Add Event-Driven Backtester\r\n\r\n## Contributing\r\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\r\n\r\nKindly follow PEP 8 Coding Style guidelines. Refer: https://www.python.org/dev/peps/pep-0008/\r\n\r\nPlease make sure to update tests as appropriate.\r\n\r\n## License\r\n[MIT](https://choosealicense.com/licenses/mit/)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstockalgo%2Fstolgo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstockalgo%2Fstolgo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstockalgo%2Fstolgo/lists"}