From 60c9982dba836c31e58d629e50fc39b8f27ea6b6 Mon Sep 17 00:00:00 2001 From: Dave Skender <8432125+DaveSkender@users.noreply.github.com> Date: Sun, 29 Sep 2024 21:08:50 -0400 Subject: [PATCH 1/5] add/broken DocFX base --- .gitignore | 11 +- README.md | 4 +- docs/.gitignore | 3 + docs/404.html | 11 - docs/GemFile | 19 - docs/GemFile.lock | 309 ------------ docs/README.md | 2 +- docs/_config.yml | 3 +- docs/_includes/candle-result.md | 4 +- docs/_includes/cyclotron.html | 48 -- docs/_includes/footer.html | 21 - docs/_includes/head.html | 2 +- docs/_includes/header.html | 23 - docs/_indicators/Adl.md | 14 +- docs/_indicators/Adx.md | 18 +- docs/_indicators/Alligator.md | 20 +- docs/_indicators/Alma.md | 18 +- docs/_indicators/Aroon.md | 16 +- docs/_indicators/Atr.md | 18 +- docs/_indicators/AtrStop.md | 20 +- docs/_indicators/Awesome.md | 16 +- docs/_indicators/BasicQuote.md | 8 +- docs/_indicators/Beta.md | 20 +- docs/_indicators/BollingerBands.md | 16 +- docs/_indicators/Bop.md | 16 +- docs/_indicators/Cci.md | 16 +- docs/_indicators/ChaikinOsc.md | 20 +- docs/_indicators/Chandelier.md | 16 +- docs/_indicators/Chop.md | 16 +- docs/_indicators/Cmf.md | 16 +- docs/_indicators/Cmo.md | 16 +- docs/_indicators/ConnorsRsi.md | 18 +- docs/_indicators/Correlation.md | 18 +- docs/_indicators/Dema.md | 18 +- docs/_indicators/Doji.md | 14 +- docs/_indicators/Donchian.md | 16 +- docs/_indicators/Dpo.md | 14 +- docs/_indicators/Dynamic.md | 16 +- docs/_indicators/ElderRay.md | 18 +- docs/_indicators/Ema.md | 18 +- docs/_indicators/Epma.md | 16 +- docs/_indicators/Fcb.md | 20 +- docs/_indicators/FisherTransform.md | 16 +- docs/_indicators/ForceIndex.md | 18 +- docs/_indicators/Fractal.md | 14 +- docs/_indicators/Gator.md | 20 +- docs/_indicators/HeikinAshi.md | 12 +- docs/_indicators/Hma.md | 16 +- docs/_indicators/HtTrendline.md | 18 +- docs/_indicators/Hurst.md | 16 +- docs/_indicators/Ichimoku.md | 14 +- docs/_indicators/Kama.md | 18 +- docs/_indicators/Keltner.md | 20 +- docs/_indicators/Kvo.md | 18 +- docs/_indicators/MaEnvelopes.md | 32 +- docs/_indicators/Macd.md | 18 +- docs/_indicators/Mama.md | 18 +- docs/_indicators/Marubozu.md | 14 +- docs/_indicators/Mfi.md | 16 +- docs/_indicators/Obv.md | 14 +- docs/_indicators/ParabolicSar.md | 16 +- docs/_indicators/PivotPoints.md | 14 +- docs/_indicators/Pivots.md | 16 +- docs/_indicators/Pmo.md | 18 +- docs/_indicators/Prs.md | 18 +- docs/_indicators/Pvo.md | 18 +- docs/_indicators/Renko.md | 16 +- docs/_indicators/Roc.md | 18 +- docs/_indicators/RocWb.md | 18 +- docs/_indicators/RollingPivots.md | 18 +- docs/_indicators/Rsi.md | 18 +- docs/_indicators/Slope.md | 18 +- docs/_indicators/Sma.md | 16 +- docs/_indicators/Smi.md | 20 +- docs/_indicators/Smma.md | 18 +- docs/_indicators/StarcBands.md | 20 +- docs/_indicators/Stc.md | 18 +- docs/_indicators/StdDev.md | 16 +- docs/_indicators/StdDevChannels.md | 18 +- docs/_indicators/Stoch.md | 22 +- docs/_indicators/StochRsi.md | 20 +- docs/_indicators/SuperTrend.md | 20 +- docs/_indicators/T3.md | 16 +- docs/_indicators/Tema.md | 20 +- docs/_indicators/Trix.md | 20 +- docs/_indicators/Tsi.md | 18 +- docs/_indicators/UlcerIndex.md | 16 +- docs/_indicators/Ultimate.md | 16 +- docs/_indicators/VolatilityStop.md | 20 +- docs/_indicators/Vortex.md | 16 +- docs/_indicators/Vwap.md | 16 +- docs/_indicators/Vwma.md | 16 +- docs/_indicators/WilliamsR.md | 18 +- docs/_indicators/Wma.md | 16 +- docs/_indicators/ZigZag.md | 14 +- docs/_layouts/base.html | 21 - docs/_layouts/indicator.html | 8 - docs/_layouts/page.html | 6 - docs/assets/examples-1.png | Bin 0 -> 132529 bytes docs/assets/examples-2.png | Bin 0 -> 55488 bytes docs/assets/examples-3.png | Bin 0 -> 50080 bytes docs/{ => assets}/examples.png | Bin docs/{ => assets}/examples.webp | Bin docs/{ => assets}/favicon.ico | Bin docs/assets/favicon.svg | 24 + docs/contributing.md | 2 - docs/docfx.json | 69 +++ docs/examples/CustomIndicators/README.md | 8 +- docs/examples/README.md | 7 +- docs/favicon.svg | 1 - docs/{pages/home.md => index.md} | 54 +- docs/package-lock.json | 469 ++++++++++++++++++ docs/package.json | 28 ++ docs/pages/getting-started.md | 1 + docs/pages/guide.md | 31 +- docs/pages/{indicators.html => indicators.md} | 13 +- docs/pages/introduction.md | 1 + docs/pages/performance.md | 3 +- docs/pages/toc.yml | 4 + docs/pages/utilities.md | 15 +- docs/toc.yml | 3 + src/_common/Globals.cs | 2 +- src/a-d/Adl/info.xml | 4 +- src/a-d/Adx/info.xml | 2 +- src/a-d/Alligator/info.xml | 2 +- src/a-d/Alma/info.xml | 4 +- src/a-d/Aroon/info.xml | 4 +- src/a-d/Atr/info.xml | 4 +- src/a-d/AtrStop/info.xml | 2 +- src/a-d/Awesome/info.xml | 4 +- src/a-d/BasicQuote/info.xml | 4 +- src/a-d/Beta/info.xml | 2 +- src/a-d/BollingerBands/info.xml | 4 +- src/a-d/Bop/info.xml | 4 +- src/a-d/Cci/info.xml | 4 +- src/a-d/ChaikinOsc/info.xml | 4 +- src/a-d/Chandelier/info.xml | 4 +- src/a-d/Chop/info.xml | 4 +- src/a-d/Cmf/info.xml | 4 +- src/a-d/Cmo/info.xml | 4 +- src/a-d/ConnorsRsi/info.xml | 4 +- src/a-d/Correlation/info.xml | 4 +- src/a-d/Dema/info.xml | 4 +- src/a-d/Doji/info.xml | 4 +- src/a-d/Donchian/info.xml | 4 +- src/a-d/Dpo/info.xml | 4 +- src/a-d/Dynamic/info.xml | 4 +- src/e-k/ElderRay/info.xml | 4 +- src/e-k/Ema/info.xml | 4 +- src/e-k/Epma/info.xml | 4 +- src/e-k/Fcb/info.xml | 4 +- src/e-k/FisherTransform/info.xml | 4 +- src/e-k/ForceIndex/info.xml | 4 +- src/e-k/Fractal/info.xml | 6 +- src/e-k/Gator/info.xml | 4 +- src/e-k/HeikinAshi/info.xml | 4 +- src/e-k/Hma/info.xml | 4 +- src/e-k/HtTrendline/info.xml | 4 +- src/e-k/Hurst/info.xml | 4 +- src/e-k/Ichimoku/info.xml | 8 +- src/e-k/Kama/info.xml | 4 +- src/e-k/Keltner/info.xml | 4 +- src/e-k/Kvo/info.xml | 4 +- src/m-r/MaEnvelopes/info.xml | 4 +- src/m-r/Macd/info.xml | 4 +- src/m-r/Mama/info.xml | 4 +- src/m-r/Marubozu/info.xml | 4 +- src/m-r/Mfi/info.xml | 4 +- src/m-r/Obv/info.xml | 4 +- src/m-r/ParabolicSar/info.xml | 6 +- src/m-r/PivotPoints/info.xml | 4 +- src/m-r/Pivots/info.xml | 4 +- src/m-r/Pmo/info.xml | 4 +- src/m-r/Prs/info.xml | 4 +- src/m-r/Pvo/info.xml | 4 +- src/m-r/Renko/info.xml | 6 +- src/m-r/Roc/info.xml | 4 +- src/m-r/RocWb/info.xml | 4 +- src/m-r/RollingPivots/info.xml | 4 +- src/m-r/Rsi/info.xml | 4 +- src/s-z/Slope/info.xml | 4 +- src/s-z/Sma/info.xml | 6 +- src/s-z/Smi/info.xml | 4 +- src/s-z/Smma/info.xml | 4 +- src/s-z/StarcBands/info.xml | 4 +- src/s-z/Stc/info.xml | 2 +- src/s-z/StdDev/info.xml | 4 +- src/s-z/StdDevChannels/info.xml | 4 +- src/s-z/Stoch/info.xml | 4 +- src/s-z/StochRsi/info.xml | 4 +- src/s-z/SuperTrend/info.xml | 4 +- src/s-z/T3/info.xml | 4 +- src/s-z/Tema/info.xml | 4 +- src/s-z/Tr/info.xml | 4 +- src/s-z/Trix/info.xml | 4 +- src/s-z/Tsi/info.xml | 4 +- src/s-z/UlcerIndex/info.xml | 4 +- src/s-z/Ultimate/info.xml | 4 +- src/s-z/VolatilityStop/info.xml | 2 +- src/s-z/Vortex/info.xml | 4 +- src/s-z/Vwap/info.xml | 4 +- src/s-z/Vwma/info.xml | 2 +- src/s-z/WilliamsR/info.xml | 4 +- src/s-z/Wma/info.xml | 2 +- src/s-z/ZigZag/info.xml | 4 +- 205 files changed, 1550 insertions(+), 1422 deletions(-) create mode 100644 docs/.gitignore delete mode 100644 docs/404.html delete mode 100644 docs/GemFile delete mode 100644 docs/GemFile.lock delete mode 100644 docs/_includes/cyclotron.html delete mode 100644 docs/_includes/footer.html delete mode 100644 docs/_includes/header.html delete mode 100644 docs/_layouts/base.html delete mode 100644 docs/_layouts/indicator.html delete mode 100644 docs/_layouts/page.html create mode 100644 docs/assets/examples-1.png create mode 100644 docs/assets/examples-2.png create mode 100644 docs/assets/examples-3.png rename docs/{ => assets}/examples.png (100%) rename docs/{ => assets}/examples.webp (100%) rename docs/{ => assets}/favicon.ico (100%) create mode 100644 docs/assets/favicon.svg create mode 100644 docs/docfx.json delete mode 100644 docs/favicon.svg rename docs/{pages/home.md => index.md} (66%) create mode 100644 docs/package-lock.json create mode 100644 docs/package.json create mode 100644 docs/pages/getting-started.md rename docs/pages/{indicators.html => indicators.md} (84%) create mode 100644 docs/pages/introduction.md create mode 100644 docs/pages/toc.yml create mode 100644 docs/toc.yml diff --git a/.gitignore b/.gitignore index 7a97cd5dc..93bf60615 100644 --- a/.gitignore +++ b/.gitignore @@ -218,7 +218,7 @@ ClientBin/ *.publishsettings orleans.codegen.cs -# Including strong name files can present a security risk +# Including strong name files can present a security risk # (https://github.com/github/gitignore/pull/2483#issue-259490424) #*.snk @@ -314,7 +314,7 @@ __pycache__/ # OpenCover UI analysis results OpenCover/ -# Azure Stream Analytics local run output +# Azure Stream Analytics local run output ASALocalRun/ # MSBuild Binary and Structured Log @@ -323,11 +323,8 @@ ASALocalRun/ # NVidia Nsight GPU debugger configuration file *.nvuser -# MFractors (Xamarin productivity tool) working folder +# MFractors (Xamarin productivity tool) working folder .mfractor/ -# Jekyll site -_site/ - # zip artifacts -.DS_Store \ No newline at end of file +.DS_Store diff --git a/README.md b/README.md index f66f8607c..43c64cc8f 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,13 @@ **Stock Indicators for .NET** is a C# [library package](https://www.nuget.org/packages/Skender.Stock.Indicators) that produces financial market technical indicators. Send in historical price quotes and get back desired indicators such as moving averages, Relative Strength Index, Stochastic Oscillator, Parabolic SAR, etc. Nothing more. -Build your technical analysis, trading algorithms, machine learning, charting, or other intelligent market software with this library and your own [OHLCV](https://dotnet.stockindicators.dev/guide/#historical-quotes) price quotes sources for equities, commodities, forex, cryptocurrencies, and others. [Stock Indicators for Python](https://python.stockindicators.dev/) is also available. +Build your technical analysis, trading algorithms, machine learning, charting, or other intelligent market software with this library and your own [OHLCV](https://dotnet.stockindicators.dev/guide.md#historical-quotes) price quotes sources for equities, commodities, forex, cryptocurrencies, and others. [Stock Indicators for Python](https://python.stockindicators.dev/) is also available. Visit our project site for more information: - [Overview](https://dotnet.stockindicators.dev/) - [Indicators and overlays](https://dotnet.stockindicators.dev/indicators/) -- [Guide and Pro tips](https://dotnet.stockindicators.dev/guide/) +- [Guide and Pro tips](https://dotnet.stockindicators.dev/guide.md) - [Demo site](https://charts.stockindicators.dev/) (a stock chart) - [Release notes](https://github.com/DaveSkender/Stock.Indicators/releases) - [Discussions](https://github.com/DaveSkender/Stock.Indicators/discussions) diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 000000000..c16ffd357 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,3 @@ +# DocFX +_site/ +api/ diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index 04147d7f4..000000000 --- a/docs/404.html +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Page not found -permalink: /404.html -layout: base -redirect: true ---- - -
-

Your strategy was unprofitable

-

error 404 ~ page not found

