{"id":36426255,"url":"https://github.com/cbrown184/jkeltner","last_synced_at":"2026-01-11T18:00:52.022Z","repository":{"id":52289340,"uuid":"154237653","full_name":"cbrown184/JKeltner","owner":"cbrown184","description":"Keltner channel calculator","archived":false,"fork":false,"pushed_at":"2023-08-24T12:13:31.000Z","size":87,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-15T05:49:43.587Z","etag":null,"topics":["java","keltner-channel","keltner-channels","trading"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cbrown184.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":"2018-10-23T00:50:57.000Z","updated_at":"2023-08-24T12:13:22.000Z","dependencies_parsed_at":"2022-09-07T05:12:18.264Z","dependency_job_id":null,"html_url":"https://github.com/cbrown184/JKeltner","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/cbrown184/JKeltner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbrown184%2FJKeltner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbrown184%2FJKeltner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbrown184%2FJKeltner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbrown184%2FJKeltner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cbrown184","download_url":"https://codeload.github.com/cbrown184/JKeltner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cbrown184%2FJKeltner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28316930,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T14:58:17.114Z","status":"ssl_error","status_checked_at":"2026-01-11T14:55:53.580Z","response_time":60,"last_error":"SSL_read: 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":["java","keltner-channel","keltner-channels","trading"],"created_at":"2026-01-11T18:00:24.800Z","updated_at":"2026-01-11T18:00:52.014Z","avatar_url":"https://github.com/cbrown184.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cdiv align=\"center\"\u003e\n    \u003cb\u003e\u003cem\u003eKeltner Channel Calculator\u003c/em\u003e\u003c/b\u003e\u003cbr\u003e\n\u003c/div\u003e\n\n\n\u003cbr\u003eBig Decimal implementation.\n\u003cbr\u003ePure java - no additional libraries.\n\u003cbr\u003eWorks on Java 8 +.\n\n## Description\nhttps://en.wikipedia.org/wiki/Keltner_channel\n\nKeltner Channels are volatility-based bands that are placed on either side of an asset's price and can aid in determining the direction of a trend.\n\nPrice reaching the upper Keltner Channel band is bullish, while reaching the lower band is bearish.\n\nThe angle of the Keltner Channel also aids in identifying the trend direction. The price may also oscillate between the upper and lower Keltner Channel bands, which can be interpreted as resistance and support levels.\n## Installation\n\n```xml\n        \u003cdependency\u003e\n            \u003cgroupId\u003eio.github.cbrown184\u003c/groupId\u003e\n            \u003cartifactId\u003ejkeltner\u003c/artifactId\u003e\n            \u003cversion\u003e1.0.2\u003c/version\u003e\n        \u003c/dependency\u003e\n```\n## Usage\n\n```java\n  JKeltnerCalculator jKeltnerCalculator = new JKeltnerCalculator.JKeltnerBuilder()\n                // The default moving average (EMA) of a Keltner Channel is 20 periods\n                .setPeriod(3)\n                // The upper and lower bands are typically set two times the average true range (ATR) above and below the EMA\n                .setAtrMultiplier(2)\n                // Precision of the floating point (BigDecimal) values returned\n                .setScale(6)\n                // Smoothing factor of EMA\n                .setSmoothingFactor(2)\n                .build();\n\n // Input candle data - high, low, close\n // The calculator returns Optional.Empty() until the number of candles supplied is equal to the set period\n jKeltnerCalculator.calculate(1.45, 1.41, 1.42); // -\u003e Optional.empty\n jKeltnerCalculator.calculate(1.46, 1.42, 1.43); // -\u003e Optional.empty\n jKeltnerCalculator.calculate(1.51, 1.41, 1.42); // -\u003e Optional[KeltnerBand{upperBand=1.543333, midBand=1.423333, lowerBand=1.303333}]\n\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcbrown184%2Fjkeltner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcbrown184%2Fjkeltner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcbrown184%2Fjkeltner/lists"}