{"repo":"bennycode/trading-signals","free":true,"listed":false,"github":"https://github.com/bennycode/trading-signals","clone":"git clone https://github.com/bennycode/trading-signals.git","description":"Technical indicators to run technical analysis with JavaScript & TypeScript. 📈","language":"TypeScript","stars":984,"topics":["analysis","cryptotrading","dema","dma","ema","financial","financial-analysis","hacktoberfest","indicator","macd","roc","rsi","signals","sma","smma","technical-analysis","technical-indicators","trading","trading-signals","typescript"],"license":null,"category":"algo_trading_framework","readme_excerpt":"# Trading Signals Monorepo\n\n**A fully-typed, modular toolkit for building algorithmic trading bots in TypeScript — from technical indicators up to a Telegram-controlled live bot.**\n\nThis monorepo is home to the popular [`trading-signals`](https://www.npmjs.com/package/trading-signals) library (tested in production and trusted by [hundreds of projects](https://github.com/bennycode/trading-signals/network/dependents) worldwide) along with everything you need to turn those signals into a running trading bot: strategies, an exchange abstraction, and a chatbot front-end.\n\nEvery piece is independently usable. Pick a package, drop it into your app, or run the whole stack and command your bot from your phone.\n\n## Highlights\n\n- **Streaming-first indicators** — SMA, EMA, RSI, MACD, Bollinger Bands, and many more, with replace-mode and lazy evaluation for backtests and live use.\n- **Composable strategies** — a tiny `Strategy` interface (return an `OrderAdvice` per candle) lets you focus on signal logic while the framework owns session state, order placement, fills, and broker quirks. Ships with ready-to-use building blocks and a `ProtectedStrategy` base that adds self-cleaning stop-loss / take-profit kill switches.\n- **Visual backtesting in your browser** — try any strategy against historical candles with interactive charts, trade markers, and P&L stats at **[typedtrader.com/backtest](https://typedtrader.com/backtest/)**. Tune parameters, see the results instantly, no setup required.\n- **Broker-agnostic execution** — a unified exchange interface with type-safe schemas (Zod), WebSocket streaming, and paper-trading support. Ships with [Alpaca Trading](https://alpaca.markets/) out of the box but is designed for any additional broker or exchange to plug in.\n- **Control your bot from Telegram** — add accounts, spin up strategies via conversational wizards, watch prices, schedule recurring reports, and inspect live strategy state and config, all from a chat.\n- **Modern TypeScript stack** — Latest TypeScript version, ESM-native, Node LTS, Lerna-managed workspaces, Vitest-covered, drizzle-backed persistence.\n\n## Quickstart\n\n```bash\nnpm install\n\n# Run the full test matrix across all packages\nnpm test\n\n# Launch the indicator showcase (Next.js)\nnpm run start:docs\n\n# Start the Telegram bot (requires TELEGRAM_BOT_TOKEN in your env)\nnpm run start:bot\n```\n\n## 📦 Packages\n\nThis project uses [Lerna](https://lerna.js.org/) to manage a [monorepo](https://monorepo.tools/) with independent versioning.\n\n| Package | Description |\n| --- | --- |\n| [**trading-signals**](./packages/trading-signals) | [Technical indicators](https://en.wikipedia.org/wiki/Technical_indicator) (SMA, EMA, RSI, MACD, Bollinger Bands, ...) for algorithmic trading with streaming updates, replace mode, lazy evaluation, and memory efficiency. Battle-tested in production. |\n| [**trading-strategies**](./packages/trading-strategies) | [Trading strategies](https://en.wikipedia.org/wiki/Trading_strategy) that combine indicators into actionable advice. Ships with a library of ready-to-use strategies and a `ProtectedStrategy` base that wires stop-loss and take-profit kill switches into any subclass. |\n| [**@typedtrader/exchange**](./packages/exchange) | Unified exchange interface for different brokers (currently [Alpaca](https://alpaca.markets/)). Type-safe data transformation, WebSocket candles and order updates, paper- and live-trading environments behind a single API. |\n| [**@typedtrader/messaging**](./packages/messaging) | Remote-control layer for your personal trading bot via [Telegram](https://core.telegram.org/bots). Add accounts, run strategies, watch prices, schedule reports, and inspect live strategy state — all from chat. Persistence via SQLite + Drizzle ORM. |\n| [**trading-signals-docs**](./packages/trading-signals-docs) | [Interactive showcase and visual backtester](https://typedtrader.com/) built with Next.js. Explore every indicator in action, then [backtest strategies](https://typedtrader.com/backtest/) against real historical candles with charts, trade markers, and P&L stats. |\n\n## How it fits together\n\nAt the foundation, **trading-signals** provides technical indicators like SMA, EMA, RSI, and Bollinger Bands. **trading-strategies** builds on top of them to produce actionable trading advice and ships kill-switch protection out of the box. **@typedtrader/exchange** abstracts away broker differences so strategies can run against any supported exchange. Finally, **@typedtrader/messaging** ties it all together into a chatbot that lets you operate your bot remotely.\n\n```mermaid\ngraph TD\n    messaging[\"@typedtrader/messaging (Chatbot)\"]\n\n    messaging --> session[\"TradingSession (online: pairs a strategy with a broker)\"]\n    website[\"typedtrader.com (Visual Backtester)\"] --> backtest[\"BacktestExecutor (offline: replays historical candles)\"]\n\n    session --> strategies[\"trading-strategies\"]\n    session --> exchange[\"@typedtrader/exchange\"]\n    backtest --> strategies\n    backtest --> exchange\n\n    strategies --> signals[\"trading-signals\"]\n\n    signals --> SMA\n    signals --> EMA\n    signals --> BBANDS[\"Bollinger Bands\"]\n    signals --> more[\"...\"]\n\n    exchange --> Alpaca\n    exchange --> T212[\"Trading 212\"]\n    exchange --> more-exchanges[\"...\"]\n```\n","default_branch":"main","files":862,"tree":[".claude/agents/DocsExplorer.md",".claude/rules/code-style.md",".claude/rules/docs-e2e.md",".claude/rules/testing.md",".claude/skills/add-indicator/SKILL.md",".github/FUNDING.yml",".github/PULL_REQUEST_TEMPLATE.md",".github/dependabot.yml",".github/labeler.yml",".github/release.yml",".github/skills/code-review/SKILL.md",".github/workflows/claude.yml",".github/workflows/deploy-docs.yml",".github/workflows/generate-labels.yml",".github/workflows/merge-dependencies.yml",".github/workflows/release.yml",".github/workflows/run-e2e-docs.yml",".github/workflows/run-tests.yml",".gitignore",".npmrc",".nvmrc",".vscode/extensions.json",".vscode/settings.json","CLAUDE.md","Procfile","README.md","knip.json","lefthook.yml","lerna.json","oxfmt.config.ts","oxlint.config.ts","package-lock.json","package.json","packages/candles/CHANGELOG.md","packages/candles/json/downtrend-msft.json","packages/candles/json/downtrend.json","packages/candles/json/sideways-pg.json","packages/candles/json/sideways.json","packages/candles/json/uptrend-slv.json","packages/candles/json/uptrend-stx.json","packages/candles/json/uptrend.json","packages/candles/json/urth-2022-1h.json","packages/candles/json/urth-2024-1h.json","packages/candles/json/urth-2025-1h.json","packages/candles/package.json","packages/candles/src/index.test.ts","packages/candles/src/index.ts","packages/candles/tsconfig.build.json","packages/candles/tsconfig.json","packages/candles/vitest.config.ts","packages/exchange/.env.defaults","packages/exchange/BROKER_TEMPLATE.md","packages/exchange/CHANGELOG.md","packages/exchange/CLAUDE.md","packages/exchange/README.md","packages/exchange/fixtures/StopLossStrategy/LTC_USDT_2d_1m_1606066988989.json","packages/exchange/fixtures/alpaca/bars/minutes-5.json","packages/exchange/fixtures/candles/OneWeekInMinutes.json","packages/exchange/fixtures/candles/TenMinutesInEightCandles.json","packages/exchange/fixtures/candles/TenMinutesInTenCandles.json","packages/exchange/fixtures/candles/TenMinutesMissingEnd.json","packages/exchange/fixtures/candles/TenMinutesMissingStart.json","packages/exchange/fixtures/candles/batch/1h-in-1h.json","packages/exchange/fixtures/candles/batch/1h-in-1m.json","packages/exchange/fixtures/candles/candle-batcher/one_day_in_minutes.json","packages/exchange/fixtures/candles/candle-batcher/one_hour_in_minutes.json","packages/exchange/fixtures/candles/candle-batcher/one_month_in_days.json","packages/exchange/package.json","packages/exchange/src/broker/Broker.ts","packages/exchange/src/broker/BrokerMock.test.ts","packages/exchange/src/broker/BrokerMock.ts","packages/exchange/src/broker/MarketDataSource.test.ts","packages/exchange/src/broker/MarketDataSource.ts","packages/exchange/src/broker/TradingPair.ts","packages/exchange/src/broker/alpaca/AlpacaBroker.test.ts","packages/exchange/src/broker/alpaca/AlpacaBroker.ts","packages/exchange/src/broker/alpaca/AlpacaBrokerMapper.test.ts","packages/exchange/src/broker/alpaca/AlpacaBrokerMapper.ts","packages/exchange/src/broker/alpaca/AlpacaBrokerMock.test.ts","packages/exchange/src/broker/alpaca/AlpacaBrokerMock.ts","packages/exchange/src/broker/alpaca/AlpacaMarketData.ts","packages/exchange/src/broker/alpaca/AlpacaTradingWebSocket.ts","packages/exchange/src/broker/alpaca/AlpacaWebSocket.ts","packages/exchange/src/broker/alpaca/alpacaSymbol.ts","packages/exchange/src/broker/alpaca/api/AlpacaAPI.test.ts","packages/exchange/src/broker/alpaca/api/AlpacaAPI.ts","packages/exchange/src/broker/alpaca/api/AlpacaStream.ts","packages/exchange/src/broker/alpaca/api/AlpacaTradingStream.ts","packages/exchange/src/broker/alpaca/api/schema/AccountSchema.ts","packages/exchange/src/broker/alpaca/api/schema/AssetSchema.ts","packages/exchange/src/broker/alpaca/api/schema/BarSchema.ts","packages/exchange/src/broker/alpaca/api/schema/ClockSchema.ts","packages/exchange/src/broker/alpaca/api/schema/OrderSchema.ts","packages/exchange/src/broker/alpaca/api/schema/PositionSchema.ts","packages/exchange/src/broker/alpaca/api/schema/SnapshotSchema.ts","packages/exchange/src/broker/alpaca/api/schema/StreamSchema.ts","packages/exchange/src/broker/alpaca/api/schema/TradingStreamSchema.ts","packages/exchange/src/broker/alpaca/demo/fetchCandles.ts","packages/exchange/src/broker/alpaca/demo/testAll.ts","packages/exchange/src/broker/alpaca/getAlpacaClient.ts","packages/exchange/src/broker/alpaca/getAlpacaMarketData.ts","packages/exchange/src/broker/alpaca/getAlpacaRules.ts","packages/exchange/src/broker/alpaca/index.ts","packages/exchange/src/broker/getAuthenticatedBrokerClient.test.ts","packages/exchange/src/broker/getAuthenticatedBrokerClient.ts","packages/exchange/src/broker/getBrokerClient.ts","packages/exchange/src/broker/index.ts","packages/exchange/src/broker/trading212/Trading212Broker.test.ts","packages/exchange/src/broker/trading212/Trading212Broker.ts","packages/exchange/src/broker/trading212/Trading212BrokerMapper.ts","packages/exchange/src/broker/trading212/api/Trading212API.ts","packages/exchange/src/broker/trading212/api/schema/AccountSchema.ts","packages/exchange/src/broker/trading212/api/schema/HistoryOrderSchema.ts","packages/exchange/src/broker/trading212/api/schema/InstrumentSchema.ts","packages/exchange/src/broker/trading212/api/schema/OrderSchema.ts","packages/exchange/src/broker/trading212/api/schema/PositionSchema.ts","packages/exchange/src/broker/trading212/demo/buy.ts","packages/exchange/src/broker/trading212/demo/getDemoClient.ts","packages/exchange/src/broker/trading212/demo/listBalances.ts","packages/exchange/src/broker/trading212/demo/testAll.ts","packages/exchange/src/broker/trading212/getTrading212Client.ts","packages/exchange/src/broker/trading212/index.ts","packages/exchange/src/candle/BatchedCandle.ts","packages/exchange/src/candle/CandleBatcher.test.ts","packages/exchange/src/candle/CandleBatcher.ts","packages/exchange/src/candle/index.ts","packages/exchange/src/candle/writeCandles.ts","packages/exchange/src/index.ts","packages/exchange/src/util/SimplifiedHttpError.ts","packages/exchange/src/util/index.ts","packages/exchange/src/util/isEarningsDay.test.ts","packages/exchange/src/util/isEarningsDay.ts","packages/exchange/src/util/simplifyError.test.ts","packages/exchange/src/util/simplifyError.ts","packages/exchange/stryker.config.json","packages/exchange/tsconfig.build.json","packages/exchange/tsconfig.json","packages/exchange/vitest.config.ts","packages/messaging/.env.defaults","packages/messaging/.gitignore","packages/messaging/CHANGELOG.md","packages/messaging/CLAUDE.md","packages/messaging/LICENSE","packages/messaging/README.md","packages/messaging/drizzle.config.ts","packages/messaging/migrations/0000_init.sql","packages/messaging/migrations/0001_fair_carnage.sql","packages/messaging/migrations/0002_moaning_kingpin.sql","packages/messaging/migrations/0003_right_guardian.sql","packages/messaging/migrations/0004_small_stepford_cuckoos.sql","packages/messaging/migrations/0005_abnormal_salo.sql","packages/messaging/migrations/0006_red_moon_knight.sql","packages/messaging/migrations/0007_neat_pretty_boy.sql","packages/messaging/migrations/0008_conscious_onslaught.sql","packages/messaging/migrations/0009_strong_unicorn.sql","packages/messaging/migrations/meta/0000_snapshot.json","packages/messaging/migrations/meta/0001_snapshot.json","packages/messaging/migrations/meta/0002_snapshot.json","packages/messaging/migrations/meta/0003_snapshot.json","packages/messaging/migrations/meta/0004_snapshot.json","packages/messaging/migrations/meta/0005_snapshot.json","packages/messaging/migrations/meta/0006_snapshot.json","packages/messaging/migrations/meta/0007_snapshot.json","packages/messaging/migrations/meta/0008_snapshot.json","packages/messaging/migrations/meta/0009_snapshot.json","packages/messaging/migrations/meta/_journal.json","packages/messaging/package.json","packages/messaging/src/broker/getAccountBrokerClient.test.ts","packages/messaging/src/broker/getAccountBrokerClient.ts","packages/messaging/src/command/account/accountAdd.ts","packages/messaging/src/command/account/accountEdit.ts","packages/messaging/src/command/account/accountList.ts","packages/messaging/src/command/account/accountRemove.ts","packages/messaging/src/command/account/accountTime.ts","packages/messaging/src/command/candle.ts","packages/messaging/src/command/formatTable.ts","packages/messaging/src/command/health.ts","packages/messaging/src/command/index.ts","packages/messaging/src/command/placeOrder.ts","packages/messaging/src/command/price.ts","packages/messaging/src/command/report/reportAdd.ts","packages/messaging/src/command/report/reportList.ts","packages/messaging/src/command/report/reportRemove.ts","packages/messaging/src/command/strategy/strategyAdd.ts","packages/messaging/src/command/strategy/strategyConfig.ts","packages/messaging/src/command/strategy/strategyCopy.ts","packages/messaging/src/command/strategy/strategyList.ts","packages/messaging/src/command/strategy/strategyRemove.ts","packages/messaging/src/command/strategy/strategyState.ts","packages/messaging/src/command/time.ts","packages/messaging/src/command/uptime.ts","packages/messaging/src/command/watch/watchAdd.ts","packages/messaging/src/command/watch/watchList.ts","packages/messaging/src/command/watch/watchRemove.ts","packages/messaging/src/database/initializeDatabase.ts","packages/messaging/src/database/migrate.ts","packages/messaging/src/database/models/Account.ts","packages/messaging/src/database/models/Report.ts","packages/messaging/src/database/models/Strategy.ts","packages/messaging/src/database/models/Watch.ts","packages/messaging/src/database/schema.ts","packages/messaging/src/index.ts","packages/messaging/src/logger.ts","packages/messaging/src/platform/MessagingPlatform.ts","packages/messaging/src/platform/TelegramPlatform.test.ts","packages/messaging/src/platform/TelegramPlatform.ts","packages/messaging/src/platform/index.ts","packages/messaging/src/platform/telegramMarkdown.test.ts","packages/messaging/src/platform/telegramMarkdown.ts","packages/messaging/src/platform/wizards/accountAddWizard.ts","packages/messaging/src/platform/wizards/accountEditWizard.ts","packages/messaging/src/platform/wizards/shared.ts","packages/messaging/src/platform/wizards/strategyAddWizard.ts","packages/messaging/src/platform/wizards/watchAddWizard.ts","packages/messaging/src/service/PlatformDispatcher.ts","packages/messaging/src/service/ReportScheduler.ts","packages/messaging/src/service/StrategyMonitor.test.ts","packages/messaging/src/service/StrategyMonitor.ts","packages/messaging/src/service/WatchMonitor.test.ts","packages/messaging/src/service/WatchMonitor.ts","packages/messaging/src/service/index.ts","packages/messaging/src/service/restartAccountSessions.ts","packages/messaging/src/start.ts","packages/messaging/src/startServer.ts","packages/messaging/src/validation/assertId.ts","packages/messaging/src/validation/assertInterval.ts","packages/messaging/src/validation/getAccountOrError.ts","packages/messaging/src/validation/parseThreshold.test.ts","packages/messaging/src/validation/parseThreshold.ts","packages/messaging/tsconfig.build.json","packages/messaging/tsconfig.json","packages/trading-signals-docs/.gitignore","packages/trading-signals-docs/CHANGELOG.md","packages/trading-signals-docs/CLAUDE.md","packages/trading-signals-docs/README.md","packages/trading-signals-docs/components/BacktestResults.tsx","packages/trading-signals-docs/components/CalculatorDemo.tsx","packages/trading-signals-docs/components/CategoryCard.tsx","packages/trading-signals-docs/components/Chart.tsx","packages/trading-signals-docs/components/CodeBlock.tsx","packages/trading-signals-docs/components/DataTable.tsx","packages/trading-signals-docs/components/DatasetSelector.tsx","packages/trading-signals-docs/components/DemoCard.tsx","packages/trading-signals-docs/components/Hero.tsx","packages/trading-signals-docs/components/IndicatorDemo.tsx","packages/trading-signals-docs/components/IndicatorHeader.tsx","packages/trading-signals-docs/components/IndicatorList.tsx","packages/trading-signals-docs/components/MarketClock.tsx","packages/trading-signals-docs/components/NotAvailable.tsx","packages/trading-signals-docs/components/PriceChart.tsx","packages/trading-signals-docs/components/ProtectionModal.tsx","packages/trading-signals-docs/components/QuickStart.tsx","packages/trading-signals-docs/components/SchemaReference.tsx","packages/trading-signals-docs/components/SignalBadge.tsx","packages/trading-signals-docs/components/StrategyConfigurator.tsx","packages/trading-signals-docs/e2e/homepage.spec.ts","packages/trading-signals-docs/e2e/pages/HomePage.ts","packages/trading-signals-docs/e2e/pages/TrendPage.ts","packages/trading-signals-docs/e2e/trend.spec.ts","packages/trading-signals-docs/hooks/useHashSelection.ts","packages/trading-signals-docs/indicator-demos/momentum/AC.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/AO.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/APO.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/AccumulativeSwingIndex.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/BOP.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/CCI.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/CFO.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/CG.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/CMO.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/ConnorsRSI.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/CoppockCurve.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/DPO.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/DeMarker.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/DerivativeOscillator.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/DisparityIndex.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/ER.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/ElderRay.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/FisherTransform.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/IBS.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/IMI.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/KST.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/LaguerreRSI.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/MACD.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/MFI.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/MOM.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/OBV.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/PGO.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/PMO.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/PPO.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/PSL.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/PremierStochastic.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/QQE.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/Qstick.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/RCI.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/REI.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/RMI.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/ROC.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/RSI.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/RelativeVigorIndex.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/SMI.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/STC.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/StochasticOscillator.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/StochasticRSI.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/TDS.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/TRIX.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/TSI.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/UltimateOscillator.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/WaddahAttarExplosion.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/WaveTrend.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/WilliamsR.demo.tsx","packages/trading-signals-docs/indicator-demos/momentum/index.tsx","packages/trading-signals-docs/indicator-demos/trend/ADX.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/ADXR.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/ALMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/Alligator.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/Aroon.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/BreakoutBarLow.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/ChandeKrollStop.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/ChandelierExit.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/DEMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/DMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/DX.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/EMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/FRAMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/GannHiLo.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/HMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/HTTrendline.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/HigherLowTrail.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/IchimokuCloud.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/KAMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/LinearRegression.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/MAMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/McGinleyDynamic.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/PSAR.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/RMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/RandomWalkIndex.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/SMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/SMA15.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/SuperSmoother.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/SuperTrend.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/SwingHigh.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/SwingLow.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/T3.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/TEMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/TRIMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/VHF.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/VIDYA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/VWAP.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/VolatilityStop.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/VortexIndicator.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/WMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/WSMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/ZLEMA.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/ZigZag.demo.tsx","packages/trading-signals-docs/indicator-demos/trend/index.tsx","packages/trading-signals-docs/indicator-demos/utilities/addPercentageChange.demo.ts","packages/trading-signals-docs/indicator-demos/utilities/getAverage.demo.ts","packages/trading-signals-docs/indicator-demos/utilities/getMaxMin.demo.ts","packages/trading-signals-docs/indicator-demos/utilities/getMedian.demo.ts","packages/trading-signals-docs/indicator-demos/utilities/getPercentageChange.demo.ts","packages/trading-signals-docs/indicator-demos/utilities/getShare.demo.ts","packages/trading-signals-docs/indicator-demos/utilities/getStandardDeviation.demo.ts","packages/trading-signals-docs/indicator-demos/utilities/index.ts","packages/trading-signals-docs/indicator-demos/utilities/otherUtilities.ts","packages/trading-signals-docs/indicator-demos/utilities/types.ts","packages/trading-signals-docs/indicator-demos/volatility/ATR.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/AccelerationBands.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/BollingerBands.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/BollingerBandsWidth.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/CHOP.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/CVI.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/DonchianChannels.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/GAPO.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/IQR.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/KeltnerChannels.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/MAD.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/MassIndex.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/NATR.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/PercentB.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/ProjectionOscillator.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/RelativeVolatilityIndex.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/RogersSatchellVolatility.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/TR.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/TTMSqueeze.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/UlcerIndex.demo.tsx","packages/trading-signals-docs/indicator-demos/volatility/index.tsx","packages/trading-signals-docs/indicator-demos/volatility/renderBands.tsx","packages/trading-signals-docs/indicator-demos/volume/AD.demo.tsx","packages/trading-signals-docs/indicator-demos/volume/ADOSC.demo.tsx","packages/trading-signals-docs/indicator-demos/volume/CMF.demo.tsx","packages/trading-signals-docs/indicator-demos/volume/EMV.demo.tsx","packages/trading-signals-docs/indicator-demos/volume/ForceIndex.demo.tsx","packages/trading-signals-docs/indicator-demos/volume/KVO.demo.tsx","packages/trading-signals-docs/indicator-demos/volume/MarketFacilitationIndex.demo.tsx","packages/trading-signals-docs/indicator-demos/volume/NVI.demo.tsx","packages/trading-signals-docs/indicator-demos/volume/PVI.demo.tsx","packages/trading-signals-docs/indicator-demos/volume/PVO.demo.tsx","packages/trading-signals-docs/indicator-demos/volume/PVT.demo.tsx","packages/trading-signals-docs/indicator-demos/volume/VROC.demo.tsx","packages/trading-signals-docs/indicator-demos/volume/VWMA.demo.tsx"],"storefront":"/r/bennycode","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/bennycode/trading-signals/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}