-
diff --git a/docs/GemFile b/docs/GemFile deleted file mode 100644 index 822837d07..000000000 --- a/docs/GemFile +++ /dev/null @@ -1,19 +0,0 @@ -source 'https://rubygems.org' - -gem 'eventmachine', '1.2.7', git: 'https://github.com/eventmachine/eventmachine', tag: 'v1.2.7' -gem 'wdm', '>= 0.1.1' if Gem.win_platform? # windows compatibilty pack -gem 'faraday-retry' - -# jekyll plugins -# local dev: bundle exec jekyll serve -group :jekyll_plugins do - gem 'github-pages' - gem "jekyll-github-metadata" - gem 'jekyll-seo-tag' - gem 'jekyll-sitemap' - gem 'jekyll-last-modified-at' # used in sitemap - gem 'jekyll-redirect-from' - gem 'jekyll-minifier' -end - -gem "webrick" # needed for ruby > v3.0 diff --git a/docs/GemFile.lock b/docs/GemFile.lock deleted file mode 100644 index 894e0eb80..000000000 --- a/docs/GemFile.lock +++ /dev/null @@ -1,309 +0,0 @@ -GIT - remote: https://github.com/eventmachine/eventmachine - revision: 9cb13a8a62363df5ebcc414169a3deb2c1608528 - tag: v1.2.7 - specs: - eventmachine (1.2.7) - -GEM - remote: https://rubygems.org/ - specs: - activesupport (7.1.3.4) - base64 - bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) - connection_pool (>= 2.2.5) - drb - i18n (>= 1.6, < 2) - minitest (>= 5.1) - mutex_m - tzinfo (~> 2.0) - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) - base64 (0.2.0) - bigdecimal (3.1.8) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.12.2) - colorator (1.1.0) - commonmarker (0.23.10) - concurrent-ruby (1.3.3) - connection_pool (2.4.1) - cssminify2 (2.0.1) - dnsruby (1.72.2) - simpleidn (~> 0.2.1) - drb (2.2.1) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - ethon (0.16.0) - ffi (>= 1.15.0) - execjs (2.9.1) - faraday (2.10.1) - faraday-net_http (>= 2.0, < 3.2) - logger - faraday-net_http (3.1.1) - net-http - faraday-retry (2.2.1) - faraday (~> 2.0) - ffi (1.17.0-x64-mingw-ucrt) - ffi (1.17.0-x86_64-linux-gnu) - forwardable-extended (2.6.0) - gemoji (4.1.0) - github-pages (231) - github-pages-health-check (= 1.18.2) - jekyll (= 3.9.5) - jekyll-avatar (= 0.8.0) - jekyll-coffeescript (= 1.2.2) - jekyll-commonmark-ghpages (= 0.4.0) - jekyll-default-layout (= 0.1.5) - jekyll-feed (= 0.17.0) - jekyll-gist (= 1.5.0) - jekyll-github-metadata (= 2.16.1) - jekyll-include-cache (= 0.2.1) - jekyll-mentions (= 1.6.0) - jekyll-optional-front-matter (= 0.3.2) - jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.3.0) - jekyll-redirect-from (= 0.16.0) - jekyll-relative-links (= 0.6.1) - jekyll-remote-theme (= 0.4.3) - jekyll-sass-converter (= 1.5.2) - jekyll-seo-tag (= 2.8.0) - jekyll-sitemap (= 1.4.0) - jekyll-swiss (= 1.0.0) - jekyll-theme-architect (= 0.2.0) - jekyll-theme-cayman (= 0.2.0) - jekyll-theme-dinky (= 0.2.0) - jekyll-theme-hacker (= 0.2.0) - jekyll-theme-leap-day (= 0.2.0) - jekyll-theme-merlot (= 0.2.0) - jekyll-theme-midnight (= 0.2.0) - jekyll-theme-minimal (= 0.2.0) - jekyll-theme-modernist (= 0.2.0) - jekyll-theme-primer (= 0.6.0) - jekyll-theme-slate (= 0.2.0) - jekyll-theme-tactile (= 0.2.0) - jekyll-theme-time-machine (= 0.2.0) - jekyll-titles-from-headings (= 0.5.3) - jemoji (= 0.13.0) - kramdown (= 2.4.0) - kramdown-parser-gfm (= 1.1.0) - liquid (= 4.0.4) - mercenary (~> 0.3) - minima (= 2.5.1) - nokogiri (>= 1.13.6, < 2.0) - rouge (= 3.30.0) - terminal-table (~> 1.4) - github-pages-health-check (1.18.2) - addressable (~> 2.3) - dnsruby (~> 1.60) - octokit (>= 4, < 8) - public_suffix (>= 3.0, < 6.0) - typhoeus (~> 1.3) - html-pipeline (2.14.3) - activesupport (>= 2) - nokogiri (>= 1.4) - htmlcompressor (0.4.0) - http_parser.rb (0.8.0) - i18n (1.14.5) - concurrent-ruby (~> 1.0) - jekyll (3.9.5) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (>= 0.7, < 2) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 2.0) - kramdown (>= 1.17, < 3) - liquid (~> 4.0) - mercenary (~> 0.3.3) - pathutil (~> 0.9) - rouge (>= 1.7, < 4) - safe_yaml (~> 1.0) - jekyll-avatar (0.8.0) - jekyll (>= 3.0, < 5.0) - jekyll-coffeescript (1.2.2) - coffee-script (~> 2.2) - coffee-script-source (~> 1.12) - jekyll-commonmark (1.4.0) - commonmarker (~> 0.22) - jekyll-commonmark-ghpages (0.4.0) - commonmarker (~> 0.23.7) - jekyll (~> 3.9.0) - jekyll-commonmark (~> 1.4.0) - rouge (>= 2.0, < 5.0) - jekyll-default-layout (0.1.5) - jekyll (>= 3.0, < 5.0) - jekyll-feed (0.17.0) - jekyll (>= 3.7, < 5.0) - jekyll-gist (1.5.0) - octokit (~> 4.2) - jekyll-github-metadata (2.16.1) - jekyll (>= 3.4, < 5.0) - octokit (>= 4, < 7, != 4.4.0) - jekyll-include-cache (0.2.1) - jekyll (>= 3.7, < 5.0) - jekyll-last-modified-at (1.3.2) - jekyll (>= 3.7, < 5.0) - jekyll-mentions (1.6.0) - html-pipeline (~> 2.3) - jekyll (>= 3.7, < 5.0) - jekyll-minifier (0.1.10) - cssminify2 (~> 2.0) - htmlcompressor (~> 0.4) - jekyll (>= 3.5) - json-minify (~> 0.0.3) - uglifier (~> 4.1) - jekyll-optional-front-matter (0.3.2) - jekyll (>= 3.0, < 5.0) - jekyll-paginate (1.1.0) - jekyll-readme-index (0.3.0) - jekyll (>= 3.0, < 5.0) - jekyll-redirect-from (0.16.0) - jekyll (>= 3.3, < 5.0) - jekyll-relative-links (0.6.1) - jekyll (>= 3.3, < 5.0) - jekyll-remote-theme (0.4.3) - addressable (~> 2.0) - jekyll (>= 3.5, < 5.0) - jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) - rubyzip (>= 1.3.0, < 3.0) - jekyll-sass-converter (1.5.2) - sass (~> 3.4) - jekyll-seo-tag (2.8.0) - jekyll (>= 3.8, < 5.0) - jekyll-sitemap (1.4.0) - jekyll (>= 3.7, < 5.0) - jekyll-swiss (1.0.0) - jekyll-theme-architect (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-cayman (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-dinky (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-hacker (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-leap-day (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-merlot (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-midnight (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-minimal (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-modernist (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-primer (0.6.0) - jekyll (> 3.5, < 5.0) - jekyll-github-metadata (~> 2.9) - jekyll-seo-tag (~> 2.0) - jekyll-theme-slate (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-tactile (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-time-machine (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-titles-from-headings (0.5.3) - jekyll (>= 3.3, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - jemoji (0.13.0) - gemoji (>= 3, < 5) - html-pipeline (~> 2.2) - jekyll (>= 3.0, < 5.0) - json (2.7.2) - json-minify (0.0.3) - json (> 0) - kramdown (2.4.0) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.4) - listen (3.9.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - logger (1.6.0) - mercenary (0.3.6) - minima (2.5.1) - jekyll (>= 3.5, < 5.0) - jekyll-feed (~> 0.9) - jekyll-seo-tag (~> 2.1) - minitest (5.24.1) - mutex_m (0.2.0) - net-http (0.4.1) - uri - nokogiri (1.16.7-x64-mingw-ucrt) - racc (~> 1.4) - nokogiri (1.16.7-x86_64-linux) - racc (~> 1.4) - octokit (4.25.1) - faraday (>= 1, < 3) - sawyer (~> 0.9) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (5.1.1) - racc (1.8.1) - rb-fsevent (0.11.2) - rb-inotify (0.11.1) - ffi (~> 1.0) - rexml (3.3.4) - strscan - rouge (3.30.0) - rubyzip (2.3.2) - safe_yaml (1.0.5) - sass (3.7.4) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.9.2) - addressable (>= 2.3.5) - faraday (>= 0.17.3, < 3) - simpleidn (0.2.3) - strscan (3.1.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) - typhoeus (1.4.1) - ethon (>= 0.9.0) - tzinfo (2.0.6) - concurrent-ruby (~> 1.0) - uglifier (4.2.0) - execjs (>= 0.3.0, < 3) - unicode-display_width (1.8.0) - uri (0.13.0) - wdm (0.2.0) - webrick (1.8.1) - -PLATFORMS - x64-mingw-ucrt - x86_64-linux - -DEPENDENCIES - eventmachine (= 1.2.7)! - faraday-retry - github-pages - jekyll-github-metadata - jekyll-last-modified-at - jekyll-minifier - jekyll-redirect-from - jekyll-seo-tag - jekyll-sitemap - wdm (>= 0.1.1) - webrick - -BUNDLED WITH - 2.4.7 diff --git a/docs/README.md b/docs/README.md index d7d038515..e76bddab9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,4 +2,4 @@ Visit [dotnet.stockindicators.dev](https://dotnet.stockindicators.dev) to read our documentation. -It is developed with Jekyll for GitHub Pages and is not intended to be read from the code repo. +It is developed with DocFX and is not intended to be read from the code repo. diff --git a/docs/_config.yml b/docs/_config.yml index e053db15c..66e9d39ed 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -1,5 +1,4 @@ -# Ref: https://jekyllrb.com/docs/usage/ -# Local dev: bundle exec jekyll serve --livereload +### YamlMime:ManagedReference title: Stock Indicators for .NET tagline: "Transform price quotes into trading insights." diff --git a/docs/_includes/candle-result.md b/docs/_includes/candle-result.md index 920aec1c3..9a798b25d 100644 --- a/docs/_includes/candle-result.md +++ b/docs/_includes/candle-result.md @@ -4,6 +4,6 @@ **`Price`** _`decimal`_ - Price of the most relevant OHLC candle element when a signal is present -**`Match`** _`Match`_ - Indicates a [matching signal type]({{site.baseurl}}/guide/#match) for this candlestick pattern +**`Match`** _`Match`_ - Indicates a [matching signal type](pages/guide.md#match) for this candlestick pattern -**`Candle`** _`CandleProperties`_ - Details of the [candle properties]({{site.baseurl}}/guide/#candle) +**`Candle`** _`CandleProperties`_ - Details of the [candle properties](pages/guide.md#candle) diff --git a/docs/_includes/cyclotron.html b/docs/_includes/cyclotron.html deleted file mode 100644 index d930c13c9..000000000 --- a/docs/_includes/cyclotron.html +++ /dev/null @@ -1,48 +0,0 @@ -{% comment %} -Previous / Next functions -Assign variables from the entire indicators collection -{% endcomment %} -{% assign items_raw = site.indicators %} -{% assign items = items_raw | sort: 'title' | reverse %} - -{% if items.size > 1 %} - {% comment %} - Store the index position of the matching items - {% endcomment %} - {% for item in items %} - {% if item.title == page.title %} - {% assign item_index = forloop.index %} - {% endif %} - {% endfor %} - - {% assign prev_index = item_index | plus: 1 %} - {% assign next_index = item_index | minus: 1 %} - {% assign last_index = items.size %} - - {% comment %} - Handle end of range scenarios - {% endcomment %} - {% if prev_index > last_index %} - {% assign prev_index = 1 %} - {% endif %} - {% if next_index <= 0 %} - {% assign next_index = last_index %} - {% endif %} - - {% comment %} - Lookup prev/next items - {% endcomment %} - {% for item in items %} - {% if forloop.index == prev_index %} - {% assign prev = item %} - {% endif %} - {% if forloop.index == next_index %} - {% assign next = item %} - {% endif %} - {% endfor %} - -
- - -
-{% endif %} \ No newline at end of file diff --git a/docs/_includes/footer.html b/docs/_includes/footer.html deleted file mode 100644 index 3cd7e2369..000000000 --- a/docs/_includes/footer.html +++ /dev/null @@ -1,21 +0,0 @@ - \ No newline at end of file diff --git a/docs/_includes/head.html b/docs/_includes/head.html index e97ec2470..cd38c6ee1 100644 --- a/docs/_includes/head.html +++ b/docs/_includes/head.html @@ -18,7 +18,7 @@ {%- endif -%} {%- if page.redirect == true -%} - + {%- endif -%} {% seo %} diff --git a/docs/_includes/header.html b/docs/_includes/header.html deleted file mode 100644 index b01b39502..000000000 --- a/docs/_includes/header.html +++ /dev/null @@ -1,23 +0,0 @@ - diff --git a/docs/_indicators/Adl.md b/docs/_indicators/Adl.md index 48acef9f0..af792b38c 100644 --- a/docs/_indicators/Adl.md +++ b/docs/_indicators/Adl.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Marc Chaikin, the [Accumulation/Distribution Line/Index](https://en.wikipedia.org/wiki/Accumulation/distribution_index) is a rolling accumulation of Chaikin Money Flow Volume. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/271 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/271 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -32,7 +32,7 @@ IEnumerable results = You must have at least two historical quotes to cover the warmup periods; however, since this is a trendline, more is recommended. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -60,11 +60,11 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Adx.md b/docs/_indicators/Adx.md index afcfe2ece..38c6cc708 100644 --- a/docs/_indicators/Adx.md +++ b/docs/_indicators/Adx.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by J. Welles Wilder, the Directional Movement Index (DMI) and [Average Directional Movement Index](https://en.wikipedia.org/wiki/Average_directional_movement_index) (ADX) is a measure of price directional movement. It includes upward and downward indicators, and is often used to measure strength of trend. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/270 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/270 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -26,9 +26,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `2×N+100` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. We generally recommend you use at least `2×N+250` data points prior to the intended usage date for better precision. +You must have at least `2×N+100` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. We generally recommend you use at least `2×N+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -57,12 +57,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Alligator.md b/docs/_indicators/Alligator.md index c3433c43f..6c08d335c 100644 --- a/docs/_indicators/Alligator.md +++ b/docs/_indicators/Alligator.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by Bill Williams, Alligator is a depiction of three smoothed moving averages of median price, showing chart patterns that compared to an alligator's feeding habits when describing market movement. The moving averages are known as the Jaw, Teeth, and Lips, which are calculated using lookback and offset periods. See also the [Gator Oscillator]({{site.baseurl}}/indicators/Gator/#content). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/385 "Community discussion about this indicator") +Created by Bill Williams, Alligator is a depiction of three smoothed moving averages of median price, showing chart patterns that compared to an alligator's feeding habits when describing market movement. The moving averages are known as the Jaw, Teeth, and Lips, which are calculated using lookback and offset periods. See also the [Gator Oscillator](/indicators/Gator). +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/385 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -36,9 +36,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `JP+JO+100` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `JP+JO+250` data points prior to the intended usage date for better precision. +You must have at least `JP+JO+100` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `JP+JO+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -65,12 +65,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Alma.md b/docs/_indicators/Alma.md index d378287cf..ab5c5b215 100644 --- a/docs/_indicators/Alma.md +++ b/docs/_indicators/Alma.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by Arnaud Legoux and Dimitrios Kouzis-Loukas, [ALMA]({{site.github.repository_url}}/files/5654531/ALMA-Arnaud-Legoux-Moving-Average.pdf) is a normal Gaussian distribution weighted moving average of price. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/209 "Community discussion about this indicator") +Created by Arnaud Legoux and Dimitrios Kouzis-Loukas, [ALMA](https://github.com/DaveSkender/Stock.Indicators/files/5654531/ALMA-Arnaud-Legoux-Moving-Average.pdf) is a normal Gaussian distribution weighted moving average of price. +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/209 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -32,7 +32,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -53,12 +53,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Aroon.md b/docs/_indicators/Aroon.md index 14d8b3fb7..dc7002799 100644 --- a/docs/_indicators/Aroon.md +++ b/docs/_indicators/Aroon.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Tushar Chande, [Aroon](https://school.stockcharts.com/doku.php?id=technical_indicators:aroon) is a oscillator view of how long ago the new high or low price occurred. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/266 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/266 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -53,12 +53,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Atr.md b/docs/_indicators/Atr.md index 7b851348e..fb7181fb3 100644 --- a/docs/_indicators/Atr.md +++ b/docs/_indicators/Atr.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by J. Welles Wilder, True Range and [Average True Range](https://en.wikipedia.org/wiki/Average_true_range) is a measure of volatility that captures gaps and limits between periods. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/269 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/269 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -34,9 +34,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `N+100` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. +You must have at least `N+100` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -63,12 +63,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/AtrStop.md b/docs/_indicators/AtrStop.md index 742eba953..60b4f2397 100644 --- a/docs/_indicators/AtrStop.md +++ b/docs/_indicators/AtrStop.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by Welles Wilder, the ATR Trailing Stop indicator attempts to determine the primary trend of Close prices by using [Average True Range (ATR)]({{site.baseurl}}/indicators/Atr/#content) band thresholds. It can indicate a buy/sell signal or a trailing stop when the trend changes. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/724 "Community discussion about this indicator") +Created by Welles Wilder, the ATR Trailing Stop indicator attempts to determine the primary trend of Close prices by using [Average True Range (ATR)](/indicators/Atr) band thresholds. It can indicate a buy/sell signal or a trailing stop when the trend changes. +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/724 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,9 +30,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `N+100` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` periods prior to the intended usage date for optimal precision. +You must have at least `N+100` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` periods prior to the intended usage date for optimal precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ### EndType options @@ -67,12 +67,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Awesome.md b/docs/_indicators/Awesome.md index cbade963f..362ea6c44 100644 --- a/docs/_indicators/Awesome.md +++ b/docs/_indicators/Awesome.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Bill Williams, the Awesome Oscillator (aka Super AO) is a measure of the gap between a fast and slow period modified moving average. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/282 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/282 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,7 +30,7 @@ IEnumerable results = You must have at least `S` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -53,12 +53,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/BasicQuote.md b/docs/_indicators/BasicQuote.md index 765060e69..2504de954 100644 --- a/docs/_indicators/BasicQuote.md +++ b/docs/_indicators/BasicQuote.md @@ -18,13 +18,13 @@ IEnumerable results = ## Parameters -**`candlePart`** _`CandlePart`_ - The [OHLCV]({{site.baseurl}}/guide/#historical-quotes) element or simple price transform. See [CandlePart options](#candlepart-options) below. +**`candlePart`** _`CandlePart`_ - The [OHLCV](pages/guide.md#historical-quotes) element or simple price transform. See [CandlePart options](#candlepart-options) below. ### Historical quotes requirements You must have at least 1 period of `quotes`. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. {% include candlepart-options.md %} @@ -46,9 +46,9 @@ IEnumerable ### Utilities -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Beta.md b/docs/_indicators/Beta.md index bf47c3e59..3b4eccf44 100644 --- a/docs/_indicators/Beta.md +++ b/docs/_indicators/Beta.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} [Beta](https://en.wikipedia.org/wiki/Beta_(finance)) shows how strongly one asset's price responds to systemic volatility of the entire market. [Upside Beta](https://en.wikipedia.org/wiki/Upside_beta) (Beta+) and [Downside Beta](https://en.wikipedia.org/wiki/Downside_beta) (Beta-), [popularized by Harry M. Markowitz](https://www.jstor.org/stable/j.ctt1bh4c8h), are also included. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/268 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/268 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -22,7 +22,7 @@ IEnumerable results = quotesEval ## Parameters -**`quotesMarket`** _`IEnumerable`_ - [Historical quotes]({{site.baseurl}}/guide/#historical-quotes) market data should be at any consistent frequency (day, hour, minute, etc). This `market` quotes will be used to establish the baseline. +**`quotesMarket`** _`IEnumerable`_ - [Historical quotes](pages/guide.md#historical-quotes) market data should be at any consistent frequency (day, hour, minute, etc). This `market` quotes will be used to establish the baseline. **`lookbackPeriods`** _`int`_ - Number of periods (`N`) in the lookback window. Must be greater than 0 to calculate; however we suggest a larger period for statistically appropriate sample size and especially when using Beta +/-. @@ -30,7 +30,7 @@ IEnumerable results = quotesEval ### Historical quotes requirements -You must have at least `N` periods of `quotesEval` to cover the warmup periods. You must have at least the same matching date elements of `quotesMarket`. An `InvalidQuotesException` will be thrown if not matched. Historical price quotes should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +You must have at least `N` periods of `quotesEval` to cover the warmup periods. You must have at least the same matching date elements of `quotesMarket`. An `InvalidQuotesException` will be thrown if not matched. Historical price quotes should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. #### BetaType options @@ -44,7 +44,7 @@ You must have at least `N` periods of `quotesEval` to cover the warmup periods. > 💡 **Pro tip** > -> Financial institutions often depict a single number for Beta on their sites. To get that same long-term Beta value, use 5 years of monthly bars for `quotes` and a value of 60 for `lookbackPeriods`. If you only have smaller bars, use the [Aggregate()]({{site.baseurl}}/utilities#resize-quote-history) utility to convert it. +> Financial institutions often depict a single number for Beta on their sites. To get that same long-term Beta value, use 5 years of monthly bars for `quotes` and a value of 60 for `lookbackPeriods`. If you only have smaller bars, use the [Aggregate()](pages/utilities.md#resize-quote-history) utility to convert it. > > [Alpha](https://en.wikipedia.org/wiki/Alpha_(finance)) is calculated as `R – Rf – Beta (Rm - Rf)`, where `Rf` is the risk-free rate. @@ -79,12 +79,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/BollingerBands.md b/docs/_indicators/BollingerBands.md index 94837ad65..83d2dc70f 100644 --- a/docs/_indicators/BollingerBands.md +++ b/docs/_indicators/BollingerBands.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by John Bollinger, [Bollinger Bands](https://en.wikipedia.org/wiki/Bollinger_Bands) price channels depict volatility as standard deviation boundary line range from a moving average of price. Bollinger Bands® is a registered trademark of John A. Bollinger. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/267 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/267 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,7 +30,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -61,12 +61,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Bop.md b/docs/_indicators/Bop.md index 6fa6f02c9..3960363ae 100644 --- a/docs/_indicators/Bop.md +++ b/docs/_indicators/Bop.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Igor Levshin, the [Balance of Power](https://school.stockcharts.com/doku.php?id=technical_indicators:balance_of_power) (aka Balance of Market Power) is a momentum oscillator that depicts the strength of buying and selling pressure. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/302 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/302 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -49,12 +49,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Cci.md b/docs/_indicators/Cci.md index 9b9c27cb6..d3b4ee3e5 100644 --- a/docs/_indicators/Cci.md +++ b/docs/_indicators/Cci.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Donald Lambert, the [Commodity Channel Index](https://en.wikipedia.org/wiki/Commodity_channel_index) is an oscillator depicting deviation from typical price range, often used to identify cyclical trends. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/265 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/265 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N+1` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -49,12 +49,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/ChaikinOsc.md b/docs/_indicators/ChaikinOsc.md index 7bc660857..2fc0cc10f 100644 --- a/docs/_indicators/ChaikinOsc.md +++ b/docs/_indicators/ChaikinOsc.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by Marc Chaikin, the [Chaikin Oscillator](https://en.wikipedia.org/wiki/Chaikin_Analytics#Chaikin_Oscillator) is the difference between fast and slow Exponential Moving Averages (EMA) of the [Accumulation/Distribution Line]({{site.baseurl}}/indicators/Adl/#content) (ADL). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/264 "Community discussion about this indicator") +Created by Marc Chaikin, the [Chaikin Oscillator](https://en.wikipedia.org/wiki/Chaikin_Analytics#Chaikin_Oscillator) is the difference between fast and slow Exponential Moving Averages (EMA) of the [Accumulation/Distribution Line](/indicators/Adl) (ADL). +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/264 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,9 +28,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `2×S` or `S+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `S+250` data points prior to the intended usage date for better precision. +You must have at least `2×S` or `S+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `S+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -61,12 +61,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Chandelier.md b/docs/_indicators/Chandelier.md index bbcaec658..56e2a5216 100644 --- a/docs/_indicators/Chandelier.md +++ b/docs/_indicators/Chandelier.md @@ -11,9 +11,9 @@ layout: indicator # {{ page.title }} Created by Charles Le Beau, the [Chandelier Exit](https://school.stockcharts.com/doku.php?id=technical_indicators:chandelier_exit) is an adjusted Average True Range (ATR) offset from price that is is typically used for stop-loss and can be computed for both long or short types. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/263 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/263 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -33,7 +33,7 @@ IEnumerable results = You must have at least `N+1` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ### ChandelierType options @@ -60,12 +60,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Chop.md b/docs/_indicators/Chop.md index 491f1bfb0..8f2dfeef8 100644 --- a/docs/_indicators/Chop.md +++ b/docs/_indicators/Chop.md @@ -9,9 +9,9 @@ layout: indicator # {{ page.title }} -Created by E.W. Dreiss, the Choppiness Index measures the trendiness or choppiness on a scale of 0 to 100, to depict steady trends versus conditions of choppiness. [[Discuss] 💬]({{site.github.repository_url}}/discussions/357 "Community discussion about this indicator") +Created by E.W. Dreiss, the Choppiness Index measures the trendiness or choppiness on a scale of 0 to 100, to depict steady trends versus conditions of choppiness. [[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/357 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -27,7 +27,7 @@ IEnumerable results = You must have at least `N+1` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -48,12 +48,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Cmf.md b/docs/_indicators/Cmf.md index 8a254c0b4..44570c7bf 100644 --- a/docs/_indicators/Cmf.md +++ b/docs/_indicators/Cmf.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Marc Chaikin, [Chaikin Money Flow](https://en.wikipedia.org/wiki/Chaikin_Analytics#Chaikin_Money_Flow) is the simple moving average of the directional Money Flow Volume. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/261 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/261 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N+1` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -55,12 +55,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Cmo.md b/docs/_indicators/Cmo.md index a57e08b48..6ca963314 100644 --- a/docs/_indicators/Cmo.md +++ b/docs/_indicators/Cmo.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Tushar Chande, the [Chande Momentum Oscillator](https://www.investopedia.com/terms/c/chandemomentumoscillator.asp) is a weighted percent of higher prices over a lookback window. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/892 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/892 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N+1` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -49,12 +49,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/ConnorsRsi.md b/docs/_indicators/ConnorsRsi.md index df6a07227..d30a5fb5d 100644 --- a/docs/_indicators/ConnorsRsi.md +++ b/docs/_indicators/ConnorsRsi.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Laurence Connors, the [ConnorsRSI](https://alvarezquanttrading.com/wp-content/uploads/2016/05/ConnorsRSIGuidebook.pdf) is a composite oscillator that incorporates RSI, winning/losing streaks, and percentile gain metrics on scale of 0 to 100. See [analysis](https://alvarezquanttrading.com/blog/connorsrsi-analysis). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/260 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/260 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,9 +30,9 @@ IEnumerable results = ### Historical quotes requirements -`N` is the greater of `R+100`, `S`, and `P+2`. You must have at least `N` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+150` data points prior to the intended usage date for better precision. +`N` is the greater of `R+100`, `S`, and `P+2`. You must have at least `N` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+150` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -61,12 +61,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Correlation.md b/docs/_indicators/Correlation.md index 7f0a307a3..834ca4536 100644 --- a/docs/_indicators/Correlation.md +++ b/docs/_indicators/Correlation.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Karl Pearson, the [Correlation Coefficient](https://en.wikipedia.org/wiki/Correlation_coefficient) depicts the linear statistical correlation between two quote histories. R-Squared (R²), Variance, and Covariance are also output. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/259 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/259 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -22,7 +22,7 @@ IEnumerable results = ## Parameters -**`quotesB`** _`IEnumerable`_ - [Historical quotes]({{site.baseurl}}/guide/#historical-quotes) (B) must have at least the same matching date elements of `quotesA`. +**`quotesB`** _`IEnumerable`_ - [Historical quotes](pages/guide.md#historical-quotes) (B) must have at least the same matching date elements of `quotesA`. **`lookbackPeriods`** _`int`_ - Number of periods (`N`) in the lookback period. Must be greater than 0 to calculate; however we suggest a larger period for statistically appropriate sample size. @@ -30,7 +30,7 @@ IEnumerable results = You must have at least `N` periods for both versions of `quotes` to cover the warmup periods. Mismatch histories will produce a `InvalidQuotesException`. Historical price quotes should have a consistent frequency (day, hour, minute, etc). -`quotesA` is an `IEnumerable` collection of historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotesA` is an `IEnumerable` collection of historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -59,12 +59,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Dema.md b/docs/_indicators/Dema.md index 6cd007d5e..fccd3b789 100644 --- a/docs/_indicators/Dema.md +++ b/docs/_indicators/Dema.md @@ -12,9 +12,9 @@ redirect_from: # {{ page.title }} Created by Patrick G. Mulloy, the [Double exponential moving average](https://en.wikipedia.org/wiki/Double_exponential_moving_average) is a faster smoothed EMA of the price over a lookback window. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/807 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/807 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,9 +28,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `3×N` or `2×N+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `2×N+250` data points prior to the intended usage date for better precision. +You must have at least `3×N` or `2×N+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `2×N+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -53,12 +53,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Doji.md b/docs/_indicators/Doji.md index 42c32d134..a19425f98 100644 --- a/docs/_indicators/Doji.md +++ b/docs/_indicators/Doji.md @@ -10,9 +10,9 @@ type: candlestick-pattern # {{ page.title }} [Doji](https://en.wikipedia.org/wiki/Doji) is a single-bar candlestick pattern where open and close price are virtually identical, representing market indecision. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/734 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/734 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least one historical quote; however, more is typically provided since this is a chartable candlestick pattern. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -47,8 +47,8 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. diff --git a/docs/_indicators/Donchian.md b/docs/_indicators/Donchian.md index 8f1c1d9a8..5c59e68de 100644 --- a/docs/_indicators/Donchian.md +++ b/docs/_indicators/Donchian.md @@ -11,9 +11,9 @@ layout: indicator # {{ page.title }} Created by Richard Donchian, [Donchian Channels](https://en.wikipedia.org/wiki/Donchian_channel), also called Price Channels, are price ranges derived from highest High and lowest Low values. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/257 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/257 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -29,7 +29,7 @@ IEnumerable results = You must have at least `N+1` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -56,12 +56,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Dpo.md b/docs/_indicators/Dpo.md index 17a346fdb..59b84a303 100644 --- a/docs/_indicators/Dpo.md +++ b/docs/_indicators/Dpo.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} [Detrended Price Oscillator](https://en.wikipedia.org/wiki/Detrended_price_oscillator) depicts the difference between price and an offset simple moving average. It is used to identify trend cycles and duration. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/551 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/551 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N` historical quotes to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -51,11 +51,11 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Dynamic.md b/docs/_indicators/Dynamic.md index 05a8e9fdc..283888222 100644 --- a/docs/_indicators/Dynamic.md +++ b/docs/_indicators/Dynamic.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by John R. McGinley, the [McGinley Dynamic](https://www.investopedia.com/terms/m/mcginley-dynamic.asp) is a more responsive variant of exponential moving average. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/866 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/866 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax (with Close price) @@ -28,9 +28,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `2` periods of `quotes`, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `4×N` data points prior to the intended usage date for better precision. +You must have at least `2` periods of `quotes`, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `4×N` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ### Pro tips @@ -59,11 +59,11 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/ElderRay.md b/docs/_indicators/ElderRay.md index a3fadf142..276f0f44a 100644 --- a/docs/_indicators/ElderRay.md +++ b/docs/_indicators/ElderRay.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Alexander Elder, the [Elder-ray Index](https://www.investopedia.com/terms/e/elderray.asp), also known as Bull and Bear Power, is an oscillator that depicts buying and selling pressure. It compares current high/low prices against an Exponential Moving Average. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/378 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/378 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -26,9 +26,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `2×N` or `N+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. +You must have at least `2×N` or `N+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -55,12 +55,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Ema.md b/docs/_indicators/Ema.md index 56c29d04a..368d86ff3 100644 --- a/docs/_indicators/Ema.md +++ b/docs/_indicators/Ema.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} [Exponentially weighted moving average](https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average) is a rolling moving average that puts more weight on current price. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/256 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/256 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax (with Close price) @@ -26,9 +26,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `2×N` or `N+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. +You must have at least `2×N` or `N+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -51,12 +51,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Epma.md b/docs/_indicators/Epma.md index f37865059..021d3d2dc 100644 --- a/docs/_indicators/Epma.md +++ b/docs/_indicators/Epma.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Endpoint Moving Average (EPMA), also known as Least Squares Moving Average (LSMA), plots the projected last point of a defined retrospective linear regression. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/371 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/371 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -49,12 +49,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Fcb.md b/docs/_indicators/Fcb.md index f0ccdc7f6..25ba2aabd 100644 --- a/docs/_indicators/Fcb.md +++ b/docs/_indicators/Fcb.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by Edward William Dreiss, Fractal Chaos Bands outline high and low price channels to depict broad less-chaotic price movements. FCB is a channelized depiction of Williams Fractal. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/347 "Community discussion about this indicator") +Created by Edward William Dreiss, Fractal Chaos Bands outline high and low price channels to depict broad less-chaotic price movements. FCB is a channelized depiction of Williams Fractal. +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/347 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -24,13 +24,13 @@ IEnumerable results = **`windowSpan`** _`int`_ - Fractal evaluation window span width (`S`). Must be at least 2. Default is 2. -The total evaluation window size is `2×S+1`, representing `±S` from the evaluation date. See [Williams Fractal]({{site.baseurl}}/indicators/Fractal/#content) for more information about Fractals and `windowSpan`. +The total evaluation window size is `2×S+1`, representing `±S` from the evaluation date. See [Williams Fractal](/indicators/Fractal) for more information about Fractals and `windowSpan`. ### Historical quotes requirements You must have at least `2×S+1` periods of `quotes` to cover the warmup periods; however, more is typically provided since this is a chartable candlestick pattern. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -53,12 +53,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/FisherTransform.md b/docs/_indicators/FisherTransform.md index 99a71ad22..08f6fd51c 100644 --- a/docs/_indicators/FisherTransform.md +++ b/docs/_indicators/FisherTransform.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by John Ehlers, the [Fisher Transform](https://www.investopedia.com/terms/f/fisher-transform.asp) converts prices into a Gaussian normal distribution. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/409 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/409 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -26,9 +26,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `N` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. +You must have at least `N` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -52,9 +52,9 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) For pruning of warmup periods, we recommend using the following guidelines: @@ -63,7 +63,7 @@ quotes.GetFisherTransform(lookbackPeriods) .RemoveWarmupPeriods(lookbackPeriods+15); ``` -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/ForceIndex.md b/docs/_indicators/ForceIndex.md index 37535c53f..4934e5bab 100644 --- a/docs/_indicators/ForceIndex.md +++ b/docs/_indicators/ForceIndex.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Alexander Elder, the [Force Index](https://en.wikipedia.org/wiki/Force_index) depicts volume-based buying and selling pressure based on the change in price. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/382 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/382 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -26,9 +26,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `N+100` for `2×N` periods of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique for EMA, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. +You must have at least `N+100` for `2×N` periods of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique for EMA, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -51,12 +51,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Fractal.md b/docs/_indicators/Fractal.md index 78087ebf0..2b8bf8177 100644 --- a/docs/_indicators/Fractal.md +++ b/docs/_indicators/Fractal.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Larry Williams, [Fractal](https://www.investopedia.com/terms/f/fractal.asp) is a retrospective price pattern that identifies a central high or low point chevron. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/255 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/255 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -32,7 +32,7 @@ The total evaluation window size is `2×S+1`, representing `±S` from the evalua You must have at least `2×S+1` periods of `quotes` to cover the warmup periods; however, more is typically provided since this is a chartable candlestick pattern. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ### EndType options @@ -63,11 +63,11 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Gator.md b/docs/_indicators/Gator.md index 13e72fe9c..6005025a4 100644 --- a/docs/_indicators/Gator.md +++ b/docs/_indicators/Gator.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by Bill Williams, the Gator Oscillator is an expanded oscillator view of [Williams Alligator]({{site.baseurl}}/indicators/Alligator/#content)'s three moving averages. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/385 "Community discussion about this indicator") +Created by Bill Williams, the Gator Oscillator is an expanded oscillator view of [Williams Alligator](/indicators/Alligator)'s three moving averages. +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/385 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -27,9 +27,9 @@ IEnumerable results = quotes ## Historical quotes requirements -If using default settings, you must have at least 121 periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least 271 data points prior to the intended usage date for better precision. If using a custom Alligator configuration, see [Alligator documentation]({{site.baseurl}}/indicators/Alligator/#historical-quotes-requirements) for historical quotes requirements. +If using default settings, you must have at least 121 periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least 271 data points prior to the intended usage date for better precision. If using a custom Alligator configuration, see [Alligator documentation](/indicators/Alligator/#historical-quotes-requirements) for historical quotes requirements. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -58,12 +58,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/HeikinAshi.md b/docs/_indicators/HeikinAshi.md index 2d7a1e171..3cabf2af2 100644 --- a/docs/_indicators/HeikinAshi.md +++ b/docs/_indicators/HeikinAshi.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Munehisa Homma, [Heikin-Ashi](https://en.wikipedia.org/wiki/Candlestick_chart#Heikin-Ashi_candlesticks) is a modified candlestick pattern based on prior period prices for smoothing. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/254 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/254 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -24,7 +24,7 @@ IEnumerable results = You must have at least two periods of `quotes` to cover the warmup periods; however, more is typically provided since this is a chartable candlestick pattern. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -53,8 +53,8 @@ IEnumerable ### Utilities -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) - .ToQuotes() to convert to a `Quote` collection. Example: ```csharp @@ -63,7 +63,7 @@ IEnumerable .ToQuotes(); ``` -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Hma.md b/docs/_indicators/Hma.md index bde67341b..687586003 100644 --- a/docs/_indicators/Hma.md +++ b/docs/_indicators/Hma.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Alan Hull, the [Hull Moving Average](https://alanhull.com/hull-moving-average) is a modified weighted average of price that reduces lag. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/252 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/252 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N+(integer of SQRT(N))-1` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -49,12 +49,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/HtTrendline.md b/docs/_indicators/HtTrendline.md index e27e52baa..c1c720b78 100644 --- a/docs/_indicators/HtTrendline.md +++ b/docs/_indicators/HtTrendline.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by John Ehlers, the Hilbert Transform Instantaneous Trendline is a 5-period trendline of high/low price that that uses classic electrical radio-frequency signal processing algorithms reduce noise. Dominant Cycle Periods information is also provided. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/363 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/363 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -22,9 +22,9 @@ IEnumerable results = ## Historical quotes requirements -You must have at least `100` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. +You must have at least `100` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -52,12 +52,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Hurst.md b/docs/_indicators/Hurst.md index 0595ecca5..1c0d6bd2d 100644 --- a/docs/_indicators/Hurst.md +++ b/docs/_indicators/Hurst.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} The [Hurst Exponent](https://en.wikipedia.org/wiki/Hurst_exponent) (`H`) is part of a Rescaled Range Analysis, a [random-walk](https://en.wikipedia.org/wiki/Random_walk) path analysis that measures trending and mean-reverting tendencies of incremental return values. When `H` is greater than 0.5 it depicts trending. When `H` is less than 0.5 it is is more likely to revert to the mean. When `H` is around 0.5 it represents a random walk. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/477 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/477 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N+1` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -49,12 +49,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Ichimoku.md b/docs/_indicators/Ichimoku.md index ea4ce2618..47568dcea 100644 --- a/docs/_indicators/Ichimoku.md +++ b/docs/_indicators/Ichimoku.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Goichi Hosoda (細田悟一, Hosoda Goichi), [Ichimoku Cloud](https://en.wikipedia.org/wiki/Ichimoku_Kink%C5%8D_Hy%C5%8D), also known as Ichimoku Kinkō Hyō, is a collection of indicators that depict support and resistance, momentum, and trend direction. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/251 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/251 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -48,7 +48,7 @@ See overloads usage above to determine which parameters are relevant for each. You must have at least the greater of `T`,`K`, `S`, and offset periods for `quotes` to cover the warmup periods; though, given the leading and lagging nature, we recommend notably more. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -77,11 +77,11 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Kama.md b/docs/_indicators/Kama.md index 24b53c843..2882076fa 100644 --- a/docs/_indicators/Kama.md +++ b/docs/_indicators/Kama.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Perry Kaufman, [KAMA](https://school.stockcharts.com/doku.php?id=technical_indicators:kaufman_s_adaptive_moving_average) is an volatility adaptive moving average of price over configurable lookback periods. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/210 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/210 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,9 +30,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `6×E` or `E+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `10×E` data points prior to the intended usage date for better precision. +You must have at least `6×E` or `E+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `10×E` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -59,12 +59,12 @@ More about Efficiency Ratio: ER fluctuates between 0 and 1, but these extremes a ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Keltner.md b/docs/_indicators/Keltner.md index d56ed4ed5..a487ace9f 100644 --- a/docs/_indicators/Keltner.md +++ b/docs/_indicators/Keltner.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by Chester W. Keltner, [Keltner Channels](https://en.wikipedia.org/wiki/Keltner_channel) are based on an EMA centerline and ATR band widths. See also STARC Bands for an SMA centerline equivalent. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/249 "Community discussion about this indicator") +Created by Chester W. Keltner, [Keltner Channels](https://en.wikipedia.org/wiki/Keltner_channel) are based on an EMA centerline and ATR band widths. See also STARC Bands for an SMA centerline equivalent. +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/249 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,9 +30,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `2×N` or `N+100` periods of `quotes`, whichever is more, where `N` is the greater of `E` or `A` periods, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. +You must have at least `2×N` or `N+100` periods of `quotes`, whichever is more, where `N` is the greater of `E` or `A` periods, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -61,12 +61,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Kvo.md b/docs/_indicators/Kvo.md index 257b741ae..7f18179fd 100644 --- a/docs/_indicators/Kvo.md +++ b/docs/_indicators/Kvo.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Stephen Klinger, the [Klinger Volume Oscillator](https://www.investopedia.com/terms/k/klingeroscillator.asp) depicts volume-based trend reversal and divergence between short and long-term money flow. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/446 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/446 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,9 +30,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `L+100` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `L+150` data points prior to the intended usage date for better precision. +You must have at least `L+100` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `L+150` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -57,12 +57,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/MaEnvelopes.md b/docs/_indicators/MaEnvelopes.md index 88ba0c220..66be579a8 100644 --- a/docs/_indicators/MaEnvelopes.md +++ b/docs/_indicators/MaEnvelopes.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} [Moving Average Envelopes](https://en.wikipedia.org/wiki/Moving_average_envelope) is a price band channel overlay that is offset from the moving average of price. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/288 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/288 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -32,29 +32,29 @@ IEnumerable results = See links in the supported [MaType options](#matype-options) section below for details on the inherited requirements for `quotes` and `lookbackPeriods`. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ### MaType options These are the supported moving average types: -**`MaType.ALMA`** - [Arnaud Legoux Moving Average]({{site.baseurl}}/indicators/Alma/#content) +**`MaType.ALMA`** - [Arnaud Legoux Moving Average](/indicators/Alma) -**`MaType.DEMA`** - [Double Exponential Moving Average]({{site.baseurl}}/indicators/Dema/#content) +**`MaType.DEMA`** - [Double Exponential Moving Average](/indicators/Dema) -**`MaType.EPMA`** - [Endpoint Moving Average]({{site.baseurl}}/indicators/Epma/#content) +**`MaType.EPMA`** - [Endpoint Moving Average](/indicators/Epma) -**`MaType.EMA`** - [Exponential Moving Average]({{site.baseurl}}/indicators/Ema/#content) +**`MaType.EMA`** - [Exponential Moving Average](/indicators/Ema) -**`MaType.HMA`** - [Hull Moving Average]({{site.baseurl}}/indicators/Hma/#content) +**`MaType.HMA`** - [Hull Moving Average](/indicators/Hma) -**`MaType.SMA`** - [Simple Moving Average]({{site.baseurl}}/indicators/Sma/#content) (default) +**`MaType.SMA`** - [Simple Moving Average](/indicators/Sma) (default) -**`MaType.SMMA`** - [Smoothed Moving Average]({{site.baseurl}}/indicators/Smma/#content) +**`MaType.SMMA`** - [Smoothed Moving Average](/indicators/Smma) -**`MaType.TEMA`** - [Triple Exponential Moving Average]({{site.baseurl}}/indicators/Tema/#content) +**`MaType.TEMA`** - [Triple Exponential Moving Average](/indicators/Tema) -**`MaType.WMA`** - [Weighted Moving Average]({{site.baseurl}}/indicators/Wma/#content) +**`MaType.WMA`** - [Weighted Moving Average](/indicators/Wma) > 🚩 **Warning**: For ALMA, default values are used for `offset` and `sigma`. @@ -85,11 +85,11 @@ The moving average `Centerline` is based on the `movingAverageType` type specifi ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Macd.md b/docs/_indicators/Macd.md index 72014585a..3c84c1839 100644 --- a/docs/_indicators/Macd.md +++ b/docs/_indicators/Macd.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Gerald Appel, [MACD](https://en.wikipedia.org/wiki/MACD) is a simple oscillator view of two converging / diverging exponential moving averages and their differences. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/248 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/248 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax (with Close price) @@ -30,9 +30,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `2×(S+P)` or `S+P+100` worth of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `S+P+250` data points prior to the intended usage date for better precision. +You must have at least `2×(S+P)` or `S+P+100` worth of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `S+P+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -63,12 +63,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Mama.md b/docs/_indicators/Mama.md index ce985f3e5..f08a9939f 100644 --- a/docs/_indicators/Mama.md +++ b/docs/_indicators/Mama.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by John Ehlers, the [MAMA](https://mesasoftware.com/papers/MAMA.pdf) indicator is a 5-period adaptive moving average of high/low price that uses classic electrical radio-frequency signal processing algorithms to reduce noise. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/211 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/211 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,9 +28,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `50` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. +You must have at least `50` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -55,12 +55,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Marubozu.md b/docs/_indicators/Marubozu.md index 75abe1d69..59fc02c41 100644 --- a/docs/_indicators/Marubozu.md +++ b/docs/_indicators/Marubozu.md @@ -10,9 +10,9 @@ type: candlestick-pattern # {{ page.title }} [Marubozu](https://en.wikipedia.org/wiki/Marubozu) is a single-bar candlestick pattern that has no wicks, representing consistent directional movement. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/512 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/512 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least one historical quote; however, more is typically provided since this is a chartable candlestick pattern. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -47,8 +47,8 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. diff --git a/docs/_indicators/Mfi.md b/docs/_indicators/Mfi.md index 16f58a2b0..7e9467e42 100644 --- a/docs/_indicators/Mfi.md +++ b/docs/_indicators/Mfi.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Quong and Soudack, the [Money Flow Index](https://en.wikipedia.org/wiki/Money_flow_index) is a price-volume oscillator that shows buying and selling momentum. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/247 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/247 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N+1` historical quotes to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -49,12 +49,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Obv.md b/docs/_indicators/Obv.md index 4da972f7d..467dd7fd6 100644 --- a/docs/_indicators/Obv.md +++ b/docs/_indicators/Obv.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Popularized by Joseph Granville, [On-balance Volume](https://en.wikipedia.org/wiki/On-balance_volume) is a rolling accumulation of volume based on Close price direction. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/246 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/246 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -32,7 +32,7 @@ IEnumerable results = You must have at least two historical quotes to cover the warmup periods; however, since this is a trendline, more is recommended. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -57,11 +57,11 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/ParabolicSar.md b/docs/_indicators/ParabolicSar.md index ee3bebee7..71b68ab36 100644 --- a/docs/_indicators/ParabolicSar.md +++ b/docs/_indicators/ParabolicSar.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by J. Welles Wilder, [Parabolic SAR](https://en.wikipedia.org/wiki/Parabolic_SAR) (stop and reverse) is a price-time based indicator used to determine trend direction and reversals. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/245 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/245 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax (standard) @@ -36,7 +36,7 @@ IEnumerable results = You must have at least two historical quotes to cover the warmup periods; however, we recommend at least 100 data points. Initial Parabolic SAR values prior to the first reversal are not accurate and are excluded from the results. Therefore, provide sufficient quotes to capture prior trend reversals, before your intended usage period. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -59,12 +59,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/PivotPoints.md b/docs/_indicators/PivotPoints.md index 727dc0d1e..7f7477019 100644 --- a/docs/_indicators/PivotPoints.md +++ b/docs/_indicators/PivotPoints.md @@ -11,9 +11,9 @@ layout: indicator [Pivot Points](https://en.wikipedia.org/wiki/Pivot_point_(technical_analysis)) depict support and resistance levels, based on prior calendar windows. You can specify window size (e.g. month, week, day, etc) and any of the traditional Floor Trading, Camarilla, Demark, Fibonacci, and Woodie variants. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/274 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/274 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -31,7 +31,7 @@ IEnumerable results = You must have at least `2` windows of `quotes` to cover the warmup periods. For example, if you specify a `Week` window size, you need at least 14 calendar days of `quotes`. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ### PeriodSize options (for windowSize) @@ -90,11 +90,11 @@ IEnumerable ### Utilities -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Pivots.md b/docs/_indicators/Pivots.md index 006f7d3cb..44478e6b2 100644 --- a/docs/_indicators/Pivots.md +++ b/docs/_indicators/Pivots.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Pivots is an extended customizable version of Williams Fractal that includes identification of Higher High, Lower Low, Higher Low, and Lower Low trends between pivots in a lookback window. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/436 "Community discussion about this indicator") +Pivots is an extended customizable version of Williams Fractal that includes identification of Higher High, Lower Low, Higher Low, and Lower Low trends between pivots in a lookback window. +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/436 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -36,7 +36,7 @@ The total evaluation window size is `L+R+1`. You must have at least `L+R+1` periods of `quotes` to cover the warmup periods; however, more is typically provided since this is a chartable candlestick pattern. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ### EndType options @@ -85,11 +85,11 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Pmo.md b/docs/_indicators/Pmo.md index 0739d04db..cb7525bcc 100644 --- a/docs/_indicators/Pmo.md +++ b/docs/_indicators/Pmo.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Carl Swenlin, the DecisionPoint [Price Momentum Oscillator](https://school.stockcharts.com/doku.php?id=technical_indicators:dppmo) is double-smoothed momentum indicator based on Rate of Change (ROC). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/244 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/244 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,9 +30,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `N` periods of `quotes`, where `N` is the greater of `T+S`,`2×T`, or `T+100` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses multiple smoothing operations, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. +You must have at least `N` periods of `quotes`, where `N` is the greater of `T+S`,`2×T`, or `T+100` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses multiple smoothing operations, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -57,12 +57,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Prs.md b/docs/_indicators/Prs.md index da25a9ea4..af6243941 100644 --- a/docs/_indicators/Prs.md +++ b/docs/_indicators/Prs.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -[Price Relative Strength (PRS)](https://en.wikipedia.org/wiki/Relative_strength), also called Comparative Relative Strength, shows the ratio of two quote histories, based on price. It is often used to compare against a market index or sector ETF. When using the optional `lookbackPeriods`, this also returns relative percent change over the specified periods. This is not the same as the more prevalent Relative Strength Index (RSI). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/243 "Community discussion about this indicator") +[Price Relative Strength (PRS)](https://en.wikipedia.org/wiki/Relative_strength), also called Comparative Relative Strength, shows the ratio of two quote histories, based on price. It is often used to compare against a market index or sector ETF. When using the optional `lookbackPeriods`, this also returns relative percent change over the specified periods. This is not the same as the more prevalent Relative Strength Index (RSI). +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/243 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -26,7 +26,7 @@ IEnumerable results = ## Parameters -**`quotesBase`** _`IEnumerable`_ - [Historical quotes]({{site.baseurl}}/guide/#historical-quotes) used as the basis for comparison. This is usually market index data. You must have the same number of periods as `quotesEval`. +**`quotesBase`** _`IEnumerable`_ - [Historical quotes](pages/guide.md#historical-quotes) used as the basis for comparison. This is usually market index data. You must have the same number of periods as `quotesEval`. **`lookbackPeriods`** _`int`_ - Optional. Number of periods (`N`) to lookback to compute % difference. Must be greater than 0 if specified or `null`. @@ -36,7 +36,7 @@ IEnumerable results = You must have at least `N` periods of `quotesEval` to calculate `PrsPercent` if `lookbackPeriods` is specified; otherwise, you must specify at least `S+1` periods. More than the minimum is typically specified. For this indicator, the elements must match (e.g. the `n`th elements must be the same date). An `Exception` will be thrown for mismatch dates. Historical price quotes should have a consistent frequency (day, hour, minute, etc). -`quotesEval` is an `IEnumerable` collection of historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotesEval` is an `IEnumerable` collection of historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -61,11 +61,11 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Pvo.md b/docs/_indicators/Pvo.md index 85292cf7f..4d0f4e78d 100644 --- a/docs/_indicators/Pvo.md +++ b/docs/_indicators/Pvo.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} The [Percentage Volume Oscillator](https://school.stockcharts.com/doku.php?id=technical_indicators:percentage_volume_oscillator_pvo) is a simple oscillator view of the rate of change between two converging / diverging exponential moving averages of Volume. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/305 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/305 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,9 +30,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `2×(S+P)` or `S+P+100` worth of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `S+P+250` data points prior to the intended usage date for better precision. +You must have at least `2×(S+P)` or `S+P+100` worth of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `S+P+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -59,12 +59,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Renko.md b/docs/_indicators/Renko.md index c7ede7e65..b415a0113 100644 --- a/docs/_indicators/Renko.md +++ b/docs/_indicators/Renko.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} The [Renko Chart](https://en.m.wikipedia.org/wiki/Renko_chart) is a Japanese price transformed candlestick pattern that uses "bricks" to show a defined increment of change over a non-linear time series. Transitions can use either `Close` or `High/Low` price values. An [ATR variant](#atr-variant) is also provided where brick size is determined by current Average True Range values. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/478 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/478 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,7 +30,7 @@ IEnumerable results = You must have at least two periods of `quotes` to cover the warmup periods; however, more is typically provided since this is a chartable candlestick pattern. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ### EndType options @@ -85,10 +85,10 @@ Each result record represents one Renko brick. ### Utilities -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## ATR Variant @@ -108,7 +108,7 @@ IEnumerable results = You must have at least `A+100` periods of `quotes`. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response for ATR @@ -120,4 +120,4 @@ IEnumerable - It always returns the same number of elements as there are in the historical quotes. - It does not return a single incremental indicator value. -> 👉 **Repaint warning**: When using the `GetRenkoAtr()` variant, the last [Average True Range (ATR)]({{site.baseurl}}/indicators/Atr/#content) value is used to set `brickSize`. Since the ATR changes over time, historical bricks will be repainted as new periods are added or updated in `quotes`. +> 👉 **Repaint warning**: When using the `GetRenkoAtr()` variant, the last [Average True Range (ATR)](/indicators/Atr) value is used to set `brickSize`. Since the ATR changes over time, historical bricks will be repainted as new periods are added or updated in `quotes`. diff --git a/docs/_indicators/Roc.md b/docs/_indicators/Roc.md index a001810bf..c9ec0e672 100644 --- a/docs/_indicators/Roc.md +++ b/docs/_indicators/Roc.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -[Rate of Change](https://en.wikipedia.org/wiki/Momentum_(technical_analysis)), also known as Momentum Oscillator, is the percent change of price over a lookback window. Momentum is the raw price change equivalent. A [Rate of Change with Bands]({{site.baseurl}}/indicators/RocWb/#content) variant, created by Vitali Apirine, is also available. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/242 "Community discussion about this indicator") +[Rate of Change](https://en.wikipedia.org/wiki/Momentum_(technical_analysis)), also known as Momentum Oscillator, is the percent change of price over a lookback window. Momentum is the raw price change equivalent. A [Rate of Change with Bands](/indicators/RocWb) variant, created by Vitali Apirine, is also available. +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/242 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -34,7 +34,7 @@ IEnumerable results = You must have at least `N+1` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -59,12 +59,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/RocWb.md b/docs/_indicators/RocWb.md index 2e59ecdf5..d1e4a283f 100644 --- a/docs/_indicators/RocWb.md +++ b/docs/_indicators/RocWb.md @@ -10,10 +10,10 @@ layout: indicator # {{ page.title }} -Rate of Change (ROC) with Bands, created by Vitali Apirine, is a volatility banded variant of [Rate of Change (ROC)]({{site.baseurl}}/indicators/Roc/#content). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/242 "Community discussion about this indicator") +Rate of Change (ROC) with Bands, created by Vitali Apirine, is a volatility banded variant of [Rate of Change (ROC)](/indicators/Roc). +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/242 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -33,7 +33,7 @@ IEnumerable results = You must have at least `N+1` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -60,12 +60,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/RollingPivots.md b/docs/_indicators/RollingPivots.md index f0872b6e4..94fb2ccca 100644 --- a/docs/_indicators/RollingPivots.md +++ b/docs/_indicators/RollingPivots.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by Dave Skender, Rolling Pivot Points is a modern update to traditional fixed calendar window Pivot Points. It depicts support and resistance levels, based on a defined _rolling_ window and offset. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/274 "Community discussion about this indicator") +Created by Dave Skender, Rolling Pivot Points is a modern update to traditional fixed calendar window Pivot Points. It depicts support and resistance levels, based on a defined _rolling_ window and offset. +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/274 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,13 +28,13 @@ IEnumerable results = **`pointType`** _`PivotPointType`_ - Type of Pivot Point. Default is `PivotPointType.Standard` -For example, a window of 8 with an offset of 4 would evaluate quotes like: `W W W W W W W W F F F F C`, where `W` is the window included in the Pivot Point calculation, and `F` is the distance from the current evaluation position `C`. A `quotes` with daily bars using `W/F` values of `20/10` would most closely match the `month` variant of the traditional [Pivot Points]({{site.baseurl}}/indicators/PivotPoints/#content) indicator. +For example, a window of 8 with an offset of 4 would evaluate quotes like: `W W W W W W W W F F F F C`, where `W` is the window included in the Pivot Point calculation, and `F` is the distance from the current evaluation position `C`. A `quotes` with daily bars using `W/F` values of `20/10` would most closely match the `month` variant of the traditional [Pivot Points](/indicators/PivotPoints) indicator. ### Historical quotes requirements You must have at least `W+F` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ### PivotPointType options @@ -79,11 +79,11 @@ IEnumerable ### Utilities -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Rsi.md b/docs/_indicators/Rsi.md index da77c62c2..2420be41a 100644 --- a/docs/_indicators/Rsi.md +++ b/docs/_indicators/Rsi.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by J. Welles Wilder, the [Relative Strength Index](https://en.wikipedia.org/wiki/Relative_strength_index) is an oscillator that measures strength of the winning/losing streak over `N` lookback periods on a scale of 0 to 100, to depict overbought and oversold conditions. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/224 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/224 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -26,9 +26,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `N+100` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `10×N` data points prior to the intended usage date for better precision. +You must have at least `N+100` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `10×N` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -51,12 +51,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Slope.md b/docs/_indicators/Slope.md index 3ff52e8ab..c0f682e4c 100644 --- a/docs/_indicators/Slope.md +++ b/docs/_indicators/Slope.md @@ -10,10 +10,10 @@ layout: indicator # {{ page.title }} [Slope of the best fit line](https://school.stockcharts.com/doku.php?id=technical_indicators:slope) is determined by an [ordinary least-squares simple linear regression](https://en.wikipedia.org/wiki/Simple_linear_regression) on price. It can be used to help identify trend strength and direction. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/241 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/241 "Community discussion about this indicator") -![image]({{site.baseurl}}/assets/charts/Linear.png) -![image]({{site.baseurl}}/assets/charts/Slope.png) +![image](/assets/charts/Linear.png) +![image](/assets/charts/Slope.png) ```csharp // C# usage syntax @@ -29,7 +29,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -61,12 +61,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Sma.md b/docs/_indicators/Sma.md index 153af6e1c..0e70454e9 100644 --- a/docs/_indicators/Sma.md +++ b/docs/_indicators/Sma.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} [Simple Moving Average](https://en.wikipedia.org/wiki/Moving_average#Simple_moving_average) is the average price over a lookback window. An [extended analysis](#analysis) option includes mean absolute deviation (MAD), mean square error (MSE), and mean absolute percentage error (MAPE). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/240 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/240 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax (with Close price) @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -49,12 +49,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Analysis diff --git a/docs/_indicators/Smi.md b/docs/_indicators/Smi.md index 77d0fd624..d53c82b90 100644 --- a/docs/_indicators/Smi.md +++ b/docs/_indicators/Smi.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by William Blau, the Stochastic Momentum Index (SMI) oscillator is a double-smoothed variant of the [Stochastic Oscillator]({{site.baseurl}}/indicators/Stoch/#content), depicted on a scale from -100 to 100. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/625 "Community discussion about this indicator") +Created by William Blau, the Stochastic Momentum Index (SMI) oscillator is a double-smoothed variant of the [Stochastic Oscillator](/indicators/Stoch), depicted on a scale from -100 to 100. +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/625 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax (standard) @@ -33,9 +33,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `N+100` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. +You must have at least `N+100` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -60,12 +60,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Smma.md b/docs/_indicators/Smma.md index 28ba68f48..ce9b444e3 100644 --- a/docs/_indicators/Smma.md +++ b/docs/_indicators/Smma.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} [Smoothed Moving Average](https://en.wikipedia.org/wiki/Moving_average) is the average of price over a lookback window using a smoothing method. SMMA is also known as modified moving average (MMA) and running moving average (RMA). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/375 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/375 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -26,9 +26,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `2×N` or `N+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. +You must have at least `2×N` or `N+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -51,12 +51,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/StarcBands.md b/docs/_indicators/StarcBands.md index 304a2c8d8..b606cb22e 100644 --- a/docs/_indicators/StarcBands.md +++ b/docs/_indicators/StarcBands.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by Manning Stoller, the [Stoller Average Range Channel (STARC) Bands](https://www.investopedia.com/terms/s/starc.asp), are price ranges based on an SMA centerline and ATR band widths. See also Keltner Channels for an EMA centerline equivalent. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/292 "Community discussion about this indicator") +Created by Manning Stoller, the [Stoller Average Range Channel (STARC) Bands](https://www.investopedia.com/terms/s/starc.asp), are price ranges based on an SMA centerline and ATR band widths. See also Keltner Channels for an EMA centerline equivalent. +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/292 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,9 +30,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `S` or `A+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `A+150` data points prior to the intended usage date for better precision. +You must have at least `S` or `A+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `A+150` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -59,12 +59,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Stc.md b/docs/_indicators/Stc.md index 0f9a2b7a9..b446dd87f 100644 --- a/docs/_indicators/Stc.md +++ b/docs/_indicators/Stc.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Doug Schaff, the [Schaff Trend Cycle](https://www.investopedia.com/articles/forex/10/schaff-trend-cycle-indicator.asp) is a stochastic oscillator view of two converging/diverging exponential moving averages. In other words, it's a Stochastic Oscillator of Moving Average Convergence / Divergence (MACD). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/570 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/570 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,9 +30,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `2×(S+C)` or `S+C+100` worth of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `S+C+250` data points prior to the intended usage date for better precision. +You must have at least `2×(S+C)` or `S+C+100` worth of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `S+C+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -55,12 +55,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/StdDev.md b/docs/_indicators/StdDev.md index f6b168805..5d8b58522 100644 --- a/docs/_indicators/StdDev.md +++ b/docs/_indicators/StdDev.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} [Standard Deviation](https://en.wikipedia.org/wiki/Standard_deviation) of price over a rolling lookback window. Also known as Historical Volatility (HV). Z-Score is also returned. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/239 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/239 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -34,7 +34,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -61,12 +61,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/StdDevChannels.md b/docs/_indicators/StdDevChannels.md index b03b8d06c..e496c9876 100644 --- a/docs/_indicators/StdDevChannels.md +++ b/docs/_indicators/StdDevChannels.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Standard Deviation Channels are prices ranges based on an linear regression centerline and standard deviations band widths. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/368 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/368 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,7 +30,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -59,18 +59,18 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Alternative depiction for full quotes variant If you specify `null` for the `lookbackPeriods`, you will get a regression line over the entire provided `quotes`. -![image]({{site.baseurl}}/assets/charts/StdDevChannelsFull.png) +![image](/assets/charts/StdDevChannelsFull.png) ## Chaining diff --git a/docs/_indicators/Stoch.md b/docs/_indicators/Stoch.md index 47ea9ddc6..540020c15 100644 --- a/docs/_indicators/Stoch.md +++ b/docs/_indicators/Stoch.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by George Lane, the [Stochastic Oscillator](https://en.wikipedia.org/wiki/Stochastic_oscillator), also known as KDJ Index, is a momentum oscillator that compares current price with recent highs and lows and is presented on a scale of 0 to 100. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/237 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/237 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax (standard) @@ -41,17 +41,17 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `N+S` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. +You must have at least `N+S` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ### MaType options These are the supported moving average types: -**`MaType.SMA`** - [Simple Moving Average]({{site.baseurl}}/indicators/Sma/#content) (default) +**`MaType.SMA`** - [Simple Moving Average](/indicators/Sma) (default) -**`MaType.SMMA`** - [Smoothed Moving Average]({{site.baseurl}}/indicators/Smma/#content) +**`MaType.SMMA`** - [Smoothed Moving Average](/indicators/Smma) ## Response @@ -80,12 +80,12 @@ Note: aliases of `K`, `D`, and `J` are also provided. They can be used intercha ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/StochRsi.md b/docs/_indicators/StochRsi.md index 2c3911848..ea9e01062 100644 --- a/docs/_indicators/StochRsi.md +++ b/docs/_indicators/StochRsi.md @@ -10,10 +10,10 @@ layout: indicator # {{ page.title }} -Created by by Tushar Chande and Stanley Kroll, [Stochastic RSI](https://school.stockcharts.com/doku.php?id=technical_indicators:stochrsi) is a Stochastic interpretation of the Relative Strength Index. It is different from, and often confused with the more traditional [Stochastic Oscillator]({{site.baseurl}}/indicators/Stoch/#content). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/236 "Community discussion about this indicator") +Created by by Tushar Chande and Stanley Kroll, [Stochastic RSI](https://school.stockcharts.com/doku.php?id=technical_indicators:stochrsi) is a Stochastic interpretation of the Relative Strength Index. It is different from, and often confused with the more traditional [Stochastic Oscillator](/indicators/Stoch). +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/236 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -35,9 +35,9 @@ The original Stochastic RSI formula uses a the Fast variant of the Stochastic ca ### Historical quotes requirements -You must have at least `N` periods of `quotes`, where `N` is the greater of `R+S+M` and `R+100` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique in the underlying RSI value, we recommend you use at least `10×R` periods prior to the intended usage date for better precision. +You must have at least `N` periods of `quotes`, where `N` is the greater of `R+S+M` and `R+100` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique in the underlying RSI value, we recommend you use at least `10×R` periods prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -62,12 +62,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/SuperTrend.md b/docs/_indicators/SuperTrend.md index d77160719..32a3bdc2a 100644 --- a/docs/_indicators/SuperTrend.md +++ b/docs/_indicators/SuperTrend.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by Oliver Seban, the SuperTrend indicator attempts to determine the primary trend of prices by using [Average True Range (ATR)]({{site.baseurl}}/indicators/Atr/#content) band thresholds around an HL2 midline. It can indicate a buy/sell signal or a trailing stop when the trend changes. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/235 "Community discussion about this indicator") +Created by Oliver Seban, the SuperTrend indicator attempts to determine the primary trend of prices by using [Average True Range (ATR)](/indicators/Atr) band thresholds around an HL2 midline. It can indicate a buy/sell signal or a trailing stop when the trend changes. +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/235 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,9 +28,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `N+100` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` periods prior to the intended usage date for optimal precision. +You must have at least `N+100` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `N+250` periods prior to the intended usage date for optimal precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -59,12 +59,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/T3.md b/docs/_indicators/T3.md index 0838bc801..2bd49b094 100644 --- a/docs/_indicators/T3.md +++ b/docs/_indicators/T3.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Tim Tillson, the [T3](https://www.forexfactory.com/attachment.php/845855?attachmentid=845855&d=1322724313) indicator is a smooth moving average that reduces both lag and overshooting. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/332 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/332 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,9 +28,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `6×(N-1)+100` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `6×(N-1)+250` data points prior to the intended usage date for better precision. +You must have at least `6×(N-1)+100` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `6×(N-1)+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -52,11 +52,11 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Tema.md b/docs/_indicators/Tema.md index 8e981a9f7..ff81f8568 100644 --- a/docs/_indicators/Tema.md +++ b/docs/_indicators/Tema.md @@ -12,9 +12,9 @@ redirect_from: # {{ page.title }} Created by Patrick G. Mulloy, the [Triple exponential moving average](https://en.wikipedia.org/wiki/Triple_exponential_moving_average) is a faster multi-smoothed EMA of the price over a lookback window. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/808 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/808 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,9 +28,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `4×N` or `3×N+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `3×N+250` data points prior to the intended usage date for better precision. +You must have at least `4×N` or `3×N+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `3×N+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -41,7 +41,7 @@ IEnumerable - This method returns a time series of all available indicator values for the `quotes` provided. - It always returns the same number of elements as there are in the historical quotes. - It does not return a single incremental indicator value. -- The first `N-1` periods will have `null` values since there's not enough data to calculate. Also note that we are using the proper [weighted variant](https://en.wikipedia.org/wiki/Triple_exponential_moving_average) for TEMA. If you prefer the unweighted raw 3 EMAs value, please use the `Ema3` output from the [TRIX]({{site.baseurl}}/indicators/Trix#content) oscillator instead. +- The first `N-1` periods will have `null` values since there's not enough data to calculate. Also note that we are using the proper [weighted variant](https://en.wikipedia.org/wiki/Triple_exponential_moving_average) for TEMA. If you prefer the unweighted raw 3 EMAs value, please use the `Ema3` output from the [TRIX](/indicators/Trix) oscillator instead. >⚞ **Convergence warning**: The first `3×N+100` periods will have decreasing magnitude, convergence-related precision errors that can be as high as ~5% deviation in indicator values for earlier periods. @@ -53,12 +53,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Trix.md b/docs/_indicators/Trix.md index de5f7947f..2191655b5 100644 --- a/docs/_indicators/Trix.md +++ b/docs/_indicators/Trix.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by Jack Hutson, [TRIX](https://en.wikipedia.org/wiki/Trix_(technical_analysis)) is the rate of change for a 3 EMA smoothing of the price over a lookback window. TRIX is often confused with [TEMA]({{site.baseurl}}/indicators/Tema/#content). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/234 "Community discussion about this indicator") +Created by Jack Hutson, [TRIX](https://en.wikipedia.org/wiki/Trix_(technical_analysis)) is the rate of change for a 3 EMA smoothing of the price over a lookback window. TRIX is often confused with [TEMA](/indicators/Tema). +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/234 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax for Trix @@ -32,9 +32,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `4×N` or `3×N+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `3×N+250` data points prior to the intended usage date for better precision. +You must have at least `4×N` or `3×N+100` periods of `quotes`, whichever is more, to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a smoothing technique, we recommend you use at least `3×N+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -61,12 +61,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Tsi.md b/docs/_indicators/Tsi.md index ab1582e10..3442e5252 100644 --- a/docs/_indicators/Tsi.md +++ b/docs/_indicators/Tsi.md @@ -11,9 +11,9 @@ layout: indicator # {{ page.title }} Created by William Blau, the [True Strength Index](https://en.wikipedia.org/wiki/True_strength_index) is a momentum oscillator that uses a series of exponential moving averages to depicts trends in price changes. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/300 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/300 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -31,9 +31,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `N+M+100` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since this uses a two EMA smoothing techniques, we recommend you use at least `N+M+250` data points prior to the intended usage date for better precision. +You must have at least `N+M+100` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since this uses a two EMA smoothing techniques, we recommend you use at least `N+M+250` data points prior to the intended usage date for better precision. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -59,12 +59,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/UlcerIndex.md b/docs/_indicators/UlcerIndex.md index 1a8263252..a22804ffa 100644 --- a/docs/_indicators/UlcerIndex.md +++ b/docs/_indicators/UlcerIndex.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Peter Martin, the [Ulcer Index](https://en.wikipedia.org/wiki/Ulcer_index) is a measure of downside price volatility over a lookback window. Often called the "heart attack" score, it measures the amount of pain seen from drawdowns in financial market prices and portfolio value. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/232 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/232 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -49,12 +49,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Ultimate.md b/docs/_indicators/Ultimate.md index 1db418397..0736b430e 100644 --- a/docs/_indicators/Ultimate.md +++ b/docs/_indicators/Ultimate.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Larry Williams, the [Ultimate Oscillator](https://en.wikipedia.org/wiki/Ultimate_oscillator) uses several moving averages to weigh buying power against true range price to produce on oversold / overbought oscillator. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/231 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/231 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -32,7 +32,7 @@ IEnumerable results = You must have at least `L+1` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -53,12 +53,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/VolatilityStop.md b/docs/_indicators/VolatilityStop.md index 78b67e0e3..666cb2554 100644 --- a/docs/_indicators/VolatilityStop.md +++ b/docs/_indicators/VolatilityStop.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by J. Welles Wilder, [Volatility Stop](https://archive.org/details/newconceptsintec00wild), also known his Volatility System, is an [ATR]({{site.baseurl}}/indicators/Atr/#content) based indicator used to determine trend direction, stops, and reversals. It is similar to Wilder's [Parabolic SAR]({{site.baseurl}}/indicators/ParabolicSar/#content) and [SuperTrend]({{site.baseurl}}/indicators/SuperTrend/#content). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/564 "Community discussion about this indicator") +Created by J. Welles Wilder, [Volatility Stop](https://archive.org/details/newconceptsintec00wild), also known his Volatility System, is an [ATR](/indicators/Atr) based indicator used to determine trend direction, stops, and reversals. It is similar to Wilder's [Parabolic SAR](/indicators/ParabolicSar) and [SuperTrend](/indicators/SuperTrend). +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/564 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,9 +28,9 @@ IEnumerable results = ### Historical quotes requirements -You must have at least `N+100` periods of `quotes` to cover the [warmup and convergence]({{site.github.repository_url}}/discussions/688) periods. Since the underlying ATR uses a smoothing technique, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. Initial values prior to the first reversal are not accurate and are excluded from the results. Therefore, provide sufficient quotes to capture prior trend reversals. +You must have at least `N+100` periods of `quotes` to cover the [warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) periods. Since the underlying ATR uses a smoothing technique, we recommend you use at least `N+250` data points prior to the intended usage date for better precision. Initial values prior to the first reversal are not accurate and are excluded from the results. Therefore, provide sufficient quotes to capture prior trend reversals. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -61,12 +61,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Vortex.md b/docs/_indicators/Vortex.md index 4814daa6a..748610220 100644 --- a/docs/_indicators/Vortex.md +++ b/docs/_indicators/Vortex.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Created by Etienne Botes and Douglas Siepman, the [Vortex Indicator](https://en.wikipedia.org/wiki/Vortex_indicator) is a measure of price directional movement. It includes positive and negative indicators, and is often used to identify trends and reversals. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/339 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/339 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N+1` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -51,12 +51,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Vwap.md b/docs/_indicators/Vwap.md index 913766769..edef1e337 100644 --- a/docs/_indicators/Vwap.md +++ b/docs/_indicators/Vwap.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} The [Volume Weighted Average Price](https://en.wikipedia.org/wiki/Volume-weighted_average_price) is a Volume weighted average of price, typically used on intraday data. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/310 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/310 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -32,7 +32,7 @@ IEnumerable results = You must have at least one historical quote to calculate; however, more is often needed to be useful. Historical quotes are typically provided for a single day using minute-based intraday periods. Since this is an accumulated weighted average price, different start dates will produce different results. The accumulation starts at the first period in the provided `quotes`, unless it is specified in the optional `startDate` parameter. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -54,12 +54,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Vwma.md b/docs/_indicators/Vwma.md index c10eb31fc..f0cddde61 100644 --- a/docs/_indicators/Vwma.md +++ b/docs/_indicators/Vwma.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} Volume Weighted Moving Average is the volume adjusted average price over a lookback window. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/657 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/657 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -49,12 +49,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/WilliamsR.md b/docs/_indicators/WilliamsR.md index 7ddfdc337..594d2952b 100644 --- a/docs/_indicators/WilliamsR.md +++ b/docs/_indicators/WilliamsR.md @@ -9,10 +9,10 @@ layout: indicator # {{ page.title }} -Created by Larry Williams, the [Williams %R](https://en.wikipedia.org/wiki/Williams_%25R) momentum oscillator compares current price with recent highs and lows and is presented on scale of -100 to 0. It is exactly the same as the fast variant of [Stochastic Oscillator]({{site.baseurl}}/indicators/Stoch/#content), but with a different scaling. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/229 "Community discussion about this indicator") +Created by Larry Williams, the [Williams %R](https://en.wikipedia.org/wiki/Williams_%25R) momentum oscillator compares current price with recent highs and lows and is presented on scale of -100 to 0. It is exactly the same as the fast variant of [Stochastic Oscillator](/indicators/Stoch), but with a different scaling. +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/229 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -49,12 +49,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/Wma.md b/docs/_indicators/Wma.md index ce93a8fd9..aa06e45d0 100644 --- a/docs/_indicators/Wma.md +++ b/docs/_indicators/Wma.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} [Weighted Moving Average](https://en.wikipedia.org/wiki/Moving_average#Weighted_moving_average) is the linear weighted average of price over a lookback window. This also called Linear Weighted Moving Average (LWMA). -[[Discuss] 💬]({{site.github.repository_url}}/discussions/227 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/227 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax (with Close price) @@ -28,7 +28,7 @@ IEnumerable results = You must have at least `N` periods of `quotes` to cover the warmup periods. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ## Response @@ -49,12 +49,12 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods()]({{site.baseurl}}/utilities#remove-warmup-periods) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods()](pages/utilities.md#remove-warmup-periods) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_indicators/ZigZag.md b/docs/_indicators/ZigZag.md index 5b3d1d069..8ec5c5bec 100644 --- a/docs/_indicators/ZigZag.md +++ b/docs/_indicators/ZigZag.md @@ -10,9 +10,9 @@ layout: indicator # {{ page.title }} [Zig Zag](https://school.stockcharts.com/doku.php?id=technical_indicators:zigzag) is a price chart overlay that simplifies the up and down movements and transitions based on a percent change smoothing threshold. -[[Discuss] 💬]({{site.github.repository_url}}/discussions/226 "Community discussion about this indicator") +[[Discuss] 💬](https://github.com/DaveSkender/Stock.Indicators/discussions/226 "Community discussion about this indicator") -![chart for {{page.title}}]({{site.baseurl}}{{page.image}}) +![chart for {{page.title}}]({{page.image}}) ```csharp // C# usage syntax @@ -30,7 +30,7 @@ IEnumerable results = You must have at least two periods of `quotes` to cover the warmup periods, but notably more is needed to be useful. -`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide]({{site.baseurl}}/guide/#historical-quotes) for more information. +`quotes` is a collection of generic `TQuote` historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See [the Guide](pages/guide.md#historical-quotes) for more information. ### EndType options @@ -69,11 +69,11 @@ IEnumerable ### Utilities -- [.Condense()]({{site.baseurl}}/utilities#condense) -- [.Find(lookupDate)]({{site.baseurl}}/utilities#find-indicator-result-by-date) -- [.RemoveWarmupPeriods(qty)]({{site.baseurl}}/utilities#remove-warmup-periods) +- [.Condense()](pages/utilities.md#condense) +- [.Find(lookupDate)](pages/utilities.md#find-indicator-result-by-date) +- [.RemoveWarmupPeriods(qty)](pages/utilities.md#remove-warmup-periods) -See [Utilities and helpers]({{site.baseurl}}/utilities#utilities-for-indicator-results) for more information. +See [Utilities and helpers](pages/utilities.md#utilities-for-indicator-results) for more information. ## Chaining diff --git a/docs/_layouts/base.html b/docs/_layouts/base.html deleted file mode 100644 index e0e8ac199..000000000 --- a/docs/_layouts/base.html +++ /dev/null @@ -1,21 +0,0 @@ - - - -{%- include head.html -%} - - {%- include header.html -%} - - -
- {{ content | replace: 'PREVIEW

- {%- endif -%} - - - diff --git a/docs/_layouts/indicator.html b/docs/_layouts/indicator.html deleted file mode 100644 index d934c7ef6..000000000 --- a/docs/_layouts/indicator.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: base ---- - -{% include cyclotron.html %} -{{ content }} -{% include footer.html %} - diff --git a/docs/_layouts/page.html b/docs/_layouts/page.html deleted file mode 100644 index 107aa20eb..000000000 --- a/docs/_layouts/page.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: base ---- - -{{ content }} -{% include footer.html %} \ No newline at end of file diff --git a/docs/assets/examples-1.png b/docs/assets/examples-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3129961a5f4fd3cd08e8a53c76f6cb2215fa9cd9 GIT binary patch literal 132529 zcmeFZ^;?wf7B(z4t%Q_-bayw>jdU{#Lzi@eAR*o04Bat=bPg%qEezcu-7)Zv``hm4 zdEVpQ?tkFp7dURNxvyAtu5+zxLf$D!qoWX_Jb3T`T~yj6EI{5kLHg)O}xa>%q(GimTK_s4q=77S?ZJF({h zBdTd@*Kxb9y$R9!ee0GEOc#_%Qpj8ZSZ|QTo{f95LF-_#RPvfSvW+)45$)Fj(ToHN zSU;ogL#sI|ISveN&f3$x%*;^$FFrkZ{N@4DbI}J6|I44|IS=N0&do9YH0J+%2?`mu z;ln??>0hJ#q)^`gEjbDJ|ND&pUeX(2yTBh;_G{dTIZ}W^1hx3H|1~dSnA@{I?-cPq zLZ(mAg`>c&|2glcXyk+cb#k9Xv!A?R=K`Y<|Ic|}urCw;d)xp0T+FK;h~-JeWj^{J z68rQ(jJoO3e-YbeVCPK7s9J)~pfw9>*~> z!B)b~p2r*e!T<}-JKD`_TWrHc2R?F7yo`#4>+W(tt@z~&^gi>l0&BbPr= z<$paFOOtrGZ^=vunn={7-li=bTGl!F8SHg53O3)9rOoyE*`X6o)`;GD!#iw-`s!$t zJ3-1)Sq!uD(IQBx^a_(nzkknbRYE*UDN%q?gYPJzJ_}}g!su%mvQ=;@w>R^%nR@*& zJt9-l1~!V;uZmO_+)`)U;tJah%P_Bf#=z$8;+)X)$9 zlPjFNe~2EWP!xQ}FE?fTL$pGn&A8GnN$Bitj%A(z28cEk<+WkcP~+-wca}=fQv>us zg|=4Xjc4OC6St9VS5x}X6`kwvs-tQ|UpQU9!71#NKd1`0p6_`X*WdT7gsBR2e#$?= zeR9u{V6=`hdf+nd->T-205)24$gHXQ-gw^45Kx3VR1lT^fp&6h@zu9f($}&aXxPF* z+FClx1~=m-URT?*L57(u;wipLKn~9{oF{KH;3RmmA8G6PRd6K9KAO&J?w=%`%Ns|Z z7wLqVviG|0QA98}4CxLZ=P%+G4N0eaYD;%!95}~Zcp4R%x7erZotNM)BatUB7?gpp zHv~g3JPa7pbQET6>t3?Y-?!j@`(v0CW%Mf`!#1{z%kVgz@3vULd-0RXM8RX2q*=%p zurG4i7I^sffEGxOguxUS7Fl65EPawB1;HSHiw856L0WhIVV+CPrb~rAqpHlYeRh>q zS*)=3#E%VV;?5)3!urwPQU?8&JI3J$t&5HbL#dqSb9M zp23?*v9{2nX8_W{wbQ+hq;&qy5-(GmDjOu+`TSay@XHxS`d0Tkmb-6bzUSju?7<^! z0XwL8f}}#_sc)6DJq=1EivAd*2gh+XCl8Zc_rq#B z0dB11^Eds&-Ds#Ox{Wh8SN`oIeC1$ZuEY6FB|*gKn&EvIW*|c&qSJA1zv79td}o-kehZM#bynA_Vi=pef^y8()`JqF5K~3 zQes2WfFZ$dF(k;)ph7WiC&pLVXpG6IH7_;|USXiS@ z)2+4g`X;%9h9R|FqMckfCc|jFQ5p?oZc`+8vh~c-!o-Lil)hzu>A$Sr+Fzd})J%Jd z2q>6zj9Iv{x(H9)OrxG=FLN<9pd*+nJJcWX%9M`g-oCC0UO?6iwJSNqZT4pN8X7zI z@z2g;)D29;Sqe!o8*WG%y64r!r+i`+W^c%aOJ|>_xb{%;RJ* zORY>R;2x?6Pdytgs_DT$gPm@3aL8U#8_uhRMsM4mj^h0(P#q59eZglh*MWxb6xt2p z&2eec(Oy-kn)iK`!4-BTWVa_uyVpKj+U1}H$!+T#oj&tlS51}BBy|Gm)>6Y3=&nV$ zXmu|sY#5|#%1?^jOoa%(P2-7B={}YRoRI-NcE*nW0Q7*5)kVQwqNMPkI<;5?xgh6h)WbUv|PfAzV|xaY#p7S zx|wv#46^YFS(RBSN(!>s=6QElp+kKR`;|$; z$oh*~^CP>2Xcu`GvYXp{Y>#U`p>gywV46OwzrcWnLGX*UTBhS9K^VfS~xxj zSS_Hp%pr8^4xal7^hYCGd0EEyj5sexG>4fyKV zfK-|vp;@)1xvFMkL#AS9JeT%Dtg2xgqknSKN7DoaK5N7neB-# zk^Opf{+geSFM@^7W1#ZN74WW_%2sFpi)K+w%U3z7uWFaaaWwS_!^II*f%+fQEK&ue zVM@vs>VvwRacmoF60k&NFayl=U4`ZC0ZA^Ghw;`UT+33xnb$2m!N^9|8#mr^P9C$T zL6A2T>!DxkWcz17#R=H2#y0HN~CSL8WM;GPOYBFP6mFi>Y z&w7JRfoQ1$RYZ{CftT~uTnoxR-)IH#A(;EjKWQa;aE7BuX8#EO_wD>(VtLmkn~Yk_ zF(_FhZzTCCLRu>9e76wZ37b6xDHyd{{ zQ($Yq0Gc>ya8;n*(&38p02_pn+T;iF&QxkbEq06WJab$XptbvEh)&;VOPZt#=ej_pseteGI4Vx|`!#RV zi`Z(SIlv*mReiO{4J{`pc_vQw6g}LGCvjppO5Ib@%lSF%!@xHgCDq33H*D47!oEHy z7{fuEu9I30y*O2tD^?vQ?i5d-AuuJ8EmNvwCqSad$@gBa^(Wb%^3NmWxmWD6WU}J( zlC|@M9zkRC0SZlx;JClXz1TzYTTk{R88YmWsosgoh4fB*Se1==v;SV#0J#F*rR&a#jjL zNHP7*z_6I+)9#=0Nxu!MkMcd=zdB-1axA!~s8VfPv~)|Vtn5Kd5>Vu*wXV;h)qS-G zsg-SqWVzz89vcG6A%?*ex}V6; z+D%gss^FyVkzJke+dqq)1)eM?yjLYH+>tI|Vmf2=HY(gIL=T9<>*q8w|IUh2GR7d` z8o}b##1gTXE?@3YZ#APv`mTm(Uusb;u2_A@$CtZg%<}WH_T<%dB?yt}%mWtAmhGG2 zcD_FsZw`!k;|ks3S*@0T7n+O0Ti2J; zFF(^3w$q2ACQtSkq+M^^9$L~?3>qGW(|Max&)g|DHRR)vVf)Pd(Yt_aMZKxw_=I+; z9JsNJhXzmVZs1spAyH+Lx(({i5>}^A3&#rR#Hb7DWq~+y;7p7A%s{L9RJ)YujTa;c zuOLzwTeVO<+&l~rQN^}sR%InWM)Eb!$oU1|6n6dZ{)5oJM1elgu795n>J z;z*Wn&pRF8DWBmo?=`InR5vWh^PShi*A4O`aeq?rv@@jRd~TkWTsR0R%&MK*FgPl~ z%q=+v@?lc;-wbRIrfRz=)Kx)L`AI`$Z5PQt0*^dwFOs{71W7|u8aWZT!`iegZP}4Z z@4k@a>VlFRs&_FW$~<A!BBX?!S|?CK^A?;N^rWnlEe5=`U| zP#CNzSdS?CiK=Qrd)|gCn#f7WoPZ!OcF4xkT(4m%MRt9p7?U(lO~4riJ)T?x z7}$bwyx@3@Bks$q<`kbWSEHDw@Yae%kN30eb~KBd^{a!5eBl?xS_aF0;XQm-S78De zp|+5)!Tt2^9G5MLBVjvp4fU-V)vW9+h2tdGw6D3Z;k!DBY#q5~#i~7FKL2sOKDC`d zF->ZGEVajL?gKC>%Z7Z^Y>)R$xZ%^uiI#!PN!>?wEcMKWv+l7~T5FL%#SvljvFFj* zwX;NW3z=TrVb8sgl$F}Jq?tzGeP5(8@aGrfxyNb|2JhbN@|%R83XgE^N%sT*nE&jp znBI}H=MLXZZ&K1eFH;Svy1g#SPWD5%fc{>PLKV9#UW9xBuVWX~ZKx=yC~fC+wpHLW zK}bsrpHs1(Sl&r`lAMM>rkS{8qic?6sQN|$sptL6t{-{MTkeWy#yyCTa!e{+uH)Ts zQ`6iaIL7T>bi{%g?@TD7`YlNxb$*rwpR@4HVKP8Vik%OBGlJGHw;KCkuy%FW>eftz zsjvmFP|V{Jfc+!I$NMsNm8NcTQHSM{*H7Q<7rh`YEE1?BXLGiA7LxV8-YW!l+lcNp z(>puj%t5yor;cq1`u-KRu8IR+M`YtMWexAv3@$3q5P$+cqcOTc>Kq}JzBtgx zbT4!g5}?YlkS1PEpWr%JiF#Fm?ea?rlb-%r37?yiVLjrDE6k0dZBVw$#y_gm$%3v0 zdCsWyOGY8EX6x5k%I7t^rC&DHOfEQjY2bG%_mM57C+Rw*N5#~txs+A{1-K=HGHCiU z2K4Ibt`dX{m#mypfm_u#wv9uqIL6k=JvHtbxWtD?cl`qW64LdxZJQ?MB{7>Ay>Ire zP5|-82$rV_D%f>vVZ)HnG(X}r#219;2(nDrGp45KZCq8nm*FpC#>{mo9KE+;>dl&3i>KvClm>gr#CzSy(p?ho zj{O5-$>>C$2v(q0J9cEUJ<~oE!v3ZU0W_L@Hh%x7Wd6b9W*5Kf=xwWXzZm9`(SO@L_0oHBqV z{yjm0Zqp5LO3I97Gvv$$4)o%bn zaO{6r&B`96vRTM(@g(~r;4Bd(@)J!}1iko&_N=_!Bux7S?w3J>ARASjr-FF)QCbTKJ>`ebWZL`#qA@I|ifHJBvD0zw2ywZ5+ zBr9?nWFM zI+}yrFr#4;*LqHBaW;XM>|B$|kGg*AKt??ZaKMK6Hr+uE&wyw_fBK8_|7Bt3G8t{r zvNO5~mLxV{>3;Kw-6l_njo#qGNE=!Q8XTLSIy_8r!1J;EnQs5HtfUJnWi}yl4%%b# zvzLNmihDjcx>_+eQpIc?WenlR605u?PN2v^&10-IYw=QBo?ii3}Bi zzAk^=P1)suVZe|q1T_-db4Y<;%JD@X%rU7`ROcb%p@>N1p{&Cq60&r1yip(yS zq{@=*$H1Dsn$+bFarELA>=9gp>+@dK&Z#E2I*$lG2RxC5VhK<=$-N#bAfOzRf}3fse;Ci0(SVx6Or{oT`efD z;3?H!EDe?NJ5%}_hlFPADd$AzRr5x`?17m<+df6-m z?Ka&+2QX-`v!O}GMTf{n=hhF`)f~_HLL}l#;%E94Oh{wXCtgjJ76@p#(k%pw-$_2UY|8Oa%r54~rUqcbq4Q2#+T*M=un&;#niHXblfl+KLFJ-df16zbY&!nz6pg$}CFNejDR-&=sHn zoWG8_&fMYNY2#FOH%JoloHyGYibmlL`e0tKlc)GIWf;j}_lhP8WB}qNF8pD0NwV)H`Ykl)b;s!o zrB~j7WT(=OLooVlz`3d;lBM|yN@>&_eR|R;tw4SdwY$UdYwj4EPEQGlNt{VcODqI> zCM46tiZ(rbqH!}UONQhA6znyq-L0}o-;0`{aCCS6R^YeZ=vIgpM_Z^Nk`N{%-LERJ zEch~ES;t6at{Qe&BVLhg>)q76XRb;_A( zwj!sG29SHu@-n^scQ1f-&Wq31m{MZYx>Ov|eR-b-H&KWg3Z+#&ZAA7?MTr5bm3bcZ z>ebj`Dh+n6Bz1<>LlwGfm!BqRE~Vkm6fsY1GrMZCO{H`8h6zz{dw6$hz?>Z);l^t% zRu?lOE~z){KauarVIWX9IIqG(M}Vi$f7U{Tw%UT$>B=E;!-74VaoD}5zTN)2io|sx zdxGhz_PF3eTT(!&JWMY+eS*hAs`XW!`OG_bNENkWDZhcp#9=|txG>%OH%KYVNCqO# z&(37Pc?9gX#nG}wY2-+ngPOYz7X6}uI%zad%vQ*Rj*Yx2Q)UGzc+vJif$zI^fi$ODOMx(#t!L-h~=Ug zK+1mvp<0>C8D#^W-y3Gm-K+X&3`A^_zLUttJt-4y&&s{qVHsXwkL1P}U9$|DCN9%6 zW~oYlp6V+mtr+>?%ZJDwwbxYHoYkIIA}E+vRG&xg*6P7DU(HUCMw#GqWWdlfy=T+E z;f}e*L(qvX%Ztv#R+%OO{L$LSQk;q<%sOs1ZG+Ln+Tq;` zg__C_mL3YPMctrl%yZ(*mZ5-a}7OueLAbi205Qv z^>zd-uc|z-w<$Ef20T?>b6hFjP5Uuz|D&Acc7PU3tN>ORJh@-PQY5h2Kp%+WH`|Ik z%{Pr?L%J7lPL@&iY9)8O*h2p5yXbtqo_J@Da7e0?_gU2U*{5ZN;?#7PSP!#kIGsW^ z;nB04l0Cq*_awP839c2k#aGdgHA^CFb}FZ-wXJ7_rq6!*LAcU&HM>z%a^DSl&Nogs z^j<&F2|i8xXwqz)6HD&|Z+lQw;_+?Q{{~gD)Ra}LkGRsh${O9f6bKOslug4kM3$V& z?NdFk-K$`tCZiY2>uS<5NBuYG6P17QJV*ftSL?lm+C*3;S)7cDI$Wfw{hL@R8PF1$ z1#9a0-{7I2DfJ6BAd05G0;f=cf`$tvE`xqZ8NEq`J7L@#`H-q7NkE5MGHe1G#FJP- z4G^h?z&G>r9EVQcAwj@t*uDVr8$uM2`rgELUQAwnvt?;d!$L!I<~KQTy1K<${m&V) zK*Mq|JZC)(utkmqiPpA&cu{Lk5sMtvcwD6;0xC7QEkF<71g3Q4Sfod*xpsN$jLO-P zfA~-wU6^?zL#8&r-GF{Rf8H@V+ofAJ!LqP-+%pvcKHrJS)NANmeL1^fD^6Y5aIkTu z-F6bWf({b%&9jEt$j{*!P?c|x7Jp0z3&v@TU0=VG=U3~cX@E?tGp*aDjdogUn;cKX z>j0BQVcanK4%QAFb{})1id4hCiM1t=Qf7Lb3-}yho867;7%amY7)>`d-u9m;sS8Fl zp(LJvFE{+{|Ng}gydm-XLKY{eQOFU+GmNY6M{kkL-63i)9AGOOXF!v>Ywc+jB}sUT zSh0JBYO-J(uijFj=;f6%I#bXs(jsdYuUu+2{R_BQ>Pfs+ zQT7T>PP*$C6#RJ^Hq+@LT;4_Fm*8%6EY6-PcmtVZRz{h_=dwy{Pt%ioTNT4^DjzI=XqadXk|d>@xA1geCN6LNymSV?#+nm;}`7J@iY<6V*kkB zB3>d2QIaU}JK|CNndG-~6x%`NV&OqUKvfeug=?}dI`$GqhAB^g1NvHD@>HUkA@oS6{v6)kZxwc-;nIXb>YDuNfUkjyBJDwP+T4hSKq z`BB6(#dxIUh*4P4tJg=2K7U-C8La1{RDJ|4Txvj zZ0?Jun-$06%baQ+Zl2XxYktY3Z@z^Dfmx2Bb(}@TaM$deM+s`p;V$nP3#H4f%6rSy z;Z!*to1CXkO)eM#4vP!T0jlqC4&>c=$l`ELzgc#@-u7|s-kpl>qo4zZnkgBHIt2$Q zoWby7nYN~Mwd4*qr(d!MYB9xpO0YKTrDnHShV6t5iEaUu6Ze7xoEr^v5R~aGz4XC zeSp~lwwjmdBc5sUlLp7A?G$lMl0LP3v~Qju zCg_4*1`&j(Oz~szYw|@2ut`MrCtTZ}N4XFiY}3g52HaCYv$$qFX=YiyN>*)lcY3teK44 z{b7wIcqP=t@(bY6w>FB2R~)840;wzzA|#>w)aEy(iU1D?_GA{j+v7K!_*YY#pW9bqNqHvLiAoRXTMuyE@{`YlUrcjS5H@L}dD`xS0Vx6&LrwV-*?H zlju(u7ndLNfKv4ZzRkj#Acf+y!LPIP=aSB5`dSCnK=OmPVzmLt%O8xJ$gr~$3T1o5 z$8m_a&1hx`2e1{gHFS!6Y7A;ROC9%jRU4N;@&tWp-^D*9f_^~?8C*TpI~V@Y*yOh0Q}v&8o$6N)X|FP=)ju1LvXJKx{R^QnYrVaW_*}-Xyy8D+ z*@<+0Q72Jhm!n99WAT41enBw{QjmpLrB*>>^KR(9X^MACc2`S|qxThyxYcbYOX`g5 z5~?C}wwjEdkRW=ILeT<81-k^b4nwOacNvlb?S}D?r+E8#wd3*$UJ@#Fg2gX++YV`q z`Kg-Fk+;H)6*vfRjf({K^|d@l>>Dz*gr-hHHoF5RM^H}U;|UN1MoefD0=|bL;`vz@ zHhaubHMIIl);rGBt<3X6mq(}N3)i%aUeCNm4`rZ!6?jss1Y*d@`;cV&?kGqh2WnAl zQCAdU`E9kpG2tX*)w-BV2B{eT1$4PBUR^`mb)sH3rm!!82xucd97=9H-6F1WcOo3t z!dR%+{{8S<(Vf|r>2vC1|L%$!%fPL?+9icNZRO{G!CBc~8aX!JrTc$r#r& zBTrLcV#E|v%u@?<0jM^aR8=%xUG=ovIIm<-mhwFEbi=IJ%~2iRoBWwISvob`-U_c9 z+nd;i%2KOk?>Ga%n>rUBaivdM+tNNB zU!w*_SH`%p*i{x+dQob4b`mwnIL6gTWb4SiEVnF1jvQB|kPRRobA&A>FkzLPsYWAWv*}|v_Sp^Sqy@zs+G5-A{u2)Lp)Fwr$X5jZJ z2awbB>R<5Ez|L5VS|ex-NN5FS7{kG~YJ7_o3+g89MvzWW3b=v{64t>QgE_iYMiY|f zCAZtzCWKDAqBEi5C*d6=R$!g<{s}rd0TTMSK@28M5_~P zpkgpvu$Izy6t=8D1t9nsn9J?%Z_hnACbzpeCApwFMCf@9sClmGjDrxcVViE{OhXFf za3;68?Mm1@O^RM9EAU;p7_|i&NF{NT>3qM|uJYiykO-X{OHfudH1;^o!;&=I$yB8& zQ+^8^ksTqdtsGlfcXsH&67LeP9DQ5PH#P+H!1swv_)yTC zo@d<7TRP{e&tEB@kjrYpPwnEIS}M?%aAnXYH4RP|mNtcLIi7G<^&SqdbQ z!7-H0qXzWIj_Q0mzlQ3$NWtLd24>lLY?_#hwu;`03BaCf^c|uP=Ord04{^E?zNu(X zb50UVS3$^XjOE|SuTvWf|LeeW=Th>Eh{Fs04~aC}!Gztks%r*WPm;%mV+S&NDB#(A z&lWTF2S1K=0oDbGY{JA5gpR19=b22Q*vns{^8TBs$PuE-6|^YE{)ebiKeeSC+kmsM z#142ZzklOfyD5RWFy8H$j$I0jR&7;kYTZMHfpP~iXPEy=jVZJ(r_@<48r_*^zm1XZ zb_~-sBuCR-KD#uOC3frfkkm+(f6<#;NQXJKv!!^d^0z zS{O%qW|xl}t_sQ=(D=GeY>}Agh&zXTv&og51!t5)ilzP1Y~J=wJyU|Cid^>vl}()N z293rbBICPd(K!9xC!XQ{D`qSV<3T?Ejreb!CVS7Be;Xh{v9?fe1FPyC>?bZ(fp8$; zO)(djnQ}URWo4Hs1U*&H$0r!WqL7Z5Vz4%=Vn<(P^y*}JdTeY=wb5mtSD{2RUk!)q z2XQ1MrVC?_W>A_eDOn;0W#WhB5HX*JSMBsJx~X&(t%Ii3nbjGYS|gpi6?OxaVx)$< z7(awPVME4mVm?SA6Sh&`JLMv<_iWYY8=B4IAx&D z=t4zjLv-Ut3FUNdbRk)?%rM*73E48p!ry{Axiv3PQz1r<0L}`3p^;c5f-IQh`Q+!V zGfZh$x6mkLV3fCuRTWf1|9l?Iyl}?N4J1E#KUpj$q9CG;pswWU7j5mIe<2y>IzYN1 z@%-RcJ(G&)Nnu)|+>E~>_CqOjU^w+r?UC>wFdzQRu#TZs23dIFk*e;yeN80QH&B7W zsmPHz{g?-^E~rsE=sxGZTq9Q!9fVBG#TP^t#D|psP8XVINk>YCZ)%%X{hgY1!~AW0 zRdq&V54^rA716?0=X;Vt_M2s6l0YC{RQC~W>fcX(m13I3km!JfBV`BC;o+wrvS^=j zgeUuQn7XB1kO=sAZJ!ZQb&gd%eT5TlF-c$jW{fi|Oy2c1uamjiR<$tH0~cs!7D<_Y zBzTZz0XEUm6z>xDt}#E$l~1yrfrjb7)@FUL;80P|0#bhS;_w?I1BJJja5{WsIa|J; zfxZX<=fXGQp8zuFg&J{@h1N_#njbX3dc8`Yv_s}4$CcuRpCfI8r z2^=)wU5x%4e%&zL^-mHpT4g;kac#gD8%CgyuNsxIQ;Ji=?bD(Nk~1M!$uyy=Pku^= z=wt9=*nrA3K%nc`eURRl3vUj*&v0c#3l0E=I+>uXzVr@S-}g{I2+= zj9jNMfu>)fNv!}?{bNl~(Q_g;Cw;|S8+u8`4Vjt;MAIF9ji~)N)R!L2R360n`y<8mif)Du z9qhpJr;A13EG^U+Pm`BT?^2~ly%zrYGFLTo9`VGeu!wdx0=Bun?z}x`pVz%gx2Waz zUb3X)C1Z4NZ|~60h3bBaoT9>y_jiGliQpwR-Zh9;83`P=wiaFuvl`xmY1K`2*b5)K z=SLFrue)xs&a57(+b!06B5xi|EU5NQ=p$~^h;-g$JVN%HsNY$RDBTY=wpmM|Fz|En zcdp!vd`PaU0Zape_nX)FRs?sNO3+v$=`wn!DPI(e5t+TtR?s?kcUYSuD{h73v)l9y%qfX>C&fP=-fF@FQ0iw{TnmL}RoF%X7(-X$o+s}Ia(4y% z<&Vs5A5sE$zAiQcx^HhSXp~a)9jtTiQ=OT$Qu}ck??wvL z`^dzf4!@FUYjK=T%YEG~IR}lX(x6W`UhW7QP^C-QfZt$xX{%`1pr7r|(Y44UoET<; zhC0rxS0vBxhK=}Bx$S#0-bSH5Jb=|(4I6DYtG3*E-(U<5D3E#_t*lq)E2Z*(iQX1= zr|7MhzK-dNaW+el7Sd|MRphq`%0iS=oO4ie-44Wy8fa@<=fmVm-8MhDxKc;|kWVgS z?H~II``IX#PAZlsa3aC-n=b;FAsD2d;To8o$NY2TuQ^hkG`_B!jaSX++5~^MSg_Qm z0EMe7;%leFfKbyHk*(& zgc!}$Ik?t|zLfvA4urD-XFos&sncs5A7*|wgG}yBR8$-b$;yTh2(nztQmI{n^>TA_ z(Y6*{eM~eaRkTuJU@&+N^g-J_A@_Q&o?|moRu2~AGvDa44N6K9xI#pmZnL3RsgY~a zL#}d)iu=x&J>`--p<(j97j%Wa&`1)2=F4k@3tRREvJ-H4Z7qQaBdDD(_MvtL4NlAT z*U`Q2l~N~PlVVLhMtaU^_$hY_B`lY`4vNzJw?)&Ukd5!zA&F7n0{`AawY2|Orbj|W zJ$Cf{2>RCI#mfk(xVKVH^>aKZn6LFsYGI$vXk`IwjJbwFo&z7ub(K_b22Z?*J6Iip zKBx<)5BqE#j^?i8;%ejw&CD_jWox{xYL&4RuW1o*EH!uk6-RSI>FMa$tS-{L4<>(D zSI1~d&u%%*x&&jAx?g+`SzRo{1noyYg#IHXL2Ltn5KK%uQ%%2B^MRn|)4!PAj|We3 zqC@6FKHxWa8yW_myVqyqqSPaj^L2)1R`y8w( z|Mtbq26KyeaIbA`zU6f3y!@OYi?mo?c(~>h)dba?$!Knbj&%&B2sN(gj|MvOi02KY zHeNInk$jYe%Mw8ilRVdY$}b{`1&-(6_e>ySgD_*iu**U3$N&3s;zhcsK}}<;)gk5= zvkm%WFW(h(#pP^g=O;qEwx49~@H%LTbFI1)`r!Ro*mkfJ!L%Dms}t--_)CYqVGnp; zBSC&c6N+uA^|U-#N3{c?PzTd5m#2SbLge=+V6O|O9l$Hh~I=yl{m8J z9#A;{{827Wz3q7VBZNGxbLHne#H_RzI6*AvbeS@5xEnbUJfI92ry~C0y987jt#5Ag z-97y|!vWg7@)ET9ZTSDzH73QSCyj8$iVeK8YqRVUXpQ$gHd4f)gdjIN&q?#X*vifD z)Rb_{(24SQZ1#lmpEq_pP6yo_K20_&I$BM}ot88%`8Uzrr^rVii)-rsc`wzA?wv^? zhz`Y{dct_5)&IlV4K(n^^?Z9CVh5?J!a%6hyuPNP;Y_q%a*d6y>+YEQW$(CI4FKwJ zrt6}lX&PlaFSS6+ENp*!*}J;zt&?c-6oU~z=4-S$z2L|9aV1?FTXVT;`7SoIrvi@W zbCLZ?W%{TG*{X%{pPvb_a`U!81Jezm9#==#_nAZHN;;pO5$P>SpHve|V~kYYj~-an z7&h%YcJ7bXy@EFup0>bCZGTLO4PUkRZ1K{Zc`MD6aPKdzA!HqmD9Z*Zgf51C#Pd$GZ|iJSAOL8Nwg-LV$~W}?x@jy zdrmCiy2JU|+RXK?JvVEJ_@pr}H`iqjTKlnNdiN}7q0BM=mYMkEgfy|HnS(H5w(SvW z+8S@V_^cR9mA9^3g+=S9yOVhm<+C9J&qRmUcs)aXeOu#=oBGM~K0XNRwd(Z}yQ#97 zZ%~XPnK#ubnTl(4*}M8-S>m&o7`+XPvOJMOA6ZL-eoweRC#`|SmW;HKS5qPNVw%#N zsnF?MEg0`xWs=F70}4}I?yB3IN zX;p^+XBzOGK`=$kY}HV7p)Z_CTm+g3r6OK?l=bnnsdfz>MT`frlmO&310xSwz=GX5 z+30$x&>OS+CQEr^09bo3>5j}~;LAgedz7$ueDGim`J6YXh&ye3|G3lEnu`3Lm_1~o zO7GxJ4gA>iT5fCecbzY9K;c;A82Un)3Y#v65TH7ibH54@+-=}sJN5r7vi}MSVy)&% zSKHBVF$Xx42ZdPl8>%)=w=46-#q-`iLY2y=q`62O(%2b?XuVZZnkqoWV=fhP-uNkN zfkB@j$7S8KB&|W8TX@*o7MPHrF}bGu_U*mOwuJ>|d}89>58uNP=0c(Vil0kwF%{Se z(F~N*`D$<5JHzmLxj+hCXhiI84VuXlhG69Y&##yy!W9KgRX@9I$i}68b{P!6s87aLl<@4>xj(; zoJY6-hG-mE?#7#sQ=^EJI$+^DWlBC)e(p8GA)|adk2f&^mCOb$;|2@w8f7k)Z^^BIynz1x}S7D#<9w|E>rHSA73N{bV@&)$0{ z?gNA>i^Ot%H8nS#k&<3c7rCsk3<-D-S(Hgljp@rf5b7cZom;OzJ?0b3%e#!}#QzdGd#2{ z5ov1UIC@AC1~oOcDJv(_iGzN`==&{QJw4A4H$(Fb?rEFO{5C5Y&rmjK6XYB3usLom5n2;ZMcoOf|b6$pyAk&VPO-8F~#E|J@6)pBALB_Poega;~sk zS*sYs_cem1^cO{@39WO~|AY~6VO0>jP1?eanIg>nfw%u%@tZFzUGw|%%C~)3x6**E zBpfNKf~^2-JTEf?lA`7uMjC@DdWMMJ42#fN%`G9;-A#?;+-8xlCA)_wG|p;nZ*dGS zgS{t%ty0f!UT&<@VlC*r2T!nRrFD;RR+_ZrAC{-z)!JRY&Ur%zNnoUCRl6OF7-ACf zfo_OiLT{1i4{wPQ6Z*O9!(Os`bBRpUq5kFCMEkMp##yN~4?jm2u0!Ru+5Y+$;x0ag zs2FulzPXh;ha+u3ndiM>r|!9D2+)X*fi5&f7VzQQv<&_1H~hL7^-m} zw*fRYn>R;dvOUEgQLrl+8D)8hwg{_A=d-ky_>SU@pY9 z^(qp>7j^wwrMANE#}g{YGeYPfiBK#HFgezMXZnQqd2-9-V>^0pE*$niO&+d|53hA& zt|*beFzcTIEElClOLN8m!safWH_MY!sy#WHV?{C=Dh&6r>^?F8jdcE`EtHa=*;^OL zwvYfFKdHd30LKRCSYvFiSwwI8&ex14g2!A3da8ryj+n)YdaN2FM$JAngsCSqTV9gY zv0$9mfeE*pe2Vy{19zg4-#Ny=0M8ME)d*cIqSJGMI}fV>o77lHVYBh8MvQ+~>N%E& zsy&p0TG^^}&oCI>zIe4*4L577rR11fjhb`PSM~x|nhb|j)r`Y%UIm_`+t|7C{zQ*p zI+ItB8KKPo8b=)2pxZdVj|S~V9E;35b*CBEdVs45W|-nP1^C-Zv2ANI_WC>wP?{HQ z;h_HkLEgd+(IOr^zA5;T(9O)d9&IwUbS1g@ERmdnahkE&z}?hj z-y<_v=C$w#W4ZKQEP}m+idN?~mSgvl^*uy=-G>tZJCb%hi+d=Ddw4_F!W}XdsKp+0 z)qLtL9(4~&#V_Tv*m18s zYDS>XLBdyhec%0rCcT*rE&x97m1c}oohP!hvnth}Oni-&&3*q>oIzK}n7d~{_3|VM zfPXU#j^=DA3Mxa~j`%5(IjQ1%3Cb)Jew%l`UV;mG2UY@vB~2vJl!rDKbT` zlh|;MdNG7FpOC7mVC{fFwAO{S%OzDbXu4AO=^8^3EVoco2C+Q5<0zbszoTD~=W}!I zwz@y`VGFl+az8d9i2RfBOAWJilB=0=)9O^-uucG;m^i2y^_KnO-l(Hmanx|oaSdESnq+6Bh&kwV~PO8`l9eQ zkpDvbhl;q-L$aZcJ}l(GP&N7?Qy$3I8VO70ejD4Vd($CG0a)0Z$ zs=u`v^Dy_CK7+FB%@gIL00kEB#SzE-`0p=6EUAy?Ocn##l(m>?PUhhsAlWlYGd>=+3Q^Wpj#QT?_``zfazE`^9R#ZX0SS2^tJ=K9g z?hWq`=(G7u-kKMXJ&_)Lg;!{kb6DWZlW+&uird7m4o|awc~OD~aYbBuqr)=`?3JSB}~nD?98GQ!XZ}kICyQ%CNF@!DYml%*H72 z?HKPb-BnyD;!!ot2miq7eUoOt=r+Xrexoi&1+VmqnGD!K>N~({_P6EQ{c0sCyAOHa z*i?2;@c!xFg!ICk-p>dKy*jUDXYW0)@jo2n1HPpKC;!1dU!M&yUj+_&y z%3v`Wc3)NIwQ1bFzL_@aOlBq>LQd6GKGMwWCEwg0HMUvZ8^2yWv$Jrtm&DkZJ;X22;X!UWc;LImtb#mY+rskSo zGb)Cexq&{Gu666AQ8(gAstnQrW7F`FlY4wA^eyKE!l(W&=u2v3FDf!@ox|)^E}gQw zk=rk-ZwtBc8ZM$pGPdywW9b&6Lmq2+Cgupmq*4!`KBG;iUGNCPuBTBPuhN&I>p6FY zn}2lLJeGrN4n-Fev=F2rUJpApaj`J4Gyx5IIC zJl?!{>gKm1e$xYtPsy|h8d&T=PFsYU08W;5H@ONUoEC|nL7$o478tP&0k5gyTkrpV zx91{TRPBk#Obd(q=d3L=BGx*vE%f!4hqs*}c#kl_7AluJt)Gd5biiZ)-nq?}IjI{D z%@Nph6=}x&%JFyczWM0-5TMf|k#}_m*?9R&iXKf_(q!2Q%w=0Bi_9zw(c5OqI|4!i zS^_#tbUtk&Hjssz@9tbF22a$rMa z67k=O7I2GbaVROG8%1rU6OntOw!=)Jn#a6|D5@6kw$;VLaTBv!0$}RL1Bx+Iu^U*Z z3}9Q(1NJvPE=}Z|&3&`8Q+BjH0>J-=ueXk>s_WW^1px_>Qc|S5yF*Ii0Mb$(B&54L z6a+ccq2T~ZN=tW$NQZQXfWV;}>2Gu2&!flZ_l}Q$bPO1KuQk_P*PQd3*IL_Q-LPki zF$)k}pV5B5|5x4mOAgZ~hl&70MY|YSG(! zG1X>Ke?gcx*lo>b@4i*E+m~eCqa%xzEbnh=EfSJDc`BZNu_fSND5NN!!7og;tSZ6R zA6NE}jO{!1HW1RV#g0R&dt;?|qfUFB3!5i*#otB4$JgOf=lhcLZ7i^Ia^c8uy;ep;wg1hd-gyf*|Fht-n<5N_EOM1HxA{Y@aOh~|WijgN z)Q_2;3RgNU$-<6Cs%E=-c}6!oO5-{DI35MveE8ZwSG#7m#a4wbzu#!vhPt%m-cROl znX~d5RCzz3E+`kCiApsxu}2W3kDwo#)j>XGhESmkl^R&fmK_jK%UY7iJ$Be$OYS6V z3#;Y>*L}pU%3Ty04da())O+|zoT%pco57;9i;8;_H};kLJ7e`JndO_!UQao7|3nBN zz<*Fc1+0TT_o~-V^@oW>@w87KAj#AhzWG$WbD~I}6QnKIAhAYJM|5KePL8D;5fh?w z^jUZF9y&kT%^iM+rfywb&&~^E?RKf|C(zx?T6?V$%9&-cQ%Fhg>1#NBO!0O0M&X_} zzg8D*8kjCotz4o}r{QE*$!d_s)N1(j$r}Xs;Jq8z=UGe?O8rPXm}b66G1ER@G1Jn@ zwY$x_#@6>4@lyV;?n|Yzlzpxhf4fbEuq6oDpjin-mU#0r@B8PlOs1GjxLG6RW%Wv3 zk-4(eIF_u99U%7rZ? z`cbQoYU*W!>#hyXOPA}+i=x9IPmy7m(qtQRTpW)cG1TnhUWVpsmp?pi8v~od5_jH2 zGd*$qEx-9!yVz_6B-IhPiOdj9OvNUraO;_hQavoPA+eHNdvSYa4^x-6P~oWOr?C^( z+C>X+_GeuWiO5M2tXat!SjueLo&xE6=dM`v$*mt=cQkZf0 zZ8p5q{tnrDFR!K%lr?n3oPh5y-A4Zw#J2Ub!wHcScE|t@fmyA*p{DvCJzv0HdJW#r zjZfVSVmRXeIdKD0vbuOvSFe_OS|53{rCR-Fc=FT#VXfx((M)TnKbK_{Db35%4?TWf z6%u8SezTsKjJEVqP;d}w+0yA1nZxH-TeA9bFfx^S3M+IOs`?R8d*e3j2K>dSxVv!Y zZ5ISF$OT9q0++41WQc-++_n2n8!y7Ro4EtM$+=@bzcYS&_o1v~5oE{rI1fHSR#Dr4 z?ZAEWVm4wm8I@O7OlF5gxH?fofhO;v#KgvP(ZkTSqWp$56VXG-zi-9)aE5s)V9K5Q zkaxk1KPrA~RFm)Q#HU{xt?<9Sa9{x~!jMn7O?&*d>jN{*o-w_*VpBi*z68$QwJLJd zKo$J*x!ds)OZa1=kl?+TX}0G_g>-{C{`CFu)u!Cw{<8m|qh3LZRe=!yINCPCd?@b( zu2KQ#T=}AY8a?{k2+p{nYxgsax@gs3eR=P}^WvjDhPFkDo?-c(o`XpJUg-?8pLVFt zNqjl^Ls{%h*$w#SpxNb`3MiGk6~pV(biveYFau*u`ZKk-_nF^D;^eRPLj;zylyADv zk8h$fUWPiSbA-GDMQjt9d-Ec8`2p^&4oEd$Uk8+lBBIM|6f%&#$Ber&T(wE(7ELJL zsEmxB%Ep{O+jl0BsMTnp#{sUVqBiF?Yt%C~CSHBVOXruE$w(usMu!8__jel~kcf!6 z*Qib0qX`_cWaoAQVi|<7;*HyoL$SErpi$OIq zC;I9r_%D|8|GmkuSv$~Psw?i=$ua>XN1nr|*p2Q25DcF-f2M(R3%bC>Eym9d}=DWz=Ypj~4bXJQO+ac{<0(6Em8ei#DcbRUd!53Pa$N~;U`lt8BtvwT0LeW} z%I=4a&fzf#2r5ZQi6SS`9j9)5O|a&IMdMY=4nAzm`!2`RO&jrLid;b>!&<)jBy8Vc z@$L;x%u*P}e!J)6&cuxQr1ELLO`dJskYghGzT26VH(WYa+ zF`Hkt4aEwoP=D9TeS8A{#sR*}6SfWx@#&9GcX_J+KXyU~>?Gs=iBBSuXF@EA-)aW1&KBp*%u8@0?`MM4UBl9Af|5#M1uPi_<7hN$beiI zJ)S-pO;pg({}srmhv??@*olNWgg=#kOgLfz=##BLMznV?PW{|$?PUhJsGpEau{H>U zZKE|7^v$y0;+SliQ4eFEyjp>klCe)^XGe}!4|~m%icBN!y?_?LMOI3A-qa%0pp=|) zC_ZVX!$ip(baE72nPRSU8#$U?GWO4-7`tVT-olcIhtTZllE+g(*6QJqLRoqns!YQW z(PJlLNN-p#nc3?bkMy{ea=IiNLt-3pt&bE15_GQF)p6s89koM$DQqrv?)xGO$>{^TZzvt<2nW$Sx!7;t)jY{c$INa9 zn|rSF!EYw@=nK?Tk*z2Um!=Jez%h-oT&QYutg{imT4YNXMnUHqZF+FrmnrebJp(0) zB%w^-&2je;FLhd3gEX_M98_X)vq>^bn)#plBYG*ZE#Rec-e}+d^3smlfSOnkL54Lk#qD0B#;z$?C8J1lnIu}tN;6d# z?!c*>W>cT5q8~}Ynr2*~V)~Kb3mXD0*~EO5Y*MwPpvh;T3&=kIN|*R}Mo0abm9%A3 z3>O^Lc>DUGpbC(kR@c= zH{R}~Cszeq&NUy%NFdH7Am9c7jun6BpwPc8nv2qy3@lE$&l{d=LOfrat_g!xrAZ?Y zw}Rg}z7mq-HS6+GYCUrQsgLD*M9l;6kQ;nSXm`u%-62H4FzUnbVCjxKFpws#(UYLb zOuxqEpF5yA)&(!2Swq7x>pnz%-lEGqLnfLSC0rLj&S5!6Z1x2-wMNf~z3FBE3~=_A zBn|P=caWtqJm|VLyQI+wsD#?#+|q%oCg4HI@AS!`@}~q}HR%f;5R|Qc-q|aP4aQjW z*$zi^o{sd^Mfa^uayfCcy@jy{5(|yvrp%AM6`RSqprGbsIs3n@^(H_73fS5i5AP?B zu|#37j)WlT`WFE5L^a;`FD%Qn7(-r`_KwU7lXk2lC|-?hFeaN#dLJL7(E?_T_&^K= z(X>iyAugk&(F$_93OD>c8w<(4YS=!Fnql!_6yd-+xo6x?4eloedUv@3mTH@`sADS? zmozT$VTp*V+F!kk9Zbfn$Zb0bMh-B59B0~$2#hXp4BO*rYpepjubScGvgjlo4e8LgK6sJ>~DA-e>u6B*Ooq z35aO1r#3^}h+s`gDGj{kkzpC!R&L9yV|~6}v|ow4{!|Yyhp09EXm5IPi*!8k#SZ0w zfMcdRR3)LIqR%^_-3(X+ z183H-P^>@M6Qu*H=oz_)!=pU>r+_>oHGzD z0z&0dfOwcHfIGAdo6PF)Ij*=4vTC@KKr$Etpk4ILJgOA1!#zXA+l;9*#ii5rR3VPZ zCeOGKy}t_p4F$qjRV=_t8g?#-5f2Gn5EDY%oz24ai9|;WPc8QQoJdtQXYma9?LCeF z^7LYvH-p-lSirwBsqd7y&w7&#zI|lj66+E4PT{E^Ps;Ng)beaZjB7~lDAA@)&w2&S zVoVPrc)b354CdcDJOr0mp4-t$zGLr;>HP*ulCQ+J{I&&R{+&_HT?hA!FWEaLw_QCq zB+f++?&)o}R>T9L-tWRDCx+Mx%-Mm}6cill2Bd(Ak=bmcf29*ycc7qachLU=#FTlSZZL4W{hFGDZ+kqTdfRQsVwbNALd*FT#Cva3Eb=#AGARx_W!^xOa7R zRofp%-r-@toXpcA1MQ|TzsH5J+W?gQin;#2e}X%+#c3%u;%wR;1#{wsJhy`LM*zuQ zwL5>Ur-7;x(!;Rg&Yr>$koKAl*G3`tSNqDlP>UdCF>!YG*Q-S&g-a$TJb(uAS7fBh z*X~$`n)ITQd`CVWxW@2srSLW^L?e$Sid@8Rw(K%nA(nn1h0FK2)^T}MhL&HT<}t^N zPFYSvLqn(TjJh|R1kTbXB~2ihcb&UamqY$vEx>ASkME;<)iXUj1Ky-$gAW0Bw0gZK zj<}mBDfL_7hw;Q__jz04Z+)dB2X&xx-KhpSrPZ4FWtxE%ebYhRRppzJPG7iUO_|FK zItBgTg&qJfl>y-vsYf_rg^nL+q{5xEUR4jPbGBE@*Tl4?ebWB5Zfc zMOEax3iO!_EA8!}{7L*{ggs2wU^%eO84}(N1>8TxXB%g(SR&8i zoUS8W^DWPgNr8=n(bRoQMBr$ZM-AfZen>_p@@nk8*(pqH#>HiAXO2Q;um{FYmt1YP za0VT-dej+#6(#6|LD?e{SsKQ$1zSGIOnxtHqLF_=t!ov8l#p zfnLei_l++Z)@pyRvciy|TlT?ZMh@Evpuxz}W(Qxhsa2j#Go;(N5^@;SDi&&$3Oiq|}8ki+tN zceMu>nO59bIm6h0h5(;5qj&(|e z3-eP`j;p4w$0eT5Yx7narlbPwqBdji<7-0Re(Lb8cfDY#Ziu(p&dFY{I&@l{w<7_8 z6x>;q2Yc#2mJIw-^OXH&*Xc(Z!80Se<2|2tg09OdbY+pwej}tTXbvf;#wwdZl|S_Z4t1j=fNQ|ZF1az z_{QI0N`&FT1H?i8rv6aFLBWRR63MFvzplWNU>7UQvg=rwMHUy>IqK#a1RWs*xzsg6 zQJ~iyjG)WJ&WbmMLgkbaS({mfge>t)AjhYt?&LyFN81EiV_E~NrsI&UDH0O+gr?5K z^;PSaHy5^pFP%W#{pmu^Dsmm8)?}$E59}7oHhl}ntm3D`!y?l^+rXizU)$Q2Z1mxV zfOoX^6e?*NM9v0z*X}S5_i4f6@w2%frL@Q-xwD`AaVx<8Puw;kQ-;N zTxVd^5ISTho&MS~pbP?c&`|87a8R*s=Tx)xdhY%OtP*KSeE-Rxtf$pBForhyt%IB~ zj{9`p(a0Cm?oYtV1S-RlV7%6HCpyL^CV2`Hn_FAFiSdaozNs;ON68-s`gq^m|aSLU|22~9Y8(x7b{xLN?TU) zubz;|lzNEZxPgog&feZTv+3z{ZVDg6Ltc6BN_u#}$<)*ua)b}t)9DW16NDDQn4j2E z54~Ep?G$bZsrgs>S{=sAs zK7M}w`l6!7@?!)2L`?}QDk`h%#=4ORdJSK*pZi$V^;j5c7=Vk!y6SDOL`O&C7HVyo zL*4?x#qWZDb+A`KRX#LoN?-fs)bQ{$yzkYIAWxDZE-r$TxE&#ntrtJr0%_2$)_#6>I@1O)}eBi6N+PRkBw-d_3fwUza?1dTwN7dVJn*Tw6f%5k4LnS=P?Zj-BP^ zx?IseQii*7495!L6%7c-Df(^aS zT54+QHXR`T1s@%ziMZbs=jLwcPqGi{Jj43STCK#mdq-}b`N4d6#xhBj_dG?-$MZWx zo6PQWqRrvD(yd;QIbkr z^Rir^8HfdC9fNX5HJjLZ#C*-Z1>U6qBH1Xf7>l#lYq^d`!_}_pvxVBM4SB`Ib4Rl)&0t*wi##bFdF^~PAZBK!|Bm$H`Jibz z2L;nySf$fh|1vc-zM|4;Vm`ls8yGI|fS*F0 zl3F2ZYEeh~vu2&me!{y@5Oj|CyeE`eLXdAhI)dJ($-W?)Plc~ zgQ^d1NvM2HAcQBrOv9y+Xecf&F374l)KoWKYOIKexQLB~I?1SQxhFgGZ6V2w}x}k8aPZVqzeE#7&4UF^nOWnioaY>cT0~?`} z)*(K}hU_dK5J>DhD5mH>AI9ur-WT&FkIUcuWFUN|0rnT}o!6nd(pLn1Q^E0FGEkNX zd*IGFl|r#i8~gBGoP{1Ihk3qU*2`S{w+{L?hK7d6j~-ntsX6(6*Da|hSNvzqXPtT{pC@$Yt`yuOAT%g;d=MyU&j#Ll+#D>7u zN1s)>6)@jn1tJD!5CWDbk2@ol#Mz7%gPP*`#pMc&q5W_j85M zm+Pq3$+OoHSbKPQFq(kY0g#E&;IO*<)s?-{p6$Fgt*@`AH(jJ%IHrxGKra-;c=zuC z(=FD~#-3%!xS(?RDZ}W)=!e3+Z)I65c|BNJfOR2Z2S>&GrM^7c5Y6QD59TY$Fv;B%1e9IWrhbx79%B8 z(13DRkR=r3PsF~1jKsbeMyp{JW*OEsWk-FIKn3isHd>aymX3m{u6&BSD?|MGy+u=% zG37;7{*}yFE`LRwsZ+-r+E{lSQrhIk&G2!A)RvMn7ex*Va8LTza_uejPF!C#KZpqB zE+SiePOq1rAWFRf$t-N)yi!P@$R9+*MUq0GV~Aw~ua~jLxd*PL+-CZKu&@pOHBsOR z_>rG6(7|XD@LAybRI0GQt41UI2StKF-w zi#rJw{XZPhSWbv8U6$c+Sl5EQ05Gs0j6OX1zuyTpJwITl7tLV6eSjGSyiFc#%tSem zVFm%KC+3mA&}>B@8jWl)@5h@iJtI`1eiZde_h+Xq_flD~eHf(W5qI%r1WqN`CrSot z=@Ll>bVxeMoBrAyjHq$6$w%K-Tkwa*0^Nu-##rk$Q`+<2t((-v=HIs9pk9g_UGQFj zq&_}OXpi>udry4zEjq7Gw}hq#p%OyL2&kYXkSG(>uY6B|ua?o;9&9t+9G?C&3}7dp zU;(Y55(zH^nk7K;IYw=&DSo+Ii$ah`5*lw&c;bVH=tBSP|0jQR=PaYtB> zR>A5|)@9Qu-(7ibPe1lqOFV$HuYCR&Mej$yxDnJd@uNP~)Obq7oF~)zF0j@G$)=x` zIHy7*G;m`5813m?0qFFbOk9fvC9n|h`*W*AjXtu-zB=AV=!p=&K|WE)z3xF>FoHC> zQr-2|imy6Vc}A);A(MW6EsU1;dXkE!`z;OfU+~Kcyj~Ih9StfAD{1*Go^kN4MYrl| zkR+==SGg*9cyLyM8-pOBxyxnHH<93qsddNryepq2s~0xc&+9=HtM8h95xKgrZ>dA!;sk?sODJxl+Sm!mG9kh?-*aq z^65lKt>$#9r;uUAn)_Pn(y-P5(arSdaZ{&hRijNW4liJ@n};X-Hn^lD=KbT(V*!u* zh|#CVP~+8+-J!A&i#Jf(Smy1YS-f_7{3fgo?5c+OyxQP#4QRWX`ZLnlTYsvZNd!7J z^~Swka+f55;nr4IE*a-eDnkgTIs^RC1z(0An1mCCwoCkgED+tg^2baUS7p*uU}V>P`nH{J0(EQ70TL{D$kM#M{jboM!Y$ zDyd}Obd62_{nTiPG&P>#XQjJ%wjF7p9dZJB?z*+$;oq1`xsKWxZ%S&AF zEwFu%wLVVpOba{@FuNwoO#Cf}8SjL^W{=Kj54~)cE&ABb5wLWx=}u`11vE=Ku*U$W`a zN-f(`;>M5sR|Q8pdHW|~#j|@^H(a&_Z1>BVFwTE?99F>8jnBE(wiG&k(Ybm~vptOp zL;8dDsL1p6uQhOcqP12!x+3b9i^#8TjAd9N)8G=P{W|(MPtFXFG2M-0O2Wib%ehYk zz`i9Jp@g_GanH|XU%0pP+;+Hxtb6q*)OOm*S%D@EWId4?CM15knLlE=J{uDoI=K0@NRbzTMf1_fRnw_E;iN0FIq-_DVB6#sgdgX)(=uP8 zFig2r$Y;s>9YExV;OK&RZ=uXeV|j{1ETsvS1!^ZYG;g8t2_2==>D zf7Xn%1I575`|NJ#bFPEsLjqa$tx3JH8K=$+eWKp5csyH&1mLOs{bl&x??Q(|*9kf% zPd5)nG=ylAgDm;E2!AitBGSJ$WYSGKX>|x{#<(4)aCbHvcPYJ~R1O`7RtRmkIRDJM=s)W&0SBUU}*K3sHO zB%O(u%})kftG>z(n*Ds^|NQ9NxVwTH>&mvs^04}{CSLU~71(xO>1D~3SuGK5GNz}z zV(rg0*wB^C=ojLK3U<||DKi?zMLs|m(kK@m@+WK=VRqFS#W>@=B5Sg}v7y5n31nKI z`P5X^x&pt|)f`~rwZuB6=;(Zy+SR8!T2(-z%P@1_oISk~g9$$3?%>Gp9kJUty|lPZ z!6ZMUdu)nGe*R_j7#ICDlF)=r^Wzqn^*d{GneQB>X%6B=JmgDLEPe|xk7{Wbk^;7F zTCo-l&0xFNGD@NAweN?j_&iDBI8%G1vbXvbJPO0#&4IunfDLDb8jJhmQHjO6)=v1B zpxF?i?67l}@+D(Fn_<8`KOIMog<;924nFtJo|(^3w;4Jm0D8$Sw-!eUVljTKC)sU2 zH7C4qwiCJF^gEW393uVWxI|dM*zXhpmboE9Z>Nm~gf5R_j=nxx&bjgSISyCe)e_LB zNXTL{wEvvkAdV+<&Cj5?)GlyZAhjcUE7}n{R_ka0#2=m$M8&^{jnqQ;JVhQ*oA~FB z>0^Nuqp;1n&y5cy!qzeAzhBlr<9&3U^-ewxy*8B-ir=BQu^!&Pi#If;9m9|^VNDj_ z{$BVt5(eqE>MtM#P2D$n1DF^^9m+%i;Jc+;a9S}z1#v#918`>mC6Zq9gKLOmYEktAl`U#PRArbr~#l0P{yvg_VEOIR1w|^cfXk)pZrfnOB0uGw0j? zjaJv<80t=8TqoRka5NJ>Kukq7wX)0e?iVF4F>>|cr#=e-%5GW>%x{#qACOB*nta4q z%_rh1{6x~rp_+F;#-*OG4+!YxHzj5)sLYK~u$PDC{{VrZZBh*HG#2u`tX~{ZJExDY zY?ghLm;gMYj$aDnx8ZRsZxvG4qvzI8rmD~MQV?_zc^M5^`qh*J7w@}ZGMZ?VI9dpx zfjj??U;(nPv~f_Wf9Z*KtIPYs{>2n)%wsPfvq_>eViHhZx8gqcdV&oZqEbYcY&Apz zs&KjpqV?k$V@4jXmCMf$_>M*dz}C5u^Bfsdn>Kybj`^>*e=&t^VN;W;Li{Mk#txdY zf_c2=T%|mLPpWjUkeMI-VUaG?0mo^95!M79Owh*u+vtA=DHd4C51%D{hWOmD%xGtmgOGA>l6CuUgCHHLq%4V{(KQ6jBQqJ1YVr=WJluMzN zBNhZht3CpS>jYof8XBCxb>Md(8(A|iHWaY2DzJo87arMnSX5YQ*nS*Ij@vP%F!xLl z{E4T=!R1y;rFzBudaeZ(sDyXVp1S-_7+VW(_h9@4LqxA3in~Bk%ww{8<3oVwa-}}+ ziY_Jbkt}V%`_R~e$*8-osou%&=Noh8YwV)skFHdHDepU;$nGQo25M|4?e9b=L8_7i z#{2RESzj1J@PPWxX@D#%zdefW1wH5{R~n~P_3xh@7BM}g`z#Q)j!(@^ zU_L>LIeK9*_Vpr*BLFD*29c2U2Bvu*6eJPT$8*|@6svfTpX?gFx+c(3Bd)*lqSU>RpN;6DT1m zP~I#HZlRZZra98%XTsv#8B6l$Mto?(%CE|;%M0wcP{C>hYmt`GqdsqEK1l5YVthL3 z-Rb=jKqE4LEc@ppeXXUaarF2w?4GgU2ZYZWof&H@(05c&6eA!9BGyGolUPGZk#ULTBnLddY6N_xOZGUslz&2Jvnr!=xh9m7$#}pbUD125 z8aII~3y58|)YnSXm?khW{Ry5kM`qK^yrpL%^MKT|`=Vq0&u8X;6$e0N+Md60bj1t& zhPV3|ZHG0efgliSA`P}Vr=UK$OYJorUFzAEcKw{+0VU2SA%3)sXy}oCx^X*&$-f-L zFKaz;W1LTOwrT7`GN@8>64en>;3BTWF}Wh?Px-;DFI2&50Pn(&B(#RDYKaXH6z>RC zA4<35gsMdvf?sQCC%Xthduc~nDLw^vUZxW_ya}!1Hm(`{se0Y2;h06fa4Ufnu|E2v z%)V5SRG@zK>1l2K_b*GK?z!M@>ROomtQfzh?#!vv(_bQZ+ng?iIzLKrelp&BP4bV) zw_JzQYqDQlcw%#TjR360l#bKw&=8Osj)^LyFANP9-6%>_sk{_p~ z%^bRqV5Z+|{y*x+5YR-fgHtq1@p1(8ff z;L{5p>XHLOJv3`-s%R0_0IX$TbX~nw+sk~>r4*9c0jj~V4 zD<6-RV{BuWM|fkL9nIQ_c_l7mX!AJtfiw@}yjjIOhnc4Yg2-thJkUYmHu!6Q3SK9lf^1 zLAwWKSC@0--N*iO2@XGVl~W%)$gvfv3GSagBWKBT53?Y3^s~R2 z*0atwHUV84kA}eo9NStsmn!3C zrJz*O7d${6yF4kkt&$r}tgh@C9~vB6wR2B`=Vm7Z2dzM4$xT(VTPhDKJdmmAJr6bB zUK{?Jy}-9(T@p)H2OUfptp+xO)3TfpaOPnTB@QOA0?QJ0eS$5jCUYNHse_dMF*nZv zC}`m(gvwjxTqynu)Od*#@#-RQz0i;@`E6|>esVo!d}yZN8V)H|rNmbVS_S~|Uj*`q z@qRB$G}~e~P=2LNb3`T)@T}jIc%+anWp74Mf#cir-*dSI5tP27g*{AqVHleywDV_H zajdVq_Z?krKB@aD^7>(fbvz55c8gs1G;~^eN^*nuy!?B9_P}!*KyEuvJ7B-kP624_ zbJ+9^n&W(`v*ntO&zwj&F#+I2V)?MrNCoVT{KHSMW@JK&Kxs;OR0Cg*8j2J7T~jBy zT6p5blcsI%-lH$4DX32kdbv-x9lsU(uIN-rT~6e%MY2KGJAky6UB`9L&*=7GP10e= zr{85zz%vw4&o4{Nlru|R_pq8}{S6Q10+$5rz0=1ZU-q`%*uyxJRXVNUE|ACvIqVCr zjIN$Mco~W^x{(gD2bXg$i6Jw`;UG z)SWiKuAkEb5rox+IiDv^-s_c#3s}aTgrSF4E|Khjm!fW1<6sI36v1n~T8$n+jf!r7 zq_Y+gxKIk9nZw(^Pmw&Bo!SPhF?{%HaR8nAo#Y}GqnN#514~#a+Ms~Tm$MG5s(JBI zLxtfvRd)l+$&jTXx9W~>!kLG=S~HQuvH{A{OKNdsEP)TwhU#Z))u5-5JN^r~ujGidujJ$yq$ z_KR@5a}TYt25$u4jhTXcxZ9dah-A`h9W04ASfB@38Uq{;!z>OR^dHo3Sa+G2%(|%O zT%~)Qa^V;5o*64Z(A~LF+mKd26372zBZJx$bLC{_z<9ivF4RrrWtwwlea{>$u7Pvs zsux>S>b$pcD<+`uFl2c5Wx8-w{rMGzj7H!`Ny<;CD?ps4PyY4s8-eGiV^?~;-PcnW zn>PAeO_#r}ODihxvXvOwV$hcz)9?s9O6P3RYv|A-Z={&K&CX9Qsl0yUCMPvg4i@>2 zTLBBVFGJkvO%MT=p?-5rv)=VR^{^`!J0bN@uPN{xYzfl^L~U zu@VXHu4NYbMo^NA&x2J?V~G_eZ!ltLL01HhV;)Od?)bZf6zFu{V?kOK>*|(|HE@PH zxotaLxahFb0Ag5bJTa+R3g#;>!%$x@O$1{C*(Gjx95k+4l}&0vZXJZ!8@XhFOmR@{ z-^ojyyuMEpB54Gu>{%PU=wsuI@TFxf^+n*3c~(@kyzX;6BiF1^(f&x7ubp(7+(2m7N*56wno%?qFP9*C7PG0zHzGOmqELrt>Dc2WQ zH$O{e9ibKK@t-yxX;SlvHBVA@s$W{&D{5jgfz+fO5@V|U_Q6J}rQ`)e$;Y1+a{q0mbeO`tl8yqs z?w?WH(RF@=3OjW|)ouLJ2uG<0dGfZT6`Iq5Re(U z?{GQ&-rMvKtVO5S(-gVbqL0U8!}}t!1gqcmIvJ~y9gaync$=@~ zm46oSH$J43uh>^Q~0PzuUJN9}4Qpv)U7E zeEAwHbs_~6tQciz?klL@s(gEbC0|NnSw^jK=Z8cnc|$V`gE(#S3gbs$+KZ6@2LHPU zKWIu?B6n)Fh3c^PRB~UJ7YJNhF@2%^CSZ{E5g(*3mczx&hf(cyI_JKCJaA^q9KX>` z1om+>V!u2Nrj2bGxWDwLA199c9O^^N%<5a_c^6MirCl$q{f2wRdZCh|aAoJ+$8)FZ zfGiGvCHEYI9^wl*!*nkrrF;HaZOjYU#80$n%Y{IrC+{g)g7#RoN-kqB69%p z+DSbsaI>(X^js~!`w%FMJ7BATvLX z>tGZJF=8UhNV>$uQ~n&m@c(}xVfBc~(o!$YP33F;NPK4`xx~&3aXzh5Kq~m+5#E#Z zcA;YdJ^`(rLcz~X|9c(*7HgOjl7e=R^)34T-bT3X$UC$YA&RuwMEr86axOZG z3SrOVt-Qv*#;WwvIalG*R4uDGZPeNgjT4nz{j3R9s~~0`;1l~~4J8XN?fu8mI0`uk zrP@~Rg?)Re1X+hz_-*)>9cOH=)I!_u+i;%9@a0cY1p_31>Q3V3mZ-MCDEC*7J1 zAZK};DJBjpAS?CF4 z6dFtCKVeRAY)CY&i@@Z^4arLgXB%yWhG}DKmZdM6r`QKqi<(%R?<)E3Q}MG~H@>)O z3=?P?0kz+&X)+nuP9}vs7Ap_WkyqtN{4%H=i_N-0%k*u5vc;i#5TlMA$Mk?i z&OH7TLPBtL>C$o1I>vr735iZz!j7-)Y9EO;px)+Te(>0%xO&{kffovuVoBg=66T_M z6?v3y0tN2H75CG%+cEU@_1zY6k8d9G+A&DgwEM4&oR^Q!_XJ)|zB@CWCSbp_R0&)t zsi&vM;=Vn7Wv8R6T6*;IRTGfWIObm$Daz~O~7#Q z1AQK*Z^za`VKw}s<8*D-E&ebOZeJB$@ zzgrui$J`O}u79$2BgvQyxXPy0y=~e|oN0i%t)c{nCjt`t=El4q}NgZp= z7lW2|L5cN;3iZ5lW?i($%md59M(p7V`ndKrC6mtPJ)fMRQTMr;VUr2nUV!vf7n|e3 z=1K0UPsFP__4oUVu~E1iA8YC)mJ*2XK_3fZeE3F^5~#J^(`TLIn!;hb*g!ts182cq zz0W0ORD@M~p}WdJxDw5Gxl#}9JEd*7Wnjym=>LlQ&Q4f{dciJFZD6{&3W#9OcRB>M z*G3b7QxGD6h`A-Nq2Z#BLBIN1h{wb#m#uqrc$nK^Ev7=}zd~2wlmJXf*RaWYezvYg zm_B)UWMpKmFU3*GFl~SN;Qjl#YBy>cn$BX~swEXb2tQTtJCjjg4;(mZh|e`Q0}jla zUv@PY6-REDd@9-5shFv@^Z#bdB^GAR9WjJ>@B0BY}>F=K@gA* z=^R?RyJYB4xjyT6;qC*Hl+x7TLP^0(L7$8pAuTOFsZ zJFFoMi=+>dZ#;J(_!ti1erozPvjmd@N!K>$K+t_wrFaG|E zBJehh5C&@IXr%9_S_j3t&Yyo=nQhn0UB>mNlAkkDC#^|-W#PVO!EB7gzMuV4?jdR? zGV`b9^0K?LFH$wuJwR%9sZ;RJyrR^H~rGMYSnLvxZXg%z1`8=!`n^T%4<-i{~i~J5` ziadA6ppx~#kkOw}*OfCVU_sv1&E!K%biQeZNeq_A|K~!Gc9oDyVMD{kAp#odeEHNi zC%|+mFI;{9{$-vz)Q*(LZl0=8PYmN1zVXN0Ov9$mzhdsWZTfgYfJnbOODr*7bK{bM9vJ#D8OQ*`kuS(MY6 za06pUlJpU&@VawZA^pP4v%h3DR9mCi99S^-u^YS+r*QLJ`fTLX*{Fk*+hlio^xpI1 zC5e&^G~O?uZ!Q{{wlh;^1+;3e3Dtl}yku-xsIADZ#A`zJffoML;SiXqp|GgWL2rx| zMGqgZ@b~>5If=;3AvEQk0n-7w&QJz6DI);BXjtY zcw`<7%I!$o!PW?(&J3S}^XfLo7XdD$G za}TGV?_dm0+CdDh(#6X8(iRI~h}8X=?Ox zf9~<*;r{l3>$=fIgG&zu<)Z*VYjgZ4qs3;iwZRvxlY=^{Tc6wT0ifd{4IcMKO$CZAHzuig_ zrgxO6Hj$Z0y95d0Z|$ls9XObAQ#?#|IE{bfC4PUk|MpQRC)cxEsC0oO5=*=go%)
iR_};Eb1<`wzTTPFls*ZI=?sb+65q5+!)5rLD-qrPxVginidfua4&Q3u>t1VY9KfAEDsRwATOZ+$EZ4xfpqN##16OKP!Pp>>G22RM=K z;xS*Ly_ziJr}r5m+Ignrc+l|^*n|%&`|+y&*P6L6#)(2e^bfw{OOcv`hrSEOW}Jy= zN~s{hB@{3TCfVf4gu&9Fcvob`xAhT`pj6>;&W3EH#l@6lolU2~He#uQ3CoqLs>(dT zRIC&g<>j~b_xG6?mNaH2Cl}k`IyW}^(+G)(i1gHf7zmjktD^sydP|nV`F1YYP739x)rgq|66uE zgE5CKP1<+6lnQa{8$kj#!GfqnbSCl*jyZR&W-(6(ZFkqliOTx1nV3Wp7nd-IZlAl& zDl3=o_ZrOGg%4e^tQghp^p7klTwN{K&2KvuR2~pM?UE^3$rYKS;<303qu^Ooo{?g2 zf3%4zlA3-!aVuuMyI@s(ZfD8XVm8WHl*}2colP@ZyJuZMYjY3<;tUc zTbwozT7k=ZKFD+H@ZCRySpS0tJaF@~q%`uEsZkF>aZxV`wz)lOE9e$HC1ivO2W4Co z$DM$SnBS|daVTfoz!#;n=R3xf6)t^I7N3C8hvj$os5QBP7x2bS!wifmDpf+|9D-I! z&Qme_ul7zmpZzlnFfs8aY2#(GR$Z*wOhtpbPQf67&F^N z1s#*wPRj9XgrnYD+fyo3@t#eC!Q(O(HiJ%Hoj$1CkYut;df3PzszEk?= zOIYkX0wXn&au4T~!k%m95c%k zXCeRAK+ECx4+QfeZZ2R=J2gEi+TnAxZCcJZtBy*q+1Xiz#|P(Kol#ep<6{R7-ECq% z&$EHqhK3?F2K7ZkQc~Pq8{{T}87+={b5kF2puwL?fzk|mc*XtZxTfQ|3!i@3Kxv(3(KzNnL1_Zgk2}|2>#46p)mW9 zY5IG`0$5U!v?IRo0j}um5*(Yq*kOOoxn{}TZQE6mDiBn=NrF0&XiK5X<#T!YMYexE zHK&mw0aK~AG$OAsBu`s7yE>?ibA22$dE9%MERpXC!2`gr)J8m4@?g9;S>{Ef`Pg(3 zVLoYIK&jBtOZlgPtC_x{4DMakOlPiDXLQT~O2tHimz?@C&Vvufg85x{Kl5J)32wxX zM|bAuq{r~L95Aqoyn@VTzzJSA&MzEt1HhGn&C>`!($(l}M)mY(K~j*OQ*}5kU44i1 z$e~}MFt9}BtV)54c%|-7rX#2W%r>-Jf-uuCJlpW9W&{RBTDx$=i>YD{XcJz^ug&Fb z&Jdn(Jr_X!y{-oXU`!55O5=^NZ5}Qz9Gb`Cm;>gXt@bxu*{2Rn%); z3LrtAG-FTe>9h*6`ghlxw2MN{Yg=MEKJl`-+CcFfJ~A>=xPE)lY6V=Np!mOTJnCFS zfWHX_jd@~B%=GVd-b=;jW}z@LG>4>Q7XO`My=wNKmw1KigM>7jpED8qSMNc}>-_=q zZ|P(HNtvf{SYL;(e&ubJAo$M11Ch!**}?4_f_A zeqBqYY`S8XgfJuaM__l<&z1(L1&c#VEZeNsNpNvuS9L~@+h+Nf;A93qH`goAbc91A zM^6m|wgwb8j%!az!Kn;jPO_@Q@bH()$+d7LQVOt42i)d_38IFY=|iIzYCYv2V3k>x|kQlWKxCKeDe8A)!g=~ z?v}fI$Fpu!mA)yir?Nw*aXRTk@nwe88n%czD>_7bm?V{X)JEEIDXDp;MsjeUD{NVj zj-<(d+O!Ei6z9D1fiPbQpJm*gn{AiT69XR=__2j_ror40!uGJ?cOXpYCj3&dqiEX{ zK0*mK(L~m3V;o%E+mHbP!4Gas;>x#J6jzTBnI2u($N`In8UKHKpDa(84BECi#Dzti z3#e570l>k)rl+(U`2;~YLYD+M?5%=~9=or1&V#)1Y5=gE+-l!w-P3YcsAAq5PBRt_ zAOn+9#VStV(8o`kT5s)!Ivb+ZCIp$h-$LAM|7CY_x%cmtI@FY@Ir+fSk18~jY8fF? zd9$^)(GvlQFX^>RNQ)F@q1P~jg%C)VyVo}9$l0_JmY&GRjs#Z1?O$;%?T!cz%==Jb zgOwGM46c{aRiTivvWD|nWYQn|J&j^<%ne?avIxl%F+C{_*>knDc#QGh4^obRa^;7x zjNwyH5yIhTGd$#!WjCa4(GztY_jCY&h59$ZT1+OYCc1;Ayw|g1p}Hi_^_eZed=vP5 z)Tm6e=79B3c#&^@p<~pe+Tqt4?cZ(d!FG#63g&pluAME_z0W+tL7HA(x8lEg-McdB z7Aw5aTr@BbYcS4vH-cNj<{!`v1+Rl)e)^rg55&Otf!VEqmx4~8u~06v6jt^gy5PG z3t0B%VuBqZc>VM|Nh*~O&$?KcsCiwWn3 zO0%X_)bvi5e|`#nos&V)!^s_?6o&OTJPTl>B4;q<+%jxL?jnd>H7Wt-zj#0oTyO1S zc}6Xx8~u%!hCaCDlvccXvvmn}<~z@zDXtGJ$abD)l>)8>-uG-l*(+9!&EbDIXtoqU&w0cwrw}>bs$R zstVfRz$2DJo2Z8`xkJASSN+ulZ?#{YkDt%p)I8d46|odX%05S1U5CjQ9y-p52@F(<$voNHCxuuFN4g0^X=VlWT5D>6= z7@g!?Ttr+XIBjZsdV1aj7n5=MdYdRa8jaRF?Uyn!G1&rpx}Fbi2nQyP!K9}D)iaOC z?p6WqzHHpN?T$p7cU&OPsi^Y$K?9sMMn!?n*ZC0#%Q0@6dt6h|uan((TcvHT_@Zkj zw!g&#w=ljJKmMTEl)@U}K_FU?3cH_=%J)@^D9y*6&ux*c++wCx&ou?c02|)#vKm#R z>8#VgI$!d16pl@oEr~dDp90Q+89in+pFWE$lD)n1I*@;v`2sP@G84OqJP;(|Tv}Y# ztnuyr^`0!vR+*RvyO^6^Ul|FGR~vAsr3OSIE(*8Jlq3l~OW?lrUW_sfrs$dX+E5(u zOE)J=?Dv>EO!YcwJ`~s_mOOOIB4BRR;>$-O!*~`z1^PP05%&>1FmJ|mAw0nA7lr9n zF>lwPf+{=mD{|Y?Udov3uni@y59)a=Zf$Q&;KQ+N5%Q`MwW!7bx0`z_w8x1C3TsrMD> zn@_l~sIQW6u3PGxZ*PW7ltToxoh6Hz)Y&CMIrsdZA^!anjYHguCqJe&9z$TNuk74Z z@ohFpF=9PixciWpru33Jhky$y^*yzf$qqi@oG^`x2PDp^pum-^ML=|*V3lVv?Nz0Zp*LFh`z=12ubjr}% z=H!ZEjVzVOV>>7J4eSy8q#nw%@2=Q&o4@%GsmNfO(=&0{GdH-4+ngvUZ)jJmD~)e$ z+Y%HAUFR>r;Ug1H!Y123I+dj5^#su;&p}DN%`CCHTP)n$rVQ7TFF~*Y)7Za@Z);*u z2}Cd|GQoGg;&$6h)$Xr!O?ED-dAcqF|coE3sq{rGYMfd zut0#pc=qQPP=GzmAhzlg%2Q|<3FPoG z$UVMTk!iK2-RBmHvM<8!oPK0f%JBG-zv;oX=>D9yiZPd?;vx~l+6^W;lS#=Iz9-oC zM!598USn75n+mpuxZs&|gOpEH+k0iqcO0(gvd%kfi=}Vv$bO)-sDVq`EqTJFiv~qm z$%p%qw$4#<-`iN(^?6u%@f@7e_vmV^j7C*{++(lVqGTh}PIp8#5-yCw)GN9A30>r3 z_q-z;iu`_4=O>K&jd~Hu&ZtqaMkv^o93$C3**vSky4u+ysJ!NkWR-KYTy5j7I<6&G zB(T=8TH-@=&&ClWWmc@I4B=sVs*px0Y4up-vk>{4ia?rwqy)$+fE5X_qe8h(*QTP- z%+rPX<5~rMUdVV;Q`(PrRx-+)0#NNUS~DBDUT)9!Q6e{S;WzVjiC+#`l{_OGTjyTD=n!(zDWC?wQ*Ex_AO}bf21|u1?6FDiVRhu&2~6EN zj`64=pa71T`=_g*2(DDn3&b{s-4>xS~oi9&tcn=8R zLo2wQ2D1V-e_?!!PtnRHI}JaeKO)V}9L&^_W6aQjU%sfObnI<>88YpOunYL>zrW-s zsjw}1_ks#Hb=nBzMBX0}IK`Uw!Ev$J7ZK!{M8_rE#>A=Ju7gY`DmHF=Gw~1O!hJ;g+8xLS^Pd!uL`4TegY}WH zcF7*^8LT~&5eByjH3F`i;eI%M3_XW_X)suQ;oUIx_{b#Ym*G=3r@J=A{{7x^eSe(a43h(Y}$DxA;CkgC{$xc4Z3d1!7 z4x!56SnRGs_hZE7AwU@=&{k)?W@3=Y^VyzE$mNSYfvD8S=?i_|d$98w;UULBgTYDq zm5HGBpA$f^V7ORFJ*lJ}iPKep&m8I3dqx%?m0T#jeCx*X01lJwP*E~bmU%fKDk=qQ zwNYb1qgE4W=H#A$HNyHld%pB~<6PTh1Q$+}`~h+67-d3JRWIMe$rQ?9o=zN>6BpY{ z<2K9uhCKN+b19)w9R0@Vs`N}Ha%@MJwCW~<)1*(A@Lh{EUu#cm{9?r>UG#VI=dk3% zSKKMyF0Ja7nd>Iv2cshJjw`#8b!PR*pVd_^>B}tidWz-z1U{AW#9CNfn^aW-BLL(W zxKB^}g<$wUPeX&@>d_R!qN)WA2^w)Ga3pN@^2AHh^52(2XpGL@7x-~Tk3iz(qnBTn z?jRK;O@YhT-?N;N9!_T2dW7{*gU`~&?1aUA#x0Ow$uT0~KrW9wuRJ-zwq4-!bfJCu z@vk)fFv3NWPYu77k|gn+T|?#ysy9cr%LbwsIIZ^aI6Vh8$34oCC1^$zKNBO4V_R$` zNz=1lqcF9agFV8wME1UVQxMgb(CAul2VYWxdP*mQlO5MVw7@d_W|U#BF; zFo!d$nMkSW_QEy3V~{)>a%{X_;cd(6AsGS7=fub-r$#CpH^&|*ITD%0Ktw@!NpW`F z4(?_jvXD|MLiMim{AiS>$Z;?%T%R5?~P4S>788WY}mb3_;)B zm-3wnORS2N&-WgBq8iVjAMU>K&BsEf<=UsE2EE5#{T21#utcMgR$<^opZ)z?2@@@; z_3WcRx$7rDjWL<5vk9@(OEnx>i?9IED9g|&3`!MNBvYxx=>{a3$%-nxd3UBA@nV#D ztkyJF_QXuFnwDwx!=b|ESy4!k-ZYT@hBHK|4jv~#m-}ICrtv?f6dSMiJ~U5S3jLr2_FAa}o; zEF01x)_iXSUaG22*sQPrSGWx{)W6d=Gmr1kPPjx=c0lX>F;MJYgdFil$v(nZx@1hy?eUIY3 ztxQGCyMp?B@UWojCs7iZ5eN4-(UuF}kO?Xxq21k3Usn8!)HY9BtOqu^sb8hrj-ETR zpdA_+!E&2QQ}_lHxHBq$P%Q9qLgfEc=}i80z2l*7KQeOv6Pe=2_Kl+wnk--4lXGW< zTH8sAurEar__i-E7~ktE#K?#;fkj2RV7Q?8Bi33q*!-N;uNpNl&4s+fE-%(}=J^W( zUjo^g4jXZk;Pv!`aL23C$fKQ%coXKo9RAc%=-0?!D#fcYO*`28`F&Y^#TgsZMSW!h z0e8Q^j;FROBDj%w^pm(T|Mtd^u5r%K{10y|+0gGCiUl4shJYtmoBna1kUUiX}!w{JZ+Z@DgFoe(1i;^YfB za7HGf#>rao3Q+JbCxhaU#e~Gj!e+Tn#nZezO_3 z$JOw|LKF&kU5<@73*r?LB%+P)lP&TKk&za^Mqzq!t;1ZMGb$?=_c9~!A!Y?jn(NrL z=S~na#t}B)b;kb>uk+suZMJyQ5giNr!kYHXitqRil!N%q0XQWyDwYjbIo2ekB9t{_ z4Q`yu2#AUn*;RakWEdl_DyhQV-VUY{+1`EwtQ>K~E-q9bm@*$3$TB?Rja1-KYY7?rNftzG zHPZ1#ti6|-jI8H|WuXi~LT4o6pxr7yKK>Rmh31UAwl^Zq;_NTV3Iuspnt$VmDES~F zq-8pkO4A^9^GZgMYDv)W1==Y6CCZ3vT zar5NZfU+FT-Nr;4K3-?-Ki>;@h6usN@Cf4nIU79xer`oirrpz_u(o`04t@8JUTph# z-;bQ8o@#-|D-V*YM(;3QRnB&L$`9OAXsUxHz1u~x;0S5Hx)7g)Q{MClUmJkOg+y0_ zgXVKJg8IH2Eboke+TQo2$`S+bspcX@e|x7)>*iejrPqrd((iEG1io!jLjw_;Z5L>Hz&`4%p;KFz1r)vvBF^JD~7n zqix{ypMTk7en+y~>hAWP(-!S=2{PRrb}SOVsgsVVLAECLl^&Lk-O&4g&|4~IfnNo> zr;NzOZtZWO2J?(vSG?C0779_{e336WjQl7DLsQ`s=pBM67~Q}zlpvIas@|Px+7&5< z7<$ark3&%LKRy-#|2cigR=$`&wITr16svsTX98!%7W_0E3>&O=M&`%E$J(qDd85vO zumbM1+zZW&3>VS<*v{Ouzv85XO`&0TPC|SC=XULkH(>=IA9C5awS)=@={$c|0rC_5!ho*kSTvCV{`H2{zom>=?THtn;FHd5|ZbYCguLNG!fG{?m>bq3H1k@%GNjG zoK6*UM!#)xmCwwSd%t$7qXdn9IusK{1|(2D{6^=$a&0)kzq_wwk!6q%?J_%c8awq^ zO7A*>)&-HFOcg>U759vjS{i`5#lpcHP$|)YCK|xtV}b^juY(|+IqG?Ci>lLxevCc= zwm|C0hI=FA_1WpMj#u|Nbxd5<7ui(TF^DwVl(jHQ$D3n=_5}4HBRy*!K`U%z4}8Zq@>L{#4~35Pnyp@4xMF^C zdKxEM$r;)W?QSnF{jos%;H}m*|C}i&PPDT$vYRWi<#D&+rgcELi)#nTV_}k@eHt~@ zB8$y!TV9D&VSwZBqLepnn~}9xzX!Ll9@#Sm0gy_vlnABlKVk{s1%2IE*I(8@x_J zEj7c6R*DOK5=a%(qf6yToNRg8LfKE|=Jn#{@je{|%YDs}t4M*!wRXi~`zgeM8UaFL z$`;`>I)K1!kODm~u$Y9`a6DMn!~En^n*mKM;PlY_k%AFM1$FPy7^zRXyZxScBy-Qb zQ0@eAW=iV=Wm>h%g9BZBo5>FL7dmz>wr+3;FAx}zL5?8yW1Bv|G#l33(cN&IB)bPI zmh%M_apT4QB57;;?w4CFX)Je)A{RF-cO5|usyW>zPVQY8#~xst!YXzzP9UL356TRq z!Un*-Gx_EIH=pywRM26+J9Q-6i%Dh@9SZ_}ek0^^gicCQ z@r`PRf$rlintrn&wlly80jayw!o^+R7>uog62zQBc2LQYTx$r_ZNI^=nFs42_?Z7f zs7pygZrNPE31Cjm`lp6;xUwjqS}^{L*<^v=MmO*0#n)oPoI67rb$FCZs~q?md6%_QM9-mfroZ}G{tdg{JUL=slR1snlj97kB(;y(evC;+AOJOaab z@sr5XDYF`()3yM3S5t_feP*k0WF}aHT;=Scq<*aY|ai^M74+Be_5T&YdXUZ*`pJ zjV&f;h)FHD&(o&xXbSv zf2PU(;kR+lak>axCKwC%QdA!>>XyAgaFRTA5|iTGW;|Br~wiL zh53`HF4pj=c7&^ctx;qw@4n;gfOwWI(FNc-5wsXP`eikuzix)SK0CDKE%{cjy38sF zW&hMEzh=cjrpCq8(I&VVszIrB`6eOYd3q)?+G}TAusg`*d}x08F0|whAcd9h@x3bw}kB1sD z#c}NP3PPL3+;6KMtkJmF#E-WQT!c4R=CgXFBxv%x@5#;gELYA_tA2QwC*T8g!WjsV zgFaOz!vDwt>&XR5WFtYZO(;+PnFUaZXyf>Vt?)ifPb1ylQ!2L+X-59Z4ZZ?y5HcBzf>AK@_VbwJ7t+lN@{bXrh` z1YAZv2ZA#-=@zeS3s1v#24zNjzg2)@mo^eTu(wY!W9htx)IEQX2^0<(t`{_B*Akw{ z4Kz{gWXqyi;3B|fd9+xGPvykDaULa`Q<gEJ74(0?Sr*BJlg#M}33R{E(a?Dh<^ zBWarZlAzh&C7kE^Z)l30c_>o0;~`2P@wUqY17GBek)t6&sQ6c@QRb>`@1@R;qbECLp7L&T z*H#Z}yv*yqwGQsy$CWBXJ|rCeo+YcUYp$>@!1nBSzT3Oo=W|LXFDE<(?z|MH*hf_T zDpcTfj<_uQqb#~(lj8V}wybC#&5ui8Ils5I%{JDs%s+3*?>+li|q|&&a!@9y8c9ruJ zzR-F<&)W!^NX_y+6c@b^M~&0|+R9yvo7-!@+_>2y%9^0+k#%^pTz|iL+BiR1<7ikD z&RhK2U$g+MmSE)JbQM_39f_iy9mBL|Vq%$A2zI+tZMH8UXblja4VkZkRO~{xJn|R3 zBO#AbFfc+ufX|^-*n<7jv3UCT6Fh4{XaR1u~jIGPt%Y zV_>H5;RQXuM#E!Eh8U@=&CpiCmqNd2R&E`SUnp`3FS#mmj+yc-5z851_0%Q^OGeX2 zdvbdlObCi^1CKUXa>-q(*etCS>-CE-Eqv{9ZnplIUo}p;ds>ASNEYphTA@Efu+xCE zUUrdWD|aDtHWm7)ufmW^9E~s1$hcHV6{S!2NJv>~CSQ0+T^+^+&?a;%b?mNV?73Yi zrPTa;B|>>w_g__KTML7%&`)3ZjpGj1%%9eWTTTSC3)4t$VsAS#(^#nk< zjD6Pdzg*EXSPDc)Q-4ScuTE&~IvY(QM*j66?CJN7Q9dhd+;j9c1v`Tg-7gZL!GY)9 z1n=ITqR()000#Q*6>NMuD;Pg+wG7iZc)9j8wEFH|m%Sz6C-SNePfc9}onxBf`7 zSK63rcniEfRBzzR%U~jtY&lV9;t==xGjyT!!^;nIkH(Uca)@r(V#0g8S_f(5ZuWw8vZ2b*(KHhjSh zX9jQ>@X4N$m~V(RQl3tRd2Xra#a{^Le}&+uK_}!rvF(L#z?*HFn3cHo_C{d?RGlnt z8#=-f@nldF4QsNgax;Fr393zRP;IYVj=so<#z^VFnJha3ZW5zJSvpp1+-ah0nyZt3 zQ`CfKY2d0Gole$#jd0b1gL%(wWqbU-+dzPMc+d&DMBWEa5eE~AuFOfq>juMY>!NJ| z@z-)HCdC)s)mI5Gixz3g@{0;VDnHz4zn~}VvfJvY7g701fW;vdL;$Z^SA7$9L5?8< z1T%>kX6H};db{XzIB}pES#-J+uz$ zr^rt8-{KuNDm3$1Jf!lyy zIH2 zg_Z;N-bR3GM5S7~4eg(BEm}o|5ssG@^kbGd-3XK{pPI*y+&^F!AF-vsIp7#2$+~qj zA>ULNhHEK35Qt}UX2NdASLW-{d3Ec^i<8Wm4Bda(@T+Ut1t6G#Uzy?uVI#C)A@ zoO%>+SDUi2NyM8`Qr55mfp8K*eFU@FZ$84c3$rx+!Ng{v+}zMK0z#G+?Sl1}STsG}w3 zss%SMLl~bKGb4jd2WuJg_d_}IptR*|XLsMwV@LavcOzY4lL8x^ zfzSoty4R47Y4V_>?8!mI+)t-ybglvzGIHwv#96FYHHj9mg^KuBAiIX zjSAt{*Y_-Wb#JRwB5g&+77PSMnTpW3`8QT;V}EN_0kxJ&)t)OH>OXB63?^7lYX0%7 zxj$@5Ic?Tt>a}P6iLE}DqXp1@1X|(blA_j*&ZCdD`dK&mMF(y>AD>UGkBARW2v zh&i27z37S%vRh4|;#_ManZ8&VEwkjo-d0gK-%Cm+bJEYR5$SHK2eW0PW%|@}!JM~~ zjd+hbpf>3h&bTk$><-+&HT_Pl$d*Lx8;iFjk;@vcXfdqhw;k?p>H9q&eoaiJZ|~!Y zu4~9744K_0Frni&cGYeQ$4pAzY<9~uGt7R;9Z#l2&{iiavDK;>N>r*}(nuS1?7pkM_wd@xis+*Yk5*7w} z(^Z{nP1*3VolHS}c~G6ea-yxCD*ShR${u5>6cMP`ZFXSn)2+6(81km~j#~|+Bm%qn z!T$Slkl2e)%lqVqjRxGlUORl0z6vv5thpP7ZjE+}6||+Do2Pm_){`ai0k!}W{R+IN z1=`8_EGjtxW2IG}q3o@;X1kOoS$4~#aOJvFp*Bp%ZkY+Kt$4B!#_cwM8T*r=MMtqQ zd`3oI(wH}F0zIdgZ@TN%DF~MFQeJ=J<33z9ZjxQI_3<25EH~D1E8l*?ZHry!LJZp`pfIIh^g?|27n@LV!i?aN zD2O=?+H~lzldl?vSvc1(G)cz_68@=Z5HW|fO_Y6??VP^LK{O+(8hgMRtQk?uRCsTq z>3ak;P2K;p2;aK69Jb5r+OPN}mD$M_35XJT{A4PXD&fr{2OUste0%(Y&(GBE+uplT%r{a=yWG`p_m6!G8r8I&Yp%$%Ub_Yb^ysyV%o!vYEOyHbf@h;&rN0Ng_LU zCIiC`6$dcW{|>Q9TLGYeU)z70c##Ksg_?RQ05H6X)!kW4e<@Ma9S)2w0jO^&Y}!)U z)WuB8u&(#031V-_CA0Axahz&lNPPIbTtMeD#1`pJz?gGRsJLYK zkq4m0-P&jB{$`KQAlZDo@0{*K`?Epp;pgJtBGrR8;U%5%FcpAkbnQ87HE1kGW= z3eGcII2xl~F`%DYoVdM?7&qTO$EH<$_wp^LQ)k$iZG>$d)+!nZxD8e1U3uqk9%7o< zeUEG`Yr-i?v-rep9ty!d{#$KeCHr@WM$Gy<{h7Z3y>{712|{=XQ7lFKTZI_3m`Q#F_H>9>JF86gfwbJvJl%mw;srg&I z@+*mrXCok|{f6a4juo;ySF;uQ!nZw4VVD`LhQCtpw-XZNoDP12y?HT9&B53y{EzAb zkyK~It)3M@q!@^afGU@<0tNqZwr7Z(Vxnv7(oFAC+OqfV7ZPPStGz2d>b3d)e%^4f zzeQGo_41@MpOBi&dln#En(wYEcv~sOnxI_(;{wdW*`GB$0cw*#c7V74_54hcgy#SZ z=q7Q@?%`8<1*e9d)%U-(CMGVd{jg)jq9)S^RT|uX9Q5<(P9USn?8doQD%m8)*z?)H zS+2w9Eqz~4o%?Wj71ZQVayjbp;1@aY_`%6zV=KFuoFHYTpXb%*tgjmnxtmw0>*y^A z0T!5m>uKj0{!2%G)xv^|_bDkx---=RkAcsc#_U@1wSGwqKjlaaW7uV?kh{6GJbaWi z9+7!d^DuGf7Z1QR->+K5IAc2DhpYzurLoS;nrGx9OAMlc- zBuog~roTku23vmxkH+9mAXq=#P3GF_kj{k00}Z55&q0`gvfIfG1!_q@P?k>&W5(bO zlfZJ9X9DPu4{P<&Ql-ZBFf$?Vrw$o=d@+*2z`fkiad9VYHB5j72JjfdIK$`vaI0Tu zurL-XGwI*!4jUNEaNSwjK%Ab-5!}RG<5;h4SnMLirW{AUsWgUt2R_0qfitIh>cc`^}q5V-4PH0D7TRIs$vAhd7zbnR~ z8aZiMKmIlNBXeSv?VYnwP&)K*bx}MNsYXN*B5x&=saN@=q!~|~<9~~pc3=dLWnKZ^ z(B->`VLLO0(Uib`UfrtjdtSt+GEYX9yac>C;v~`pUULP=@>m?q&kdW`1Vv$Fn`s4b z@hAgl@~pvx!IMV$P=`;!4mVOB0oP?Fzwyx70$0ke=-4Aex;Z;3<0A1EZw{I=JX85y z$7fl#^A1Vv-=T)cM-$irS_%nnaq)=68o`EHJV?M7NIR#$=3|9TX*->;pPNbN`f>ZS zcMw5+ANZ)_hNTrHI9i5@zFLkOpbV&WB0;480U!JrCg-T*m)iS z8R3aXA%`LbrfgO7%@1Kz+(L-Fc#-)L%4cO>I%XbtEVIkMlt#=FgY~5SlJd)j;X+U{ z^`$9I$Pt|0YhuMz9h8dEyLh0g%GkS0xVl z{2v7ia#NGJGw@LRb zXLfH=$G%wwx<8>|a4#j;1p%oDUZQ#bNlXC7kd}qb)HfqSZrF4p8Y@Dt(-f!DLJdQo zPqx?3i1Ww5c?uy^hyfq4(`rG7?~Iz_Ff-Kc>I7rR4XqtH#)VjPgOXFlRs%s_-9FYA z{KRmz z9tw1bTf8*qU!Gr0{@mBBd*yX+cN{KW>0Q$qiCTGRHtBbrC+gPt%IoHex0F1~v9Qwf z$Z{R{sOPot8wna4?BZ2T8E3U55`l$5h&DG)7eRhxtK#)--O?jQqQDo{&SEz;RY9O{ zlNI^q3jH7WF>Hf4O`Ki`KBF~K-RtL>OHufZi1Xx%D{=m$P{owC<|Ifi|Gt@ZY7jw! zjuqB-@R_D)%mtj6^zWbvcqE1rsgGI;N0Zx&74jRW5Y2!wJI8`(F`|1!NNQhR*Zgjz z=svO9NT>W;{c~KI%1Bb5M}8~64_$1CU$W1L&;ycxr9HpOQ{nHa;X;N~M56e}CO=R} zQSi);Hupgb%H>ab09s%o5D9yO?qN&M#0rv-Yhpo*bS%6NIQAi4`W7>PZfeshu%oPr0 zJ$ctqlxk**Zu+gMnWo#3FVhad)SqM(FjDgJ{QZ~i{@-4!aK98-i%qS8HYt$KfN7{5 zU>Zt^A=ovV665u9*=AE_ZFde%%%slgmc5^QguGX+^3Pywy4+gku8??nOv0DT{V?7O z7_su5@Zj-%3$hBGuzKopo{ge`WqO*dp7v=R^Oizs%V3a7AV03vTXGCt6GA>g`_vg5 z!Xdu$Qm>Cj@*q&p=Be64wNZ!Hx?){1TNrL=2j||}&nbfNPTbCN^rL2S2|A;wk=K33P@OJK{;k`jckqB+(0&Uw7>(q$!MFD#`Pq`;cb`BNt_wFF z9&L&(4YjowN0%b~Ud5G_mF$`-PYXU*4#wqH6Gf&A)98%sTpd0~U&X{d&$e72CQnYv z6Il$7vqvx1Vi6*@5@MY$7MpJ;nYF90swmaeCVH1{&-cez>fUCE5c4_a7!A%}AF7h@ zRiZN_u@?PDT9d;dYKAtMvvsx_g+1t`+Y9r+=mv$#$i6=nxKa z*N4Z_i8d!?Bm7;RGH2~bK1di!1$SF)0CQt9q4=?3YB-v{-+pYQv+So04H*PL_q+56gi zU)MfKm%M*lL|W@30uaQN`tB^~?ZwHxFnwc4y1PJY>@{yJ03PGt31v9=*m|ZUb4?VB z6+C#Db?dkpi`bkq%unR-G~2U-syXpATZ_@+d++vvDl7k`uf=0 z+ml`w4qHZgUeDY7SlVTJ`rry)mtLOtzlPI40lRF26i@+AHy7pETcYQ!Gm)>H`_3Xz z#(J*CoZY#9i?E(ysz15*r?qJ9ajl(U=R8GUi^and{C-GxAMb<#OLBwV>c)^-v6kvb zuyO>N!sq{59A6O;1=gO<;T-Z97e0&ct3QC>wR<*B_2x6uD>$Ta>{zY=GVnt@3zGpG zs3Qk)i?0q(5#9~^Uuxg#Uc@o{ST4wk=VPxZ#z!}nV0{e*Vsd!!s$^jy(E1<*6VR%v znMPwf^De6|Yn`Px3m}f;#H(l}x|Pg%I`$|ckTTA#Ukwq>EEKTb9bL=kEu<&2oh8%v z{47krK1`^}9@S$jq(&bk`l%gz@f@@u4rP||j9Ki^&|&=bIjng4=9Qfn_ol~3fF~-Z zj{xwuurft~ZH-Et%awm>qhVyxn@W_}!DIC6XQB5(^=|G$ql^3X z*}i*y0$ADeyV-oh*{+~Yv&jN;;0xnwr6oY>+uNtJ6vd?1!ZmHv6}mqcM#8?+Ngf^D zI+)1&AX_?h$2DjaIBDklUxgM99UXWZp3h#6xele@1vSqH3F)(}{>eY~PqE@|uix@} zz0#iUP5%cGBMvaYh>{^IYijlEgLmyIw6%#O5-Jp6!+<* z-fyfxOB?q#w1Gs++6Xz10rDjILF{a^b;NG76*OYi93&%k`at50>B({YvLS6vm8W!# z9q8x0rl{(NQ-3Lycoch7d|=WRL#(~5SZOjHPkSd7Eo}dZ6v(CBRy=U1ug8r!pM_DU zv&Msc;OG+Je7}JsE7ljxb3>bJM1ydWn-{H7wQ6mQ&#%@99yBFiEdR2NG<_|R-`h)G zIFU5gs@F;{j2++L*t_%Eeho$#M#K&MCnD%yED;_2fC7Re=7%IV&Z z1=jZUB_HS~ie)PD?2nhLn;026rU-g32PJY?(+Gv<<3CsV{2LHHg7>d+hm(=t$V zfq0h_nesiUeuV9Y$dj`3fpJejQJ3AEwvxGnzDLPPKY1Iu?Xm|l#*Ysbag_qgl9 zai4F@B#|H)`3IWDU)&%vT>9_pBp+=QRVlH}l6plHYE?95qm?F#V@)nirV^h2Y8MQ# z$S|`AbvwPDQ5l((@lJ65(Z?0(bn|Mh zpgk$K#${DtNeb-j^Fh|z^vz(3el74f#^ULk(}?gvGJzH6@$uH;q1}yqQJ- zZG#a=@CjKwrax5nIQ9l&(=W{_snw{?*vrd?o6pB75AIHvuYT22E4|Zi z>kJ{hYlxmuF4nHC7}P5>>pb9hKW8^mHXp08P9(|B?$dp^+QfbU!rOG)KPdmDwL)YN z#G;o&%E4Q&}Xwc(2HYx#0LwAB7qC?OTKfR)MTbSRZ1bKOB8$ zKc``!2g)Fi6|*>~08z$na^u%{@dvxvfqU%NTJ0ko9}%G_V!)mWn^~mj+2TuiH*b-S z&ou{=+-@cZ@&FVaA=MeN0ixIDP*k@ym*P-!BdDHaz4VazDD+iq(e~n(U^9x%Ju7wJ z?Ongw%t;JIAijlIV7h) z@eHlzZf`ceU!8t81EBQ@`FzuE(X%m^Y?<`U@b7;A)2+>C3UT}mB4UK!H`Qlop#*PL z*_F7r(#!SUU$<(9$JDIdsTIpjPu+XRvxvDfySCc&l{ii_MN z`-N_a#D0%ZO;`4(BO5?_#^D=+q4ub! zA!}%LX>s=KN_@+Z;MJu1B37qJCJBk=!daD~*x@L4@umPrZg~x`jirSCh3chh{4Ym5 z$;gEDFH$^3xHt1(^lZG~tyd4iVH_<Rbz4w*zr@8eR;-Xl|;1{GERW5VDJU#~P7K8l~oyM0> zYw+EUzoroLRM~1*R5|Vgm>|^p4gR#)QK9TyO|kde)T$HjbVEajJ z5MpMCbiNxSAT8<<|GDUSLlx)If((RN-B0f}Dy`=Rtpb01uS}_Ls4+YsHrH-Ro(IEW zF5S41CMhJol2;fT>uekCuOZYL7*9+mm@|vSdjt}*-RFA0u0PpZjse5v1zj}@EZ=+q z$}B-IeY?&NJk`qCs&yLOC$s?CY9{YEQMF(uf^7Y=vW24O*8`7>UQK4>te?-gEWQ<( zVOqSz8}5)uT^tS_4Gu1_%s-E`^|+8t)oiSwolvFLS-O#Uu+)9mLgzBaOeLEo!dpOS zDF{5y++bH{(19|ssvxRi1`kh-K7F-&Kwr=BP-;LhY|y`@xEk%v^tQ?9pe&tw)7WKu zG`Gs}YHHDX&iOf^vwg~p5yAVP-@Ye{7tmeYbc`x1Yge0(<@5oguWCuT?TwZi&Ir|? zlt}E%PMF|x>3`eCZoO}C?TLu^^8Mu*>2RrDn9YJ;scz-D|3G4G)D!R2l#~<>=YCq# zsjKSuN4VOxHZ90=>+kgcPa8f7w57F2LhDcyXD3kG^iAnPApi}j9l^Ju_ymTu`MN{I z_M86)vb0TSS1G;?^MjX91FWg#9-MLFn1lWCsxQ+_EXi91tYUM&Se;nWLsG`S5?tGx zOLe5|B?q6R9wlY_X`If%tURf~nN$$=lUvSDr8!|;^Wq47IE?ql*?sbgnYh-%mIO zQokTtY)~zf102zPMoo>HT1~bx-{rl3J?S%>PwKiG^AMZ)X-n;D3v=sU5zUxFso1;I zn6dQ&UM?m;@V;Jkv|1u3FTJax)Ud}`>M|Fq@A{zT=6-&lBk27-V+czSe$Mf5wtDX8 z_fI8@)s|Det|vGi6_)CvAfU2AN?ito%71?n9uwMiC|jJ7xevgvBar=J_Wbv6(b?fG zBEsMblT?x?-Z_0(d?wuuo1PKAIl6Zw`&Opw5fo<&K%t;ijB}O^kZQd&OJo|6 zj;+ecI7A!k-DmImtewlkqtTJu06;>H>=8igGIb*x;Bo${Q^pDnDZ-tG_7kN5xffK{j_Wh&S{%Qm9 z<&%;}Lj+n)3XvY;Z;cWTi2IBL4r^IcNr7^67$pWYJVS^Aj|zkJa`rbu^UDPwD5ag( zb$D-7QQ!}`u4IvPF%oOAyik@tz{RJ+sCF2S*?YrwH>!>u9hBsJV#eMul4B0<>mcMz z7_ivfKzz2PpT;k4blpbip6?NM7zh7=hD$JJ=J0`uEMtg!1VcUBoDCb2LglLJ7E6crr(Z-MR*oDT}qLA=1J4^o0e^wL|?xb+$__FB~=oAG$YB?hfIR0<+4& z%7rnEta8Mh8$6PbEM~3a)gqln=Y8wvKkU5r@@Smu7YgT0O`Iz<26D5qbDV#DXcAuR<9Mjq`WUX=jj~#C*EdEWnUn4G^F_@MU}( z57?kANFmXqXh|44Aw|`ZGO#@JYcBqxI60ci0ZjP=8VDb501HpN1pK3NUS6ZjTud}w z&s@NX3m`Ee6b71_<*(55KZZ-NX>H`?GP}BVh>iXHu0e^LP<3@(;t-{lQrjzMSyb)) zax2m}&85^_T$3@|P3oj@T8^TbY^HIuP5He(A(KWtsv2=_Uvg+;(Q)Lv*$sM$m zRZofX>c28hA!s=I&ogy^9>W7ONy+ndu=l! z9Ps3Br+Goq-b31DTdP21pM4)sYYLHsGN`1}4Tl2hYN2vh(cKN&!Ca%uq3<_U6<}-T z$N?Gcf8`EhWR3ehh_skFIcPtEuFxGw6br`{J)x@BBtnBe@R3U~gmi=Y0;0$S~ z9Q0`on8zrM2!K{XStt|>#EEm0N(~W7x4q_^sgX3_ejC>R-4h@M#Wfi3jJLHp#ixvV z=|SoWAMn@~m3h5gg2Bvk4*_}40NOMXSFHf^H`3v>9YUvz?D1^#7Fnbm>SM*Jd$|R( z57=>7@FCdo{T((zzO2UUO2P~Bn3d|w)il1H0O_{n8*4oDOkC-uXpY3_7n}cBy|LB7DBn#&*729$s(Ra zTqE?_vSI8tbl4~bUfDf>Xi=aM@8%IceUimM$CsC-?T+;DQ4*7VLVxp(cUe<|-_I_+i8;X^RZ3V@#2JU~deAo=M1UsM_J6Os!zMKY~w zIv~?(bX6%rn6h^cmjH=F#omE`uce&Cw+szFKm=F|MjzW0l4L{-`fq}BDw4|M`546^ z_5UC$QDEP}l8jRQEc`X#mCrGe*u2kU4qGbrc43e$sR zY+TYimI-LWPgy~CD|TT8W4gjUW|e(@pKfw-CXQjy$n#sDNipxzCA+5 ztvv=%z2Cfi9jQGW zxmktcnC!4pi{~I6eG%Lc7Q;=}wS4!C+RLBf=#_CKBmGJMvIm^65jk);6=yUnaR0go z2^#p{nhE18yu)=shGMwhv{hs8dv7sgGQ%SNzBoaoTxQeF#rJ&fsa}3Wv&{f>?4CiXqiO^iCpv`eQdM@?&mEnM|e9*IYJaAf7n^_)1KWFW^Rh3vO zQ?eDonqWi=p=~yF`mp(WWflK7yL^MfG>n}%I>x=tl+&by$bjQ~wVj!DBgPA-NYgr; zHn-cI*7VkJ@CpGKcEUOk&TH`0*X)tFkWlp~JNm==C3}Z#=E`lc_jBgk&%Yr#5l>N7 zmU4H8k&QT%ooHnL*kGS??>9m!LfX^j}K2T;Mkl)iIsTdrgqZvQv5DT;+BR}wC zq;$zH5FU`uMd<3<$Gx2T#Y5if9#u%TYdPt%o#9thzzCTM%ZL0MtodeJV&Xng1 zE@~DKY6$>+IHuUs|J{W=GO`FROR3`G={ty>GvTVE1JEU$7FeZw8=!$X!s-RyK*##M zkR;6EN}*8|rHPGS_Y&<6%B(M4W*y~A3*MJQ>3r!ccGTtlmhF8#>@k3`4U-NA#mQGQ zCI)+ERD`7H3X(!$+`VdhcIdetgO`~l9(|E?vedGbev6r-%6QGrnuG*XjL|sJs$))v zhnZSe-i2=oQFUd*^Y6Pn=3vv_k79611PosvA)-fqPblxRlK+uN(BSxkWNOUkuEQxF zgrR^-$$>kH`GwBkNaN*(n)17^;)t{r?s4iqtFqjswHN=5Yv5-vRm1TBYg-7Dl4y?K zElM={c;vgfw`8dvh<^u(tguaJ>NCl-Ab}LKkhfUGHG#hTs|ktS0Oj0St(|qx@x8#R zrK2ptOa20#2B@v>OpIS#NY}iFp(f?sb|FGnjna$UZX^2hMe!s-ktDrkhB6NEf)@zWpVCr zNuXlp+C*_bLVX(Te7n0$P zG13aaY0?DDnV%PV7bWJ>nTFEB?Qhg(=NRsi&5FL<}X6Yh?bhxc-u zuOqzlY=-XT9ny(zNhUHs`3f|$M9yZh&NlUlt2Z^r(!K0);u21_CfrF;YBg-P5Zmjp zZ`>Z-_RI{SoJ| zNeB(C8Rq>6Gj1r1rI03s9jPZ>#YiqYN&;KF^)lwgqiLk4c!{X5V3u(=)nXi}ml> zyU1uXh~m`jm43>`f%VsEH?h5V;9%i?8;CFBY0@TkGmudEu_SYVj%xbV$0~2bOXect zKMY(qE%gXo_tJzfzkiX7x->1aOYaflMZj>Zg83L0$7zFw`SfwbB!BAR{$-uJ^JpOfz##p6G9 z5sVi;LzF79%>fSNIT#RA*O1sbj9qk;deEUW{vPS~6$Qo=JQ@Rz*WaQw)roR%t_Duf z=~pdn-v&`5EZ4`mOGuDqbiCg+9unmz)Gd?7oM9;9xJGY;hFk@{<_s*y%R>!e(;AQC z9q=WmO8OGpV4XLH?x%&H*eqwlsYI|DA;#DTRukZ6XHHP+ZdKxtj93Z`8F3{Zu->D2 z-d`{N^A|QqFs#3N6)$i`8|~A!Zvy~E#pi_k4*KKS%8<9>Jyf*Y%Vk{7B8Prq_wLpp#AD6y+N?K*r%NJ-qZdfx}V?>1pq7 zj{^O(DtQ5b7jS_rc02NZkU?624n{)+AD)tF_42S7dK(R8`uct<59d~YKs>4Z1YTpw zv|C53mPfkJJ*r!Z$};@IuJe-g@8CVoqE`YOAP`v7(a;CNm)$?`DEo83UouC?{^Qc%7R4_=`w=720spdZ#|zJ zqx`FGgt0s>1-KatDd!uP7Owb$r(>lh)PqA7&%a1~ml&!Oc2Z=s{&M_eiJAjWI{bnt z;OGHnLmodp(sm;Of^`xZ$8Qk4l8mtTvdkZ|84OZk2p`?mPP`yvacj_h5bKG9_?^A2 z8ncz3a98m(EEc8eJGIW0s<=h4OW0v}japg|fDqV=;MQU!|Wv@<=d&afPYbql z9t~1X3ogwz;lhr}F=FLRJ*7h%@4=cz0JrsVOj&yf|1X4AC?Wgxb)zd;a=O`Gd0>lb zp(a$U_+VoaD0*y6uEKs>2XGbW?tB$5DRaFl3(9R3V*o*x2*+TF$e@2G~e@PM|C>CPE%uLz2;r zrF~!a^52qY8Y|ogSUC^3E=M<1V|Ro?GZ#}(MXKUNz#s|eQ#!N?6F&mpcJfDa0*g|u zFLq=<|5Sd+i4SFqauE2gs_#nvH5wKMhGg7f%4%l_2s7Oy1H&yyHiC2hCPgbth9BZ+ zfcb*rnnCjyteyA0+|57fUN05DMmY$n={;V3erjq6dGths2FdfK^fkoDl%c<6$L!R)9yn-f;qy`qP&WKiijaBo9r%N)2-i(9b)h= z7XZ%$;xahD{otB%I3vH&wCTCD#O>fPc(vs4^2NI(9WCV?@2SXEiC{2CMicqAG@ID; z7k?j#)C*k6^oja#OkfJvzA0JfhYw(};vNa0KAu-wH~4m4O9c7}->_>uYG+Es=y++j zUu_c?>S%AMZ1Fwxc=0Bp+?&dMkeD|j%Ip29|A>)ZV?5L&?QO|2z?`PlI=;#Y z<5w%#?dBE5{lBtJUW5j&g!*)kxPUqAo>BdP6EO;W{l4x$$|(}FuLMknVL_(<6sw$# zzsIQ*bLqYxB>Bb&#g;JB`O#Ei*zj6R0)Y&5H*Rgf^GcpyDWrp7G@tBv)>8p7lm|GW zB#Csx7A|efg*AtZXkBXqJFghLO|QUkDNun3y>4>(jL^61R%67rPn9ubjnl?Vo(R`O ziQsF-mw6h-B}+@Yf6-qzJ1M`|zlLA~lMz4XsGO)zfw|2xJQabQimYv=3Uv);#U~#a zS72u5w}kedjDrn6acm|01Eo4e|9zPr<#}UjF-Hcuvbi=S!SnPx z9!L;ZdwNFI1WSg6U?c*cvRR(0a$BuZN16>~7ExPhV^&V{GVS-0NqQFatSyXMXnR86 zNZ}Y$Preg*n%3};@?6?{d+s_V&T&wo_QvSC{!4K5IVJ^@r+6@(b@o$KH)bRn#Mv+8 z;2o*A$5fOC2(vB7LPo+vz>fd+`w@R%hN1 zZ}z5khB)nj0+HJAcvl8Y2d~D33?hFovfy!%e3!=;h8)_-(gD+HAK$8fKThnb@w*d8 zdnPF^)VJyJ8a(!`^&x7}BW*6MeSxZe=bCbG^T9=_>BrP{UDFSgO+l_qZOZs)75On+ z;N@BvAtFY=KhPYgh3wkDtt>m4Z>+w`@xnKD0xi9MvPNz{i@zvMem-il#HEw>6z)KR1y0PO@|LSWJLRj61M* zO|-4$TAsdN$4MH*3nHX^3VbGh__bar+do;{7O++wJe_LEaNW3iYxnV&VU$nI(3L)v z>WP2P4qqy$c?hkjq*9QNQcw)^d52&t{)Fk4yRa<5fz>$@-cNew(KN!;k!^6SY*2Z5O-8>-)nVEVg=(zXQp zByVytm)D(s6Hzd`-0w2=<3g0fX(>}3J6J7g*-JUA$5nb% zInOrjV}l&_)5suST3f#%{EoNqa3ifcTEw72lkZAL)%w$}%6i;)UXkXTod_4rCv%ME z*0Q3+w;m+o^a-&NiO|tl>J})rAqG3M_g$}*(*am)*E-wp2<(Z*L6+tR90Cpdkkw&a zaBWhp3Z0t`1E|@m63<2f)1fGOM9B!EnLPA5V+qrC*O;Du9^0}WkN`-i!J`8Ouk~=w zzaIE=fY1%a$H7dF$bc`g1NBfF$?(I=iXpmRz2knaLB}Ta zKXqsMVf6m4IdH+rpl+rr4OgByieLF#D<<=n2$(Y z?-1!_kkI26x;o*gk=FBhZ!OBuRy(+#nnh`oelX14WH4xTv30YO!5*Z?%bdc?TpEue z(8bzzFN1?)N38M?dvel$-kvipfuPG5WBh!;_(08b;7(L~qMcaUxC$fwDPMW9OW|B| zGM@XKT0tvYj6IZr?CTzIR+R2&Lic|UD~$ziMDnv5s*M&*rl{*fL~s~}BHhtKs<(Nq zT=Jea-|8LOvY~hr@}ef+7#?%MA4d;+1)t&FSfy3<-1&P&*{Cbw=BZB$o`GyWc!rG%3kp&3KM< z3501@x@prIj8KENilP3<;IXh*gY;I$o#scA3K=INhkOHSv0q^7=$Wj5gG?1q=_Dj< zM}-d%{s&MDR8buN^^Cp%U5+PUcxNk3L6j=S`-Nn)t$8l(94XoC&DrxI8+zMzFlL7Y z=h%kf*7J@{ANEt@EYCL5M^mBT`E9z4T7kF35Y;*olVCv&l}0ahr|)TSEun;?bOPS{ zwgpw&+@`J+*{2QqBbBx1R`X8Vi@{brUq>R(s~>DR;w?FcXQa`r6_))&GgJlOI{fu- zlEA$*9KP+8hi;<4CSkRLoxvQ-r|X6Cv<8vKM=)uNx%yuL)*bWvB}&c-b5bujpUiF0 zpuvAfA3k=a0S1grZ}~Cri9kJP6XJSQO9atnUXC!)^9Y`X&RIEGgCpVx42aP8lYWu{ zH3kX5^oPm+%e~kr(R zW~3?5!!mHHV;26M0I`88&3Fmh)x_OO$&b+^n$<0Z^}4xv{FfD9bt2A*h(q=&Zu?AZ zdyfGZ?Jn5d^8nMciedeS*Z$#?clBQ8m)VC?;Bz4H?6O_Gcgt{yq7+| zPfl5oawKbh7Oi(i#WHAqZ5gXUss|M= z9OF$%_xyLmNS>d&wDw{NI<6*j41RBp#!0SLoPW?U~~l_oaU!5V->LsXKvLCkHGmr!PTg zM!{an$`)pVsZ8Ud6F;Q7J|$K9&$SutF=^-Dm);AXZ(1gAL$BwqymJ**9kyfSrC&ih zu9#`Z1=b~7hj+LVF>m4=?#12XkC^R3pDcI5!4+SZL|D*(BTu4t#`>e>)@_BjP50p4 z^Y8DtzD-H*^*rS-*x}vt3VA(7E!5G z*i2S>-L+nxR4FkkIIa8T?FG-#{t%HU5?C3L=f&IKo*y2ha8fI6G;;iFN&N+oK2nAP zFL(y@Up=sZS*hJdZCK{%F;YiAi(+dB&C7TtgOZ`arIaO&^CsIDBI*Nk(WRVn_5Lj+ zuE;tU6K!l>chpks2}?auLORSA`FWaL7gd$LWOp@{Jv&KlFeb9a$-XI11G-&t7IXz! zp;OnbKHr3;z*-$s!n??l+bE8fPcWQm2ETxUNSOV1g-!nrl-%PS-)M((Y4`a16PjFv z$7ursNB}~t{SP4yM+xOc0t18dH1keg>K1pmU*Esu*>yq&*@9=Ts8`%yreZikqk&VV zMgCdGC)>zQ_d6U+AdcVeV*mz!UB^fHYDn(gI^&U}3q$-7uj!FNT(>WP z1j`Vdz}m5_5NgG@!dli;Vk#{*W|JK@+xvXepG8*X1-w5pjIZ==8DK~#?XYVnKTu^P za>dG(#hz&spvhwI+zwkg)sTL&sl?+O3jQEL$nsH03FOlqr7{p=^taGXc8e&S40Q}u z7!Xc&5%YyowHb!;1EuY_ zpXM_(9<;rKIx>N*SKFB?wNFnFSblks!oIND{=@G!!vLAGNps(vzx~Bsv$JinE5^N# z40T8{t!XF`_|P>)-#%SkqjX0CVVhxbHE-`vSS5$$M$lSx#6_g=pu0%!nBvrI*J zf9KE=K#8Ei%R7F;-R&A+s@o4@LJyN%h60<>upHAtR|`F5tqTV5wS<&yea&^ril6@b zymv?2(}Y`}B5l$!y>44e7vo(GZFG za}^U+GE%xsq}NGB-!$#9u9!LU>A~N%#^`luvvO*dZD%$*P&0f)M27t8?a$zQq=2|z zQNwrq^iM|Q`x=B~jFB!XaqkR?r%Q@u5qo%*q2fBUsprrYte1C$dkBt9AX0q#yPQW> z@wmX}{@qz$>((>;m#z-&rt~Q6IPcCMdd=2io{0ZrFHOs4dTV_;Q63v9XJc(1tz=sh zi?4^1p6B7>D==IEiSyY>W7WoP)M>^)PeG+beA5?_S<?3V1?7> znr`}$KnR!`&pwnV5hU{kJ9LcOP!Dv}I?K@6IBty5tdueIVjU4BxxI!ZBg~S)4>cne zjt@8lMDRc1wCJz?BnXe_4jl`Cc2EVm1{#m3Zk0i0neCF+*J8CGMdH<4rHkuG`DJK9 z=-f6?V4yP@|06>F`u6uSW4p83Yx9@N#~$nkmB-^^L~%WC81C#liq6GmW3-_|cLf!9 z-a!^qBhe?Rx4Vpe_w-HO`7s?OMFOWks}E~xB=c33l>72_j#qNlcG%0qi(^)s^r1Oz z;_INsPLq+L&=&+SFg{YArr03RKd&n7h0;&{RT`!am`4 zdOXS2g7VWF2K;M6dqm$4l)x%=wO`sjn%yJ!A{YZb8Ty$#8BX46cVWl5RT@f7+C*>Q zs!gc#)9ssnSThFLf7qiZ(f%x|y5^7K5}n|YVd zo$EHeE^K*Bw}W~g=GHST(qfSOI+BoUTOXE2)E^SK?iSQc>R1&PE_L1EwL;V3&)Nn@ z5{m~f0=8~tVkTK9amTB3LkTh^znugt;ft(6sS0KrD8V{f4ICM{o0iZ(4B64q(&1(PL&e}s_n(6#L$X9G6&_(PnQ ztBu4i`@z!DZAUc0i+P8}s#nA*T0o}gPjB($@0HD>B!dJD6U5YyI=!&F{|MOz4<3|7 zZ$A`QqmBQogUdkth^=<}+Z7iC%)^`aQMjZiAwADuVHtnyWZmAmR}aF+9$KI}3f6PC`l?7k3Mi(km@ zR#|4C6jKx1D`}K1_Ix&%dC2l#=ZGG)IaEuEVhl2WZRpw(&vZ~rOh!!7x?}CCts8-A8 zYNkq-%HFMtd9OS1Bp-ZU4NI)bo;_~^6eCefi9=yZOW)ogQ0HXlY}mf9MaM7EC52p@mE7g^2Urd5PGMfA z3g0vTEv-U*fLtK;RZscoMA$p`|@+a%NcG*3}|%dz3PW=tX=E2aj=!zgmc*j?%9x#D zja2;nj6*gqgLgLDz_<)8Kx-VH`RqB3K-ae8z=>)uSXdU%Wi(K5%Gz^PiBIW^R9+8Qru*q?|6NE7{p$|8}9p*a8!Mc(wl2i4CeOqZ9~ zH$%9;|2t^IAk-(XY$X}i{V|&WPpbo0PET}Q8?qK$r5boJGATw`^6a@Y`@I4c8{p_p z#u+}Y<~0q^qE0TqO3OLCJ|^0VXSBDqTE?6UteJlYGq-eb??YWaStp-vz4CJp@E@3UbU+X`tW?)!;ejoay&;3 zIXN5G^(U>anfdwoJ&i3ahGNMYZ#6Fa{QMSnaT%}AKXqwaYiPI{ zTDs|ZV&P!8Y6Ep|LEHF-hL%!iyX487 zw|}W!K3ecv0bIT~3=^HJI&y`V?K8D};uuMwVh{c0TySbh;fI;MgzDtp(+P zzR3joM;bg8-DV~)(H-|G_V&DaHH$dVXF{wH2YBMfcoXM_*dDpy9I9(YSE))@Xiid6 z5=kVLT%FzK;I$KK>)rWDMEWObtZ?&1PE1|GSH`IFZsMp zJ?|23b({UTleJsVsv{*qnR1D2M-fFu466~weR_8FH6%_dy3Wo+MapslS8kflwf%{$ z`sXcoH(?)qFWOhbQjOSlsP9h4Hqa)EG%FFo%1IBG=mLN1Y3*QN-~kPS02zNAvaPoU zw;0;_N68v%ALIVk9lnW>VZF;{?GQqZ$!M<*ln;4O@Qg1iF%Q1XgckLijA&0>LhH7trGRND5(_W!%Q3?MF>nfCFcw#6IjP;zS6_V z!Op&axwGqP`;vrBzf9c7!p!W~O@`m-t&?hpB=IU33hU#|E!XTCT$S z)<596KqzO>u(yBnNck|fG&~gC^G}GpV-33u503C0UPmJ3_;wo=yr1vDyJ2NHmj`lU zm!t0IEPwD11+K5c7i=^}n9MWDD2JY?Wvy;lXD>yVora8ML?Ndrhc;k(zBu3c#n)Ln zOG;=bS_x)kmR}&=Vj_*ZU`vND1;Rq8rGRh&vf~N;pslB^xy;1QB32Nhx|!WaweU5} zcx4nM{vb*xcR7+G1Ob$xSp0zK!hHqVP@bLOdF~#dyjJ$~Y{U7Kz7)_aN97HU+>C2V z+S|Ji!u7sLtvU@3F7FCy>5T1OdJ&z38bWd}eK(b9vJ?uf_&QHkPK@HjdWZM|W18kFrK{*4lS`yeA_WukSyfkWqLNGPZL@@&D z`_oT(1!t>!I2qkG7hZ|7?Z1QHp+r*|@;dX6tFQXjb2XWg)%&X!&s8yY&eW{=wY|fAq#+kTtA^Ve9_=(9U;Y!H8~&#MStt8?O-fd$VQ0yB zhh~k9@P75C`a?r|vNgnn>8|SrKT*KE^(O~Nu(WRKK8Ls7-Eq)baQj?0lki9wyb+Z2 zr?`k@#$GeSZnQ*+QaT@^X=~Xd3xu8atnAW-&6fB0hiYGAPd2WG3XVb`-ygF}7Z(u` z_Xkfp>dn0SImiA9$`JArK6;0Ny&=eCOUZ1l5JZ*;YwcLukfS|skSKup$;*6_iz(9BI3pY4Bd1T@7b+{>cs$qNm% zAjxbvZ7lVK26=d1BpG>JpvL4PDO@^&6h1qDm9 zv$Ku2E7o@}4i={RDLO+5`7MOxHL zINip}?`}@FlUoheF9?$`h-mWteB21a$+4R;vu1;p zr%2lYLJPs}Wx3(gv;M(@qlJ}2HQVVjV9Zr@!$_t$Zr#E`x|zV?#SVG-Y)ojuZ{}sX)ce#{)_1FCG*Y@M!QH5MTShXpyvVnbhkvu1~Br zwtHB~NdNRKxlI3iMwo-!`bMaL^V+stuEX6ic418Pb7Ba9-h5XR6B1p3`9rq3T^y>h z5#f=M#kLj}7SoO1-kuX1jJvxo6Ndt>KQ397lt&@BOj@VgfC4#;OKn=8?UayzXS(O5 zzu{SdYN7fIQWmRepOqC%FO6ESgN*@I@npP6;QelaqqU=bZ7N)*+w)aMZ4SM#)#H!0 zE*gKGS)7lWcrTP|FUu+SoD1>E*KRx49F(c};G+kOOk3-a>&X11o&c0a0LU_XY;>6& zKQ?qSHbR?zU$Agw;DUX(a}__wST#Jyq?FW>36`yl-l4~+M-!#z1Y+rZC=oA^3tIy4 z0!w^dv@mhhgdFi3^j3tn<)%P(;@4`E@I_$ zDG`Oz_{VPon!L{h3hMWVLNzDWw|tLe|LIzPGUb)BdK?(opYt8zSxSY$M8S~rK~X6) zK2MzyFkh!tCA3)CB8koJM~M5yfy1rsL6b|=>WYj&)0X9BL2Ef=3^USEqaybznbM52?#j6D)mR6SzB9+7uBCK)6tQzTdZL_ zIXM+>4(a`}(OC#Zfywy(Kf1m;D(Wt37Z3$eWayG`C}{!dhM~Kqm2RY!5Kxh!TNqO5 z?oO3Pq)Sq|1f&s(dj|CVzPr}FE|-4^zY}{uJD+{@(B`gP3|NYv_8krzJnJ+*4-S-V z0}Rv07&m@oTuAQ@EY=-D1d;aTgdWme z7A8v$;}nTtk8^Tw;_Kn((y5Q7dD>i|d)G3z5WoF3sO9nX&q*|W->7{LKM&+^cT>u{ z7^VIqsRn^#BKzo$+%~1M#(iOLl9|_waU2ADX~1NN66y7`=(pcD$|1X0$_KU$?Z3of zWVp&-EcI$T|5HDP=rj#3M7TPMwl5GjB(wQ`-<+g=+}d3 zB{&z`W@O+Tc5eiS^g9a}?h~==3e1_#vC`0-F9qSVZM{c)x9l!oE~z!pugS^Gl+8)y z++9c&_PTrFG@N}rUTj!1rXfN@L$f%dL2r~A6_r{NJGbHb9Te@yXCGeAMuyO#MH#FO zI4|6%Gf?v&XM1y@<(>Yfo#Tw#jj*1%XXaRMs#+m?QMwDJggd1g zN9BF_jmvTL^>4hvK6wM(ButDYM6t)=b$nlfa!BAsFs1h*6X*8yNI1KNRJN|ZGOt#B zK53bzzJ{nNG)*1X_M8uIx3b?n2$SKttI`w==en!FOj}H6TGDvIcvq9xvBRwIk55Oh z&(1gmH#fA8*dCIwes!K&XrDW`)ZYph@Z~Q#6^?gb-Az* z1YVB!Nl_l3?px6K=UEHTNsXKSIimRb^Ij)Tle3E#IpCkITU) z_;0g8C?;eGWJ3k-U?5AO0t-LQmCv|9r$zyZjNdOL!XXoi3LuiQ|Kcw&xf=lGL{QG~ zyk4KS`~RCY4dwDwKh8DbpT(kVdyn7zH3yYSP}PLBc_PY8r&K-X+<O zV}VY=_&cST0ak}gjl&G*-u~WRVp3uv`O!~nD+dRM%^r~gAXGP-_U|11{9e=W@#C|S zsV#S}9!WE-cS1dXcN>S?Z9a^Cx|=}VD?~Z`jGtTN85Lt)79FfoL*9{8%}2*cQWo_K z$zKO8T~X|7nG&CRkh}LsxFQx##i(w75YHs*JE#A)%gR|Nq8%;>T>S3ouXr>bSAmhl z*KsZ{OBG?ImJQa8vBp5kBsbKoN^Xrm)i=|NcdGF}QCWp=74*0#jWlY`{J>E$3vDiB zg{eK9{c z$Mq*>F=r@{VOG(y&@+Y2=+}4xJ|eTZ2BAAkcus0bJQlk?rx5yH255p1sxMUI7q`?b z$hj>cT4}D-&kvM@i3O-RZ}Uh%ETH&IzN4TH_@O+_WlC@*?HRcVeeC=6@E<72cyTW)zq3()Lhajmvjy193i}`6}r9ok&8=TpE-pISPi@znm2RNK7jL z4;GQzwkU;XC8Vo6^9z=4(`wi4^3<;|ua-AG~z6z7J3j@=^ zIf{GI-Fi9Ni$Vc&YEX@UeHs&2Wl)}|E32fYkGLs6<}Nb}{A~5m+mDHn3(k0USJ>^d zi)Nz_h3;&#IC)f%RXrIr)asq7wp(3EdB@ybsXV8!Gs||rh9sUjUW%B*s~vq3wc{7P zF&wk%HKv`z6rD~TrdV*&E5W7KMeYGLit(&TI;1^NvNNmFjygTnIZ0>)S?Rjyn*aCc zEL8GJz@gzlz=IXB@LjToJNQSZSl_A5KaDMPv*GC5FWsE(J1r~ItPwxO zsCPkMq5K(-^t-Df(=j?4c48d*@6SG$Hf)^Oe5!X$J1}mP1Gv- z_%4pt-^7{N$n6&$JWMxkTZ^k^MbHFW^B>_ITvnOzw$DSFafZ#@n!DiH_2#KN$rgq9 zK{t40@CQtiS3?R`bA|fW<-HK|ZlxIhFj`1)oz(}+quE{q&tHiiau#?qmq#NECC0*+ zMrzG^LN^q(SC>QA+?svOQ_fXZmqI$w1VQXN@cS9T zd9?K92?bhdR(DQ9?fT+{1chI<^0X}d`1bp z%8!XAz$v!f0}1A`VWPh==qDUh?l%_3Pz~Dt&qsvyiMPd}Jf08nBm8|Y8JiBpYDSZD zTl802Q-(uD>7g`B=zpsQv*?u&?aFi}fuo@T-!4H!FxAX#XOZocG^`)Ah|Jj#>X(n> z_we;oHAr^S){Jp1q>VheOH3NApXJzRF#3~@e@q!tDY0bFLnUeX&T5QoKRUSB_0@MH!2#blz_SuVc0}i&(AVkJR3r;_-Bw|}ap9Zrig?np0vndo z@$^($G!#$)hNS4+!jjqYuH&hR%r^f0t{0&hGqxqxoh^8a8zX<}&mYxP)W3CeT>S+j z(Rq~aWZ=?Gp+&LIv9URU!4KK@kOeG46AiPe2b7KCX2F5l5}`=Vhy<@Y-%A9oDh@In z2KpnfmQq}_tLDlA=Q%o`rnJ3!3e(D)xfcpvplf6E2Lt4ip6(8*Uz10mGGffnq(b0Q zokn^m+8YDG0RS~0o4V>>b#2dPYk7AYs64#Wdr^x(7Qb`4`Iy)dUPR6~0b-B(e_Hmx zbe=z!!e@BicVWgp%*=j#^AOkP7D4Q|g}Ftg19dtY;%n>g`k?-rejMXGqGm7l+)rvx z;Gb4-GtagTFcnh;e%=_1*3Fe5p<@A3c6+K)_AU~S@B+miy|I7_c=K1Up-dztuaR4( zy9W(Bi(2BTnk^(Fm<&Tm2IcS;7xNXuLhz$*%%Ur_X-g?1kKzM1YSCLl*7V)bCe1Oo z7eBMgy+4`gl|9m`fAx*eH^QmDEW7tZV^Ek19KDjv*z3zDwU-ZgFnh&+L_R8+p5kp9 z#@&-~+Vvh!K%B2pIh>sdKsUa+)_(>$@)^9lut7_|?;9r!xD5!nJm?2sOkl>46c#WS zTq!m_Iq0+Ebmx-FF*F%vhGjpoCvCefnLSScn_0;XQCv3Qw6vp8Y3pAp>YGALFJzA_ z7=OhV)T#)wEX~Ozt$UMRSaC-BP?qu3mYG2y3O=2@W^S?__%q8w=QU4!f92hAf+Fqa z=gsQELk&P)&e(BNx=B+U*}1(Fat%P=m(5owJ2Le%0D6eO1oPlh=qk`I4iABnOd)Oh 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 literal 0 HcmV?d00001 diff --git a/docs/assets/examples-2.png b/docs/assets/examples-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c67790f370839f66e7cc9f2249b1f69a333ad39f GIT binary patch literal 55488 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

W{w>-H7Bz?+?1*;+Dm+c&WPprG)9chCDK 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 literal 0 HcmV?d00001 diff --git a/docs/examples.png b/docs/assets/examples.png similarity index 100% rename from docs/examples.png rename to docs/assets/examples.png diff --git a/docs/examples.webp b/docs/assets/examples.webp similarity index 100% rename from docs/examples.webp rename to docs/assets/examples.webp diff --git a/docs/favicon.ico b/docs/assets/favicon.ico similarity index 100% rename from docs/favicon.ico rename to docs/assets/favicon.ico diff --git a/docs/assets/favicon.svg b/docs/assets/favicon.svg new file mode 100644 index 000000000..26f980601 --- /dev/null +++ b/docs/assets/favicon.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/contributing.md b/docs/contributing.md index 4524cb9fe..3cba7cc98 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -4,8 +4,6 @@ description: >- This NuGet package is an open-source project. Learn how to contribute issues, fixes, new indicators, new features, or to our discussions. permalink: /contributing/ -relative_path: pages/contributing.md -layout: page --- # Contributing guidelines diff --git a/docs/docfx.json b/docs/docfx.json new file mode 100644 index 000000000..24143cd2d --- /dev/null +++ b/docs/docfx.json @@ -0,0 +1,69 @@ +{ + "metadata": [ + { + "src": [ + { + "files": [ + "**/*.csproj" + ], + "exclude": [ + "**/bin/**", + "**/obj/**" + ], + "src": "../src" + } + ], + "dest": "api", + "properties": { + "TargetFramework": "net8.0" + } + } + ], + "build": { + "globalMetadata": { + "_appName": " Stock Indicators for .NET", + "_appTitle": "Stock Indicators for .NET", + "_appLogoPath": "assets/favicon.svg", + "_appFaviconPath": "assets/favicon.ico", + "_disableToc": false, + "_enableSearch": true + }, + "template": [ + "default", + "templates/material", + "modern" + ], + "output": "_site", + "content": [ + { + "files": [ + "**/*.md", + "**/*.yml" + ], + "exclude": [ + "README.md", + "_indicators/", + "_data/", + "_includes/", + ".offline/", + "node_modules/", + "_site/" + ] + } + ], + "resource": [ + { + "files": [ + "assets/**", + "**/*.png", + "**/*.webp", + "**/*.svg", + "**/*.zip" + ] + } + ], + "sitemap": { + "baseUrl": "https://dotnet.stockindicators.dev" + } + } +} diff --git a/docs/examples/CustomIndicators/README.md b/docs/examples/CustomIndicators/README.md index ca5bccc03..8e63848f0 100644 --- a/docs/examples/CustomIndicators/README.md +++ b/docs/examples/CustomIndicators/README.md @@ -1,20 +1,18 @@ --- title: Custom indicators description: The Stock Indicators for .NET library includes extra features to make it easy for you to extend and to add your own custom indicators. Here's an example. -permalink: /custom-indicators/ -relative_path: examples/CustomIndicators/README.md -layout: page +permalink: /CustomIndicators/ --- # Custom indicators At some point in your journey, you may want to create your own custom indicators. The following is an example of how you'd create your own. -This example is also included in our [example usage code]({{site.baseurl}}/examples/#content). +This example is also included in our [example usage code](../README.md). ## STEP 1: Create the Results class -Create your results class by extending the library `ResultBase` class. This will allow you to inherit many of the [utility functions]({{site.baseurl}}/utilities/#utilities-for-indicator-results), such as `RemoveWarmupPeriods()`. +Create your results class by extending the library `ResultBase` class. This will allow you to inherit many of the [utility functions](../../pages/utilities.md#utilities-for-indicator-results), such as `RemoveWarmupPeriods()`. ```csharp using Skender.Stock.Indicators; diff --git a/docs/examples/README.md b/docs/examples/README.md index 6fabc94ad..c8b86b1c1 100644 --- a/docs/examples/README.md +++ b/docs/examples/README.md @@ -3,7 +3,6 @@ title: Example usage code description: The Stock Indicators for .NET library is a simple yet flexible tool to help you build your financial market systems. Here's a few complete working examples that you can download and try yourself. permalink: /examples/ relative_path: examples/README.md -layout: page --- # {{ page.title }} @@ -12,12 +11,12 @@ To help you get started, here are a few minimalist [.NET 8.0](https://dotnet.mic - `ConsoleApp` is a minimalist example of how to use the library (start here) - `Backtest` is a slightly more complicated example of how to analyze results -- `CustomIndicatorsLibrary` shows how you can [create your own custom indicators]({{site.baseurl}}/custom-indicators/#content) +- `CustomIndicatorsLibrary` shows how you can [create your own custom indicators](/CustomIndicators) - `CustomIndicatorsUsage` shows how you'd use a custom indicator just like any other in the main library - `ObserveStream` [preview] shows how you'd use live quotes from WebSocket, using the Alpaca SDK for .NET - `UseQuoteApi` shows how you'd get quotes from an API quote source, using the Alpaca SDK for .NET -For more information on how to use this library overall, see the [Guide and Pro Tips]({{site.baseurl}}/guide/#content). +For more information on how to use this library overall, see the [Guide and Pro Tips](../pages/guide.md). ## Getting started with our sample projects @@ -189,4 +188,4 @@ for (int i = 1; i < quotesList.Count; i++) ## More info - Tutorial: [Create a simple C# console app](https://docs.microsoft.com/en-us/visualstudio/get-started/csharp/tutorial-console) -- These files can also be found in the [/docs/examples]({{site.github.repository_url}}/tree/main/docs/examples) GitHub repo folder +- These files can also be found in the [/docs/examples](https://github.com/DaveSkender/Stock.Indicators/tree/main/docs/examples) GitHub repo folder diff --git a/docs/favicon.svg b/docs/favicon.svg deleted file mode 100644 index ce16add44..000000000 --- a/docs/favicon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/pages/home.md b/docs/index.md similarity index 66% rename from docs/pages/home.md rename to docs/index.md index a9dba6239..c93b27341 100644 --- a/docs/pages/home.md +++ b/docs/index.md @@ -1,40 +1,41 @@ --- -title: Stock Indicators for .NET description: >- Transform financial market prices into technical analysis insights with this best in class C# NuGet library. Go further with chaining and custom indicators. permalink: / -layout: base +# _layout: landing lazy-images: true --- -

+ -

{{ page.title }}

+# Overview **Stock Indicators for .NET** is a C# [library package](https://www.nuget.org/packages/Skender.Stock.Indicators) that produces financial market technical indicators. Send in historical price quotes and get back desired indicators such as moving averages, Relative Strength Index, Stochastic Oscillator, Parabolic SAR, etc. Nothing more. -Build your technical analysis, trading algorithms, machine learning, charting, or other intelligent market software with this library and your own [OHLCV]({{site.baseurl}}/guide/#historical-quotes) price quotes sources for equities, commodities, forex, cryptocurrencies, and others. [Stock Indicators for Python](https://python.stockindicators.dev/) is also available. +Build your technical analysis, trading algorithms, machine learning, charting, or other intelligent market software with this library and your own [OHLCV](pages/guide.md#historical-quotes) price quotes sources for equities, commodities, forex, cryptocurrencies, and others. [Stock Indicators for Python](https://python.stockindicators.dev/) is also available. Explore more information: -- [Indicators and overlays]({{site.baseurl}}/indicators/#content) -- [Guide and Pro tips]({{site.baseurl}}/guide/#content) -- [Utilities and helper functions]({{site.baseurl}}/utilities/#content) +- [Indicators and overlays](pages/indicators.md) +- [Guide and Pro tips](pages/guide.md) +- [Utilities and helper functions](pages/utilities.md) - [Demo site](https://charts.stockindicators.dev/) (a stock chart) -- [Example usage code]({{site.baseurl}}/examples/#content) -- [Release notes]({{site.github.repository_url}}/releases) -- [Discussions]({{site.github.repository_url}}/discussions) -- [Contributing guidelines]({{site.baseurl}}/contributing/#content) +- [Example usage code](examples/README.md) +- [Release notes](https://github.com/DaveSkender/Stock.Indicators/releases) +- [Discussions](https://github.com/DaveSkender/Stock.Indicators/discussions) +- [Contributing guidelines](contributing.md) -## Reputable and extensible indicators +## Reputable indicators -You'll get all of the industry standard indicators out-of-the-box. Additionally, you can create compatible [custom indicators]({{site.baseurl}}/custom-indicators/#content). +You'll get all of the industry standard indicators out-of-the-box. Additionally, you can create compatible [custom indicators](examples/CustomIndicators/README.md). -![sample indicators shown in chart](examples.webp) +![sample indicators in chart](assets/examples-1.png) +![sample indicators in chart](assets/examples-2.png) +![sample indicators in chart](assets/examples-3.png) ## Easy to use in your application @@ -43,11 +44,11 @@ You'll get all of the industry standard indicators out-of-the-box. Additionally IEnumerable results = quotes.GetSma(20); ``` -See more [usage examples]({{site.baseurl}}/guide/#example-usage). +See more [usage examples](pages/guide.md#example-usage). ## Use chaining for unique insights -Optional chaining enables advanced uses cases; such as, indicator of indicators, [slope]({{site.baseurl}}/indicators/Slope/#content) (direction) of any result, or [moving average]({{site.baseurl}}/indicators/#moving-average) of an indicator. +Optional chaining enables advanced uses cases; such as, indicator of indicators, [slope](pages/indicators.md) (direction) of any result, or [moving average](pages/indicators.md) of an indicator. ```csharp // example: advanced chaining (RSI of OBV) @@ -63,9 +64,9 @@ IEnumerable results .GetEma(20); ``` -See the [guide]({{site.baseurl}}/guide/#content) and the [full list of indicators and overlays]({{site.baseurl}}/indicators/#content) for more information. +See the [guide](pages/guide.md) and the [full list of indicators and overlays](pages/indicators.md) for more information. -## Optimized for modern .NET frameworks +## Optimized for modern .NET Our [NuGet library](https://www.nuget.org/packages/Skender.Stock.Indicators) directly targets all current frameworks for peak performance, including the .NET Standard for older framework compatibility. @@ -80,22 +81,24 @@ The compiled library package is [Common Language Specification (CLS) compliant]( This repository uses the standard Apache 2.0 open-source license. Please review the [license](https://opensource.org/licenses/Apache-2.0) before using or contributing to the software. -## Share your ideas with the community +## Share ideas with the community -**Need help?** Have ideas? [Start a new discussion, ask a question 💬]({{site.github.repository_url}}/discussions), or [submit an issue]({{site.github.repository_url}}/issues) if it is publicly relevant. You can also direct message [@daveskender](https://twitter.com/messages/compose?recipient_id=27475431). +**Need help?** Have ideas? [Start a new discussion, ask a question 💬](https://github.com/DaveSkender/Stock.Indicators/discussions), or [submit an issue](https://github.com/DaveSkender/Stock.Indicators/issues) if it is publicly relevant. You can also direct message [@daveskender](https://twitter.com/messages/compose?recipient_id=27475431). ## Give back with patronage -Thank you for your support! This software is crafted with care by unpaid enthusiasts who 💖 all forms of encouragement. If you or your organization use this library or like what we're doing, add a ⭐ on the [GitHub Repo]({{site.github.repository_url}}) as a token of appreciation. +Thank you for your support! This software is crafted with care by unpaid enthusiasts who 💖 all forms of encouragement. If you or your organization use this library or like what we're doing, add a ⭐ on the [GitHub Repo](https://github.com/DaveSkender/Stock.Indicators) as a token of appreciation. If you want to buy me a beer or are interested in ongoing support as a patron, [become a sponsor](https://github.com/sponsors/facioquo). Patronage motivates continued maintenance and evolution of open-source projects, and to inspire new ones. ## Contribute to help others -This NuGet package is an open-source project [on GitHub](https://github.com/DaveSkender/Stock.Indicators). If you want to report bugs or contribute fixes, new indicators, or new features, please review our [contributing guidelines]({{site.baseurl}}/contributing/#content) and [the backlog](https://github.com/users/DaveSkender/projects/1). +This NuGet package is an open-source project [on GitHub](https://github.com/DaveSkender/Stock.Indicators). If you want to report bugs or contribute fixes, new indicators, or new features, please review our [contributing guidelines](contributing.md) and [the backlog](https://github.com/users/DaveSkender/projects/1). Special thanks to all of our community code contributors! +```html +
    {% for contributor in site.github.contributors %}
  • @@ -103,5 +106,6 @@ Special thanks to all of our community code contributors!
  • {% endfor %}
+``` -» see our [full list of indicators and overlays]({{site.baseurl}}/indicators/#content) +» see our [full list of indicators and overlays](pages/indicators.md) diff --git a/docs/package-lock.json b/docs/package-lock.json new file mode 100644 index 000000000..0dadc6efa --- /dev/null +++ b/docs/package-lock.json @@ -0,0 +1,469 @@ +{ + "name": "docs", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "npm-watch": "^0.13.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true, + "license": "ISC" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nodemon": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.7.tgz", + "integrity": "sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-watch": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.13.0.tgz", + "integrity": "sha512-MYcgocqCzYA44feZhFoYj69FfSaO0EeRE1gcRcmPaXIpNhUMAhNJ1pwic2C4Hn0OPOQmZKSl90CPgmwvOsVhTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "nodemon": "^3.0.1", + "through2": "^4.0.2" + }, + "bin": { + "npm-watch": "cli.js" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 000000000..60a5397ed --- /dev/null +++ b/docs/package.json @@ -0,0 +1,28 @@ + { + "scripts": { + "watch": "npm-watch build", + "build.api": "docfx metadata", + "build": "docfx build --serve" + }, + "watch": { + "build": { + "patterns": [ + "docfx.json", + "api", + "toc", + "toc.yml", + "index", + "index.md", + "pages", + "assets", + "examples", + "_indicators" + ], + "extensions": "md,yml", + "quiet": false + } + }, + "devDependencies": { + "npm-watch": "^0.13.0" + } + } diff --git a/docs/pages/getting-started.md b/docs/pages/getting-started.md new file mode 100644 index 000000000..bad55622f --- /dev/null +++ b/docs/pages/getting-started.md @@ -0,0 +1 @@ +# Getting Started diff --git a/docs/pages/guide.md b/docs/pages/guide.md index e075c2d2a..dae381922 100644 --- a/docs/pages/guide.md +++ b/docs/pages/guide.md @@ -1,9 +1,8 @@ --- title: Guide and Pro tips description: Learn how to use the Stock Indicators for .NET Nuget library in your own software tools and platforms. Whether you're just getting started or an advanced professional, this guide explains how to get setup, example usage code, and instructions on how to use historical price quotes, make custom quote classes, chain indicators of indicators, and create custom technical indicators. -permalink: /guide/ -relative_path: pages/guide.md -layout: page +permalink: /guide.md +relative_path: guide.md --- # {{ page.title }} @@ -18,9 +17,9 @@ layout: page
  • Using custom results classes
  • Generating indicator of indicators
  • Candlestick patterns
  • -
  • Creating custom indicators
  • -
  • Utilities and helper functions
  • -
  • Contributing guidelines
  • +
  • Creating custom indicators
  • +
  • Utilities and helper functions
  • +
  • Contributing guidelines
  • @@ -81,11 +80,11 @@ SMA on 4/26/2018 was $255.9705 .. ``` -See [individual indicator pages]({{site.baseurl}}/indicators/) for specific usage guidance. +See [individual indicator pages](/indicators/) for specific usage guidance. More examples available: -- [Example usage code]({{site.baseurl}}/examples/#content) in a simple working console application +- [Example usage code](../examples/README.md) in a simple working console application - [Demo site](https://charts.stockindicators.dev) (a stock chart) ## Historical quotes @@ -103,7 +102,7 @@ You must provide historical price quotes to the library in the standard OHLCV `I ### Where can I get historical quote data? -There are many places to get financial market data. Check with your brokerage or other commercial sites. If you're looking for a free developer API, see our ongoing [discussion on market data]({{site.github.repository_url}}/discussions/579) for ideas. +There are many places to get financial market data. Check with your brokerage or other commercial sites. If you're looking for a free developer API, see our ongoing [discussion on market data](https://github.com/DaveSkender/Stock.Indicators/discussions/579) for ideas. ### How much historical quote data do I need? @@ -113,7 +112,7 @@ Each indicator will need different amounts of price `quotes` to calculate. You > > For example, if you are using daily data and want one year of precise EMA(250) data, you need to provide 3 years of historical quotes (1 extra year for the lookback period and 1 extra year for convergence); thereafter, you would discard or not use the first two years of results. Occasionally, even more is required for optimal precision. > -> See [discussion on warmup and convergence]({{site.github.repository_url}}/discussions/688) for more information. +> See [discussion on warmup and convergence](https://github.com/DaveSkender/Stock.Indicators/discussions/688) for more information. ### Using custom quote classes @@ -171,11 +170,11 @@ public class MyCustomQuote : IQuote // + ISeries Note the use of explicit interface (property declaration is `ISeries.Date`), this is because having two properties that expose the same information can be confusing, this way `Date` property is only accessible when working with the included `Quote` type, while if you are working with a `MyCustomQuote` the `Date` property will be hidden, avoiding confusion. -For more information on explicit interfaces, refer to the [C# Programming Guide](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/interfaces/explicit-interface-implementation). +For more information on explicit interfaces, refer to the [C# Programming Guide](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide.mdinterfaces/explicit-interface-implementation). ## Using custom results classes -The indicator result classes can be customized in your code. There are many ways to do this, but the benefit of using derived `ResultBase` is that your custom class will inherit all of the [utility results extension methods]({{site.baseurl}}/utilities/#utilities-for-indicator-results). Here's one example: +The indicator result classes can be customized in your code. There are many ways to do this, but the benefit of using derived `ResultBase` is that your custom class will inherit all of the [utility results extension methods](utilities.md#utilities-for-indicator-results). Here's one example: ```csharp // your custom class with an EMA profile @@ -235,13 +234,13 @@ IEnumerable rsiOfObv = obvResults.GetRsi(14); ## Candlestick patterns -[Candlestick Patterns]({{site.baseurl}}/indicators/#candlestick-pattern) are a unique form of indicator and have a common output model. +[Candlestick Patterns](/indicators/#candlestick-pattern) are a unique form of indicator and have a common output model. {% include candle-result.md %} ### Match -When a candlestick pattern is recognized, it produces a matching signal. In some cases, an intrinsic confirmation is also available after the signal. In cases where previous bars were used to identify a pattern, they are indicated as the basis for the signal. This `enum` can also be referenced as an `int` value. [Documentation for each candlestick pattern]({{site.baseurl}}/indicators/#candlestick-pattern) will indicate whether confirmation and/or basis information is produced. +When a candlestick pattern is recognized, it produces a matching signal. In some cases, an intrinsic confirmation is also available after the signal. In cases where previous bars were used to identify a pattern, they are indicated as the basis for the signal. This `enum` can also be referenced as an `int` value. [Documentation for each candlestick pattern](/indicators/#candlestick-pattern) will indicate whether confirmation and/or basis information is produced. | type | int | description |-- |--: |-- @@ -256,10 +255,10 @@ When a candlestick pattern is recognized, it produces a matching signal. In som ### Candle -The `CandleProperties` class is an extended version of `Quote`, and contains additional calculated properties. `TQuote` classes can be converted to `CandleProperties` with the `.ToCandle()` [utility]({{site.baseurl}}/utilities/#extended-candle-properties), and further used as the basis for calculating indicators. +The `CandleProperties` class is an extended version of `Quote`, and contains additional calculated properties. `TQuote` classes can be converted to `CandleProperties` with the `.ToCandle()` [utility](utilities.md#extended-candle-properties), and further used as the basis for calculating indicators. {% include candle-properties.md %} ## Utilities -See [Utilities and helper functions]({{site.baseurl}}/utilities/#content) for additional tools. +See [Utilities and helper functions](utilities.md) for additional tools. diff --git a/docs/pages/indicators.html b/docs/pages/indicators.md similarity index 84% rename from docs/pages/indicators.html rename to docs/pages/indicators.md index 1b000876d..c31e42d63 100644 --- a/docs/pages/indicators.html +++ b/docs/pages/indicators.md @@ -2,17 +2,17 @@ title: Indicators and overlays description: The Stock Indicators for .NET library contains financial market technical analysis methods to view price patterns or to develop your own trading strategies in Microsoft .NET programming languages and developer platforms. Categories include price trends, price channels, oscillators, stop and reverse, candlestick patterns, volume and momentum, moving averages, price transforms, price characteristics, and many classic numerical methods. permalink: /indicators/ -layout: base ---

    {{ page.title }}

    - +```html +