From 2c8967a6fad06f071f274e5d6e871a5f79e207d1 Mon Sep 17 00:00:00 2001 From: Alexandre Catarino Date: Tue, 12 Dec 2023 00:03:46 +0000 Subject: [PATCH] Fixes Reference to Alpha and Correlation Indicators --- .../48 Takuri/metadata.json | 4 +- .../02 Using APO Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using ABANDS Indicator.php | 2 +- .../metadata.json | 4 +- .../metadata.json | 4 +- .../metadata.json | 4 +- .../06 Advance Decline Ratio/metadata.json | 4 +- .../metadata.json | 4 +- ...Indicator.php => 02 Using A Indicator.php} | 8 +-- .../09 Arms Index/metadata.json | 4 +- .../02 Using ALMA Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using AROON Indicator.php | 2 +- .../11 Aroon Oscillator/metadata.json | 4 +- .../02 Using APS Indicator.php | 2 +- .../12 Augen Price Spike/metadata.json | 4 +- .../02 Using ARIMA Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using ADX Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using ADXR Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using ATR Indicator.php | 2 +- .../16 Average True Range/metadata.json | 4 +- .../02 Using AO Indicator.php | 2 +- .../17 Awesome Oscillator/metadata.json | 4 +- .../02 Using BOP Indicator.php | 2 +- .../18 Balance Of Power/metadata.json | 4 +- .../19 Beta/02 Using B Indicator.php | 6 +- .../19 Beta/metadata.json | 4 +- .../02 Using BB Indicator.php | 2 +- .../20 Bollinger Bands/metadata.json | 4 +- .../21 Chaikin Money Flow/metadata.json | 4 +- .../02 Using CMO Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using CCI Indicator.php | 2 +- .../23 Commodity Channel Index/metadata.json | 4 +- .../02 Using CC Indicator.php | 2 +- .../24 Coppock Curve/metadata.json | 4 +- ...Indicator.php => 02 Using C Indicator.php} | 8 +-- .../25 Correlation/metadata.json | 4 +- .../02 Using DEM Indicator.php | 2 +- .../26 De Marker Indicator/metadata.json | 4 +- .../27 Delay/02 Using Delay Indicator.php | 2 +- .../02 Using DPO Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using DCH Indicator.php | 2 +- .../29 Donchian Channel/metadata.json | 4 +- .../02 Using DEMA Indicator.php | 2 +- .../metadata.json | 4 +- .../31 Ease Of Movement Value/metadata.json | 4 +- .../02 Using EMA Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using FilteredIdentity Indicator.php | 2 +- .../33 Filtered Identity/metadata.json | 4 +- .../02 Using FISH Indicator.php | 2 +- .../34 Fisher Transform/metadata.json | 4 +- .../02 Using FRAMA Indicator.php | 2 +- .../02 Using HeikinAshi Indicator.php | 2 +- .../36 Heikin Ashi/metadata.json | 4 +- .../02 Using HT Indicator.php | 2 +- .../37 Hilbert Transform/metadata.json | 4 +- .../02 Using HMA Indicator.php | 2 +- .../38 Hull Moving Average/metadata.json | 4 +- .../02 Using ICHIMOKU Indicator.php | 2 +- .../39 Ichimoku Kinko Hyo/metadata.json | 4 +- .../02 Using Identity Indicator.php | 2 +- .../40 Identity/metadata.json | 4 +- .../02 Using VWAP Indicator.php | 2 +- .../02 Using KAMA Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using KER Indicator.php | 2 +- .../43 Kaufman Efficiency Ratio/metadata.json | 4 +- .../02 Using KCH Indicator.php | 2 +- .../44 Keltner Channels/metadata.json | 4 +- .../02 Using LSMA Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using LWMA Indicator.php | 2 +- .../metadata.json | 4 +- .../47 Log Return/02 Using LOGR Indicator.php | 2 +- .../47 Log Return/metadata.json | 4 +- .../48 Mass Index/metadata.json | 4 +- .../49 Maximum/02 Using MAX Indicator.php | 2 +- .../50 Mc Clellan Oscillator/metadata.json | 4 +- .../metadata.json | 4 +- .../02 Using MAD Indicator.php | 2 +- .../02 Using MIDPOINT Indicator.php | 2 +- .../53 Mid Point/metadata.json | 4 +- .../02 Using MIDPRICE Indicator.php | 2 +- .../54 Mid Price/metadata.json | 4 +- .../55 Minimum/02 Using MIN Indicator.php | 2 +- .../56 Momentum/02 Using MOM Indicator.php | 2 +- .../02 Using MOMP Indicator.php | 2 +- .../57 Momentum Percent/metadata.json | 4 +- .../02 Using MOMERSION Indicator.php | 2 +- .../58 Momersion Indicator/metadata.json | 4 +- .../59 Money Flow Index/metadata.json | 4 +- .../02 Using MACD Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using NATR Indicator.php | 2 +- .../metadata.json | 4 +- .../62 On Balance Volume/metadata.json | 4 +- .../02 Using PSAR Indicator.php | 2 +- .../02 Using PPO Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using PPHL Indicator.php | 2 +- .../65 Pivot Points High Low/metadata.json | 4 +- .../02 Using ROC Indicator.php | 2 +- .../02 Using ROCP Indicator.php | 2 +- .../67 Rate Of Change Percent/metadata.json | 4 +- .../02 Using ROCR Indicator.php | 2 +- .../68 Rate Of Change Ratio/metadata.json | 4 +- .../02 Using RC Indicator.php | 2 +- .../69 Regression Channel/metadata.json | 4 +- .../70 Relative Daily Volume/metadata.json | 4 +- .../02 Using RMA Indicator.php | 2 +- .../71 Relative Moving Average/metadata.json | 4 +- .../02 Using RSI Indicator.php | 2 +- .../72 Relative Strength Index/metadata.json | 4 +- .../02 Using RVI Indicator.php | 2 +- .../73 Relative Vigor Index/metadata.json | 4 +- .../02 Using STC Indicator.php | 2 +- .../75 Sharpe Ratio/02 Using SR Indicator.php | 2 +- .../75 Sharpe Ratio/metadata.json | 4 +- .../02 Using SMA Indicator.php | 2 +- .../02 Using SORTINO Indicator.php | 2 +- .../77 Sortino Ratio/metadata.json | 4 +- .../02 Using STD Indicator.php | 2 +- .../79 Stochastic/02 Using STO Indicator.php | 2 +- .../79 Stochastic/metadata.json | 4 +- .../80 Sum/02 Using SUM Indicator.php | 2 +- .../81 Super Trend/02 Using STR Indicator.php | 2 +- .../81 Super Trend/metadata.json | 4 +- .../02 Using SWISS Indicator.php | 2 +- .../02 Using T3 Indicator.php | 2 +- .../83 T3 Moving Average/metadata.json | 4 +- .../02 Using TDD Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using TRIMA Indicator.php | 2 +- .../metadata.json | 4 +- .../02 Using TEMA Indicator.php | 2 +- .../metadata.json | 4 +- .../88 Trix/02 Using TRIX Indicator.php | 2 +- .../88 Trix/metadata.json | 4 +- .../89 True Range/02 Using TR Indicator.php | 2 +- .../89 True Range/metadata.json | 4 +- .../02 Using TSI Indicator.php | 2 +- .../90 True Strength Index/metadata.json | 4 +- .../02 Using ULTOSC Indicator.php | 2 +- .../91 Ultimate Oscillator/metadata.json | 4 +- .../92 Variance/02 Using VAR Indicator.php | 2 +- .../metadata.json | 4 +- .../metadata.json | 4 +- .../02 Using WWMA Indicator.php | 2 +- .../96 Wilder Moving Average/metadata.json | 4 +- .../97 Wilder Swing Index/metadata.json | 4 +- .../02 Using WILR Indicator.php | 2 +- .../98 Williams Percent R/metadata.json | 4 +- .../indicators/IndicatorImageGenerator.py | 52 +++++++++++++++++- Resources/indicators/images/alpha.png | Bin 0 -> 75270 bytes Resources/indicators/images/beta.png | Bin 24698 -> 59987 bytes Resources/indicators/images/correlation.png | Bin 0 -> 59338 bytes .../indicator_reference_code_generator.py | 8 ++- 164 files changed, 303 insertions(+), 251 deletions(-) rename 03 Writing Algorithms/28 Indicators/01 Supported Indicators/08 Alpha/{02 Using Alpha Indicator.php => 02 Using A Indicator.php} (60%) rename 03 Writing Algorithms/28 Indicators/01 Supported Indicators/25 Correlation/{02 Using Correlation Indicator.php => 02 Using C Indicator.php} (54%) create mode 100644 Resources/indicators/images/alpha.png create mode 100644 Resources/indicators/images/correlation.png diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/00 Candlestick Patterns/48 Takuri/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/00 Candlestick Patterns/48 Takuri/metadata.json index 9983baa91d..ee9bc6d1ce 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/00 Candlestick Patterns/48 Takuri/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/00 Candlestick Patterns/48 Takuri/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "Create a new Takuri (Dragonfly Doji with very long lower shadow) candlestick pattern indicator to indicate the pattern's presence.", + "description": "Create a new Takuri (Dragonfly Doji with very long lower shadow) candlestick pattern indicator to indicate the pattern's presen...", "keywords": "takuri", "og:type": "website", - "og:description": "Create a new Takuri (Dragonfly Doji with very long lower shadow) candlestick pattern indicator to indicate the pattern's presence.", + "og:description": "Create a new Takuri (Dragonfly Doji with very long lower shadow) candlestick pattern indicator to indicate the pattern's presen...", "og:title": "Takuri - Using Indicators on QuantConnect.com", "og:site_name": "Takuri - Using Indicators on QuantConnect.com", "og:image": "" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/01 Absolute Price Oscillator/02 Using APO Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/01 Absolute Price Oscillator/02 Using APO Indicator.php index 77466b4a5a..7ace6772d3 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/01 Absolute Price Oscillator/02 Using APO Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/01 Absolute Price Oscillator/02 Using APO Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 10, 2, MovingAverageType.Simple'; $properties = array("Fast","Slow","Signal","Histogram"); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '10, 20, MovingAverageType.Simple'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = True; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/01 Absolute Price Oscillator/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/01 Absolute Price Oscillator/metadata.json index d76e3e9d9c..9df2dd955b 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/01 Absolute Price Oscillator/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/01 Absolute Price Oscillator/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Absolute Price Oscillator (APO) The Absolute Price Oscillator is calculated using the following formula: APO[i] = FastMA[i] - SlowMA[i]", + "description": "This indicator computes the Absolute Price Oscillator (APO) The Absolute Price Oscillator is calculated using the following for...", "keywords": "absolute price oscillator", "og:type": "website", - "og:description": "This indicator computes the Absolute Price Oscillator (APO) The Absolute Price Oscillator is calculated using the following formula: APO[i] = FastMA[i] - SlowMA[i]", + "og:description": "This indicator computes the Absolute Price Oscillator (APO) The Absolute Price Oscillator is calculated using the following for...", "og:title": "Absolute Price Oscillator - Using Indicators on QuantConnect.com", "og:site_name": "Absolute Price Oscillator - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/absolute-price-oscillator.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/02 Acceleration Bands/02 Using ABANDS Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/02 Acceleration Bands/02 Using ABANDS Indicator.php index 0b2f50416a..e3a0b369b4 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/02 Acceleration Bands/02 Using ABANDS Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/02 Acceleration Bands/02 Using ABANDS Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 10, 4, MovingAverageType.Simple'; $properties = array("MiddleBand","UpperBand","LowerBand"); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '"", 10, 4, MovingAverageType.Simple'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = True; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/03 Accumulation Distribution/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/03 Accumulation Distribution/metadata.json index 07f58bb401..703f4aab5f 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/03 Accumulation Distribution/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/03 Accumulation Distribution/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Accumulation/Distribution (AD) The Accumulation/Distribution is calculated using the following formula: AD = AD + ((Close - Low) - (High - Close)) / (High - Low) * Volume", + "description": "This indicator computes the Accumulation/Distribution (AD) The Accumulation/Distribution is calculated using the following form...", "keywords": "accumulation distribution", "og:type": "website", - "og:description": "This indicator computes the Accumulation/Distribution (AD) The Accumulation/Distribution is calculated using the following formula: AD = AD + ((Close - Low) - (High - Close)) / (High - Low) * Volume", + "og:description": "This indicator computes the Accumulation/Distribution (AD) The Accumulation/Distribution is calculated using the following form...", "og:title": "Accumulation Distribution - Using Indicators on QuantConnect.com", "og:site_name": "Accumulation Distribution - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/accumulation-distribution.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/04 Accumulation Distribution Oscillator/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/04 Accumulation Distribution Oscillator/metadata.json index 515263307b..f5aca23512 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/04 Accumulation Distribution Oscillator/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/04 Accumulation Distribution Oscillator/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Accumulation/Distribution Oscillator (ADOSC) The Accumulation/Distribution Oscillator is calculated using the following formula: ADOSC = EMA(fast,AD) - EMA(slow,AD)", + "description": "This indicator computes the Accumulation/Distribution Oscillator (ADOSC) The Accumulation/Distribution Oscillator is calculated...", "keywords": "accumulation distribution oscillator", "og:type": "website", - "og:description": "This indicator computes the Accumulation/Distribution Oscillator (ADOSC) The Accumulation/Distribution Oscillator is calculated using the following formula: ADOSC = EMA(fast,AD) - EMA(slow,AD)", + "og:description": "This indicator computes the Accumulation/Distribution Oscillator (ADOSC) The Accumulation/Distribution Oscillator is calculated...", "og:title": "Accumulation Distribution Oscillator - Using Indicators on QuantConnect.com", "og:site_name": "Accumulation Distribution Oscillator - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/accumulation-distribution-oscillator.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/05 Advance Decline Difference/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/05 Advance Decline Difference/metadata.json index a2c4e730bf..254bf2d69e 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/05 Advance Decline Difference/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/05 Advance Decline Difference/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Advance Decline Difference compute the difference between the number of stocks that closed higher and the number of stocks that closed lower than their previous day's closing prices.", + "description": "The Advance Decline Difference compute the difference between the number of stocks that closed higher and the number of stocks ...", "keywords": "advance decline difference", "og:type": "website", - "og:description": "The Advance Decline Difference compute the difference between the number of stocks that closed higher and the number of stocks that closed lower than their previous day's closing prices.", + "og:description": "The Advance Decline Difference compute the difference between the number of stocks that closed higher and the number of stocks ...", "og:title": "Advance Decline Difference - Using Indicators on QuantConnect.com", "og:site_name": "Advance Decline Difference - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/advance-decline-difference.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/06 Advance Decline Ratio/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/06 Advance Decline Ratio/metadata.json index c3301c51c7..2903d1d5e6 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/06 Advance Decline Ratio/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/06 Advance Decline Ratio/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The advance-decline ratio (ADR) compares the number of stocks that closed higher against the number of stocks that closed lower than their previous day's closing prices.", + "description": "The advance-decline ratio (ADR) compares the number of stocks that closed higher against the number of stocks that closed lower...", "keywords": "advance decline ratio", "og:type": "website", - "og:description": "The advance-decline ratio (ADR) compares the number of stocks that closed higher against the number of stocks that closed lower than their previous day's closing prices.", + "og:description": "The advance-decline ratio (ADR) compares the number of stocks that closed higher against the number of stocks that closed lower...", "og:title": "Advance Decline Ratio - Using Indicators on QuantConnect.com", "og:site_name": "Advance Decline Ratio - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/advance-decline-ratio.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/07 Advance Decline Volume Ratio/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/07 Advance Decline Volume Ratio/metadata.json index b6f3627304..86175abc24 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/07 Advance Decline Volume Ratio/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/07 Advance Decline Volume Ratio/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Advance Decline Volume Ratio is a Breadth indicator calculated as ratio of summary volume of advancing stocks to summary volume of declining stocks. AD Volume Ratio is used in technical analysis to see where the main trading activity is focused.", + "description": "The Advance Decline Volume Ratio is a Breadth indicator calculated as ratio of summary volume of advancing stocks to summary vo...", "keywords": "advance decline volume ratio", "og:type": "website", - "og:description": "The Advance Decline Volume Ratio is a Breadth indicator calculated as ratio of summary volume of advancing stocks to summary volume of declining stocks. AD Volume Ratio is used in technical analysis to see where the main trading activity is focused.", + "og:description": "The Advance Decline Volume Ratio is a Breadth indicator calculated as ratio of summary volume of advancing stocks to summary vo...", "og:title": "Advance Decline Volume Ratio - Using Indicators on QuantConnect.com", "og:site_name": "Advance Decline Volume Ratio - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/advance-decline-volume-ratio.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/08 Alpha/02 Using Alpha Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/08 Alpha/02 Using A Indicator.php similarity index 60% rename from 03 Writing Algorithms/28 Indicators/01 Supported Indicators/08 Alpha/02 Using Alpha Indicator.php rename to 03 Writing Algorithms/28 Indicators/01 Supported Indicators/08 Alpha/02 Using A Indicator.php index 0e98c0b547..18b2b202f5 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/08 Alpha/02 Using Alpha Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/08 Alpha/02 Using A Indicator.php @@ -5,12 +5,12 @@ $hasAutomaticIndicatorHelper = true; $helperPrefix = ''; $typeName = 'Alpha'; -$helperName = 'Alpha'; -$helperArguments = 'symbol'; +$helperName = 'A'; +$helperArguments = 'symbol, reference, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; -$constructorArguments = ''; +$updateParameterType = 'a TradeBar or QuoteBar'; +$constructorArguments = '"", Symbol.Create("QQQ", SecurityType.Equity, Market.USA), Symbol.Create("SPY", SecurityType.Equity, Market.USA), 20'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; $constructorBox = 'alpha'; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/09 Arms Index/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/09 Arms Index/metadata.json index 00161745c8..36ab4d8303 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/09 Arms Index/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/09 Arms Index/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Arms Index, also called the Short-Term Trading Index (TRIN) is a technical analysis indicator that compares the number of advancing and declining stocks (AD Ratio) to advancing and declining volume (AD volume).", + "description": "The Arms Index, also called the Short-Term Trading Index (TRIN) is a technical analysis indicator that compares the number of a...", "keywords": "arms index", "og:type": "website", - "og:description": "The Arms Index, also called the Short-Term Trading Index (TRIN) is a technical analysis indicator that compares the number of advancing and declining stocks (AD Ratio) to advancing and declining volume (AD volume).", + "og:description": "The Arms Index, also called the Short-Term Trading Index (TRIN) is a technical analysis indicator that compares the number of a...", "og:title": "Arms Index - Using Indicators on QuantConnect.com", "og:site_name": "Arms Index - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/arms-index.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/10 Arnaud Legoux Moving Average/02 Using ALMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/10 Arnaud Legoux Moving Average/02 Using ALMA Indicator.php index fca7c1b2b9..f905c7a9ab 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/10 Arnaud Legoux Moving Average/02 Using ALMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/10 Arnaud Legoux Moving Average/02 Using ALMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 10, 6, 0.85'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '10, 6, 0.85'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/10 Arnaud Legoux Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/10 Arnaud Legoux Moving Average/metadata.json index 097f2803b1..91df148889 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/10 Arnaud Legoux Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/10 Arnaud Legoux Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "Smooth and high sensitive moving Average. This moving average reduce lag of the information but still being smooth to reduce noises. Is a weighted moving average, which weights have a Normal shape; the parameters Sigma and Offset affect the kurtosis and skewness of the weights respectively. source", + "description": "Smooth and high sensitive moving Average. This moving average reduce lag of the information but still being smooth to reduce no...", "keywords": "arnaud legoux moving average", "og:type": "website", - "og:description": "Smooth and high sensitive moving Average. This moving average reduce lag of the information but still being smooth to reduce noises. Is a weighted moving average, which weights have a Normal shape; the parameters Sigma and Offset affect the kurtosis and skewness of the weights respectively. source", + "og:description": "Smooth and high sensitive moving Average. This moving average reduce lag of the information but still being smooth to reduce no...", "og:title": "Arnaud Legoux Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "Arnaud Legoux Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/arnaud-legoux-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/11 Aroon Oscillator/02 Using AROON Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/11 Aroon Oscillator/02 Using AROON Indicator.php index 0d01b19eb3..bfb8aa671c 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/11 Aroon Oscillator/02 Using AROON Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/11 Aroon Oscillator/02 Using AROON Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 10, 20'; $properties = array("AroonUp","AroonDown"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '10, 20'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/11 Aroon Oscillator/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/11 Aroon Oscillator/metadata.json index 59581476be..b7cf589a27 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/11 Aroon Oscillator/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/11 Aroon Oscillator/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Aroon Oscillator is the difference between AroonUp and AroonDown. The value of this indicator fluctuates between -100 and +100. An upward trend bias is present when the oscillator is positive, and a negative trend bias is present when the oscillator is negative. AroonUp/Down values over 75 identify strong trends in their respective direction.", + "description": "The Aroon Oscillator is the difference between AroonUp and AroonDown. The value of this indicator fluctuates between -100 and +...", "keywords": "aroon oscillator", "og:type": "website", - "og:description": "The Aroon Oscillator is the difference between AroonUp and AroonDown. The value of this indicator fluctuates between -100 and +100. An upward trend bias is present when the oscillator is positive, and a negative trend bias is present when the oscillator is negative. AroonUp/Down values over 75 identify strong trends in their respective direction.", + "og:description": "The Aroon Oscillator is the difference between AroonUp and AroonDown. The value of this indicator fluctuates between -100 and +...", "og:title": "Aroon Oscillator - Using Indicators on QuantConnect.com", "og:site_name": "Aroon Oscillator - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/aroon-oscillator.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/12 Augen Price Spike/02 Using APS Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/12 Augen Price Spike/02 Using APS Indicator.php index 30e3d0ab90..85ff88e6fc 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/12 Augen Price Spike/02 Using APS Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/12 Augen Price Spike/02 Using APS Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 3'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '3'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/12 Augen Price Spike/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/12 Augen Price Spike/metadata.json index b06b44c0ff..dc4fb07234 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/12 Augen Price Spike/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/12 Augen Price Spike/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Augen Price Spike indicator is an indicator that measures price changes in terms of standard deviations. In the book, The Volatility Edge in Options Trading, Jeff Augen describes a method for tracking absolute price changes in terms of recent volatility, using the standard deviation. length = x closes = closeArray closes1 = closeArray shifted right by 1 closes2 = closeArray shifted right by 2 closeLog = np.log(np.divide(closes1, closes2)) SDev = np.std(closeLog) m = SDev * closes1[-1] spike = (closes[-1]-closes1[-1])/m return spike Augen Price Spike from TradingView https://www.tradingview.com/script/fC7Pn2X2-Price-Spike-Jeff-Augen/", + "description": "The Augen Price Spike indicator is an indicator that measures price changes in terms of standard deviations. In the book, The V...", "keywords": "augen price spike", "og:type": "website", - "og:description": "The Augen Price Spike indicator is an indicator that measures price changes in terms of standard deviations. In the book, The Volatility Edge in Options Trading, Jeff Augen describes a method for tracking absolute price changes in terms of recent volatility, using the standard deviation. length = x closes = closeArray closes1 = closeArray shifted right by 1 closes2 = closeArray shifted right by 2 closeLog = np.log(np.divide(closes1, closes2)) SDev = np.std(closeLog) m = SDev * closes1[-1] spike = (closes[-1]-closes1[-1])/m return spike Augen Price Spike from TradingView https://www.tradingview.com/script/fC7Pn2X2-Price-Spike-Jeff-Augen/", + "og:description": "The Augen Price Spike indicator is an indicator that measures price changes in terms of standard deviations. In the book, The V...", "og:title": "Augen Price Spike - Using Indicators on QuantConnect.com", "og:site_name": "Augen Price Spike - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/augen-price-spike.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/13 Auto Regressive Integrated Moving Average/02 Using ARIMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/13 Auto Regressive Integrated Moving Average/02 Using ARIMA Indicator.php index ee3d44d80e..0b4bfe6f72 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/13 Auto Regressive Integrated Moving Average/02 Using ARIMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/13 Auto Regressive Integrated Moving Average/02 Using ARIMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 1, 1, 1, 20'; $properties = array(); $otherProperties = array("ArResidualError","MaResidualError"); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '1, 1, 1, 20, True'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/13 Auto Regressive Integrated Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/13 Auto Regressive Integrated Moving Average/metadata.json index b18ff0286b..43640bfdc7 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/13 Auto Regressive Integrated Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/13 Auto Regressive Integrated Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "An Autoregressive Intergrated Moving Average (ARIMA) is a time series model which can be used to describe a set of data. In particular,with X\u209c representing the series, the model assumes the data are of form (after differencing times): X\u209c = c + \u03b5\u209c + \u03a3\u1d62\u03c6\u1d62X\u209c\u208b\u1d62 + \u03a3\u1d62\u03b8\u1d62\u03b5\u209c\u208b\u1d62 where the first sum has an upper limit of and the second .", + "description": "An Autoregressive Intergrated Moving Average (ARIMA) is a time series model which can be used to describe a set of data. In par...", "keywords": "auto regressive integrated moving average", "og:type": "website", - "og:description": "An Autoregressive Intergrated Moving Average (ARIMA) is a time series model which can be used to describe a set of data. In particular,with X\u209c representing the series, the model assumes the data are of form (after differencing times): X\u209c = c + \u03b5\u209c + \u03a3\u1d62\u03c6\u1d62X\u209c\u208b\u1d62 + \u03a3\u1d62\u03b8\u1d62\u03b5\u209c\u208b\u1d62 where the first sum has an upper limit of and the second .", + "og:description": "An Autoregressive Intergrated Moving Average (ARIMA) is a time series model which can be used to describe a set of data. In par...", "og:title": "Auto Regressive Integrated Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "Auto Regressive Integrated Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/auto-regressive-integrated-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/14 Average Directional Index/02 Using ADX Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/14 Average Directional Index/02 Using ADX Indicator.php index 38ed169beb..208c7b1a4a 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/14 Average Directional Index/02 Using ADX Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/14 Average Directional Index/02 Using ADX Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array("PositiveDirectionalIndex","NegativeDirectionalIndex"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/14 Average Directional Index/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/14 Average Directional Index/metadata.json index 7b4b0a9f41..5cbc104975 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/14 Average Directional Index/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/14 Average Directional Index/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes Average Directional Index which measures trend strength without regard to trend direction. Firstly, it calculates the Directional Movement and the True Range value, and then the values are accumulated and smoothed using a custom smoothing method proposed by Wilder. For an n period smoothing, 1/n of each period's value is added to the total period. From these accumulated values we are therefore able to derived the 'Positive Directional Index' (+DI) and 'Negative Directional Index' (-DI) which is used to calculate the Average Directional Index. Computation source: https://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:average_directional_index_adx", + "description": "This indicator computes Average Directional Index which measures trend strength without regard to trend direction. Firstly, it ...", "keywords": "average directional index", "og:type": "website", - "og:description": "This indicator computes Average Directional Index which measures trend strength without regard to trend direction. Firstly, it calculates the Directional Movement and the True Range value, and then the values are accumulated and smoothed using a custom smoothing method proposed by Wilder. For an n period smoothing, 1/n of each period's value is added to the total period. From these accumulated values we are therefore able to derived the 'Positive Directional Index' (+DI) and 'Negative Directional Index' (-DI) which is used to calculate the Average Directional Index. Computation source: https://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:average_directional_index_adx", + "og:description": "This indicator computes Average Directional Index which measures trend strength without regard to trend direction. Firstly, it ...", "og:title": "Average Directional Index - Using Indicators on QuantConnect.com", "og:site_name": "Average Directional Index - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/average-directional-index.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/15 Average Directional Movement Index Rating/02 Using ADXR Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/15 Average Directional Movement Index Rating/02 Using ADXR Indicator.php index 76d2a9c15a..ff1bd63634 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/15 Average Directional Movement Index Rating/02 Using ADXR Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/15 Average Directional Movement Index Rating/02 Using ADXR Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array("ADX"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/15 Average Directional Movement Index Rating/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/15 Average Directional Movement Index Rating/metadata.json index 32214af13c..80779bb695 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/15 Average Directional Movement Index Rating/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/15 Average Directional Movement Index Rating/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Average Directional Movement Index Rating (ADXR). The Average Directional Movement Index Rating is calculated with the following formula: ADXR[i] = (ADX[i] + ADX[i - period + 1]) / 2", + "description": "This indicator computes the Average Directional Movement Index Rating (ADXR). The Average Directional Movement Index Rating is ...", "keywords": "average directional movement index rating", "og:type": "website", - "og:description": "This indicator computes the Average Directional Movement Index Rating (ADXR). The Average Directional Movement Index Rating is calculated with the following formula: ADXR[i] = (ADX[i] + ADX[i - period + 1]) / 2", + "og:description": "This indicator computes the Average Directional Movement Index Rating (ADXR). The Average Directional Movement Index Rating is ...", "og:title": "Average Directional Movement Index Rating - Using Indicators on QuantConnect.com", "og:site_name": "Average Directional Movement Index Rating - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/average-directional-movement-index-rating.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/16 Average True Range/02 Using ATR Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/16 Average True Range/02 Using ATR Indicator.php index cf0ace524a..1537018e66 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/16 Average True Range/02 Using ATR Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/16 Average True Range/02 Using ATR Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20, MovingAverageType.Simple'; $properties = array("TrueRange"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20, MovingAverageType.Simple'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = True; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/16 Average True Range/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/16 Average True Range/metadata.json index 9c107a20b2..7b1c29f5a9 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/16 Average True Range/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/16 Average True Range/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The AverageTrueRange indicator is a measure of volatility introduced by Welles Wilder in his book: New Concepts in Technical Trading Systems. This indicator computes the TrueRange and then smoothes the TrueRange over a given period. TrueRange is defined as the maximum of the following: High - Low ABS(High - PreviousClose) ABS(Low - PreviousClose)", + "description": "The AverageTrueRange indicator is a measure of volatility introduced by Welles Wilder in his book: New Concepts in Technical Tr...", "keywords": "average true range", "og:type": "website", - "og:description": "The AverageTrueRange indicator is a measure of volatility introduced by Welles Wilder in his book: New Concepts in Technical Trading Systems. This indicator computes the TrueRange and then smoothes the TrueRange over a given period. TrueRange is defined as the maximum of the following: High - Low ABS(High - PreviousClose) ABS(Low - PreviousClose)", + "og:description": "The AverageTrueRange indicator is a measure of volatility introduced by Welles Wilder in his book: New Concepts in Technical Tr...", "og:title": "Average True Range - Using Indicators on QuantConnect.com", "og:site_name": "Average True Range - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/average-true-range.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/17 Awesome Oscillator/02 Using AO Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/17 Awesome Oscillator/02 Using AO Indicator.php index 9c844da76e..35a083866e 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/17 Awesome Oscillator/02 Using AO Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/17 Awesome Oscillator/02 Using AO Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 10, 20, MovingAverageType.Simple'; $properties = array("SlowAo","FastAo"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '10, 20, MovingAverageType.Simple'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/17 Awesome Oscillator/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/17 Awesome Oscillator/metadata.json index fcc3b57983..a9973ff51f 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/17 Awesome Oscillator/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/17 Awesome Oscillator/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Awesome Oscillator Indicator tracks the price midpoint-movement of a security. Specifically, AO = MAfast[(H+L)/2] - MAslow[(H+L)/2] where MAfast and MAslow denote simple moving averages wherein fast has a shorter period. https://www.barchart.com/education/technical-indicators/awesome_oscillator", + "description": "The Awesome Oscillator Indicator tracks the price midpoint-movement of a security. Specifically, AO = MAfast[(H+L)/2] - ...", "keywords": "awesome oscillator", "og:type": "website", - "og:description": "The Awesome Oscillator Indicator tracks the price midpoint-movement of a security. Specifically, AO = MAfast[(H+L)/2] - MAslow[(H+L)/2] where MAfast and MAslow denote simple moving averages wherein fast has a shorter period. https://www.barchart.com/education/technical-indicators/awesome_oscillator", + "og:description": "The Awesome Oscillator Indicator tracks the price midpoint-movement of a security. Specifically, AO = MAfast[(H+L)/2] - ...", "og:title": "Awesome Oscillator - Using Indicators on QuantConnect.com", "og:site_name": "Awesome Oscillator - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/awesome-oscillator.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/18 Balance Of Power/02 Using BOP Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/18 Balance Of Power/02 Using BOP Indicator.php index d9aa98ee1b..fcb0b15dc2 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/18 Balance Of Power/02 Using BOP Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/18 Balance Of Power/02 Using BOP Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = ''; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/18 Balance Of Power/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/18 Balance Of Power/metadata.json index 981e1dd7d7..508f7f3d70 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/18 Balance Of Power/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/18 Balance Of Power/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Balance Of Power (BOP). The Balance Of Power is calculated with the following formula: BOP = (Close - Open) / (High - Low)", + "description": "This indicator computes the Balance Of Power (BOP). The Balance Of Power is calculated with the following formula: BOP = (Close...", "keywords": "balance of power", "og:type": "website", - "og:description": "This indicator computes the Balance Of Power (BOP). The Balance Of Power is calculated with the following formula: BOP = (Close - Open) / (High - Low)", + "og:description": "This indicator computes the Balance Of Power (BOP). The Balance Of Power is calculated with the following formula: BOP = (Close...", "og:title": "Balance Of Power - Using Indicators on QuantConnect.com", "og:site_name": "Balance Of Power - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/balance-of-power.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/19 Beta/02 Using B Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/19 Beta/02 Using B Indicator.php index 1ae73659aa..2c1629f398 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/19 Beta/02 Using B Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/19 Beta/02 Using B Indicator.php @@ -6,11 +6,11 @@ $helperPrefix = ''; $typeName = 'Beta'; $helperName = 'B'; -$helperArguments = 'Symbol.Create("QQQ", SecurityType.Equity, Market.USA), symbol, 20'; +$helperArguments = 'symbol, reference, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; -$constructorArguments = '"", 20, Symbol.Create("QQQ", SecurityType.Equity, Market.USA), Symbol.Create("SPY", SecurityType.Equity, Market.USA)'; +$updateParameterType = 'a TradeBar or QuoteBar'; +$constructorArguments = '"", Symbol.Create("QQQ", SecurityType.Equity, Market.USA), Symbol.Create("SPY", SecurityType.Equity, Market.USA), 20'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; $constructorBox = 'beta'; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/19 Beta/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/19 Beta/metadata.json index 59be5582ab..9a142e1e40 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/19 Beta/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/19 Beta/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "In technical analysis Beta indicator is used to measure volatility or risk of a target (ETF) relative to the overall risk (volatility) of the reference (market indexes). The Beta indicators compares target's price movement to the movements of the indexes over the same period of time. It is common practice to use the SPX index as a benchmark of the overall reference market when it comes to Beta calculations.", + "description": "In technical analysis Beta indicator is used to measure volatility or risk of a target (ETF) relative to the overall risk (vola...", "keywords": "beta", "og:type": "website", - "og:description": "In technical analysis Beta indicator is used to measure volatility or risk of a target (ETF) relative to the overall risk (volatility) of the reference (market indexes). The Beta indicators compares target's price movement to the movements of the indexes over the same period of time. It is common practice to use the SPX index as a benchmark of the overall reference market when it comes to Beta calculations.", + "og:description": "In technical analysis Beta indicator is used to measure volatility or risk of a target (ETF) relative to the overall risk (vola...", "og:title": "Beta - Using Indicators on QuantConnect.com", "og:site_name": "Beta - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/beta.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/20 Bollinger Bands/02 Using BB Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/20 Bollinger Bands/02 Using BB Indicator.php index a658b3a84e..c5d85f4c9e 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/20 Bollinger Bands/02 Using BB Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/20 Bollinger Bands/02 Using BB Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 30, 2'; $properties = array("StandardDeviation","MiddleBand","UpperBand","LowerBand","BandWidth","PercentB","Price"); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '30, 2'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = True; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/20 Bollinger Bands/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/20 Bollinger Bands/metadata.json index b7552f897b..a504bd5d17 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/20 Bollinger Bands/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/20 Bollinger Bands/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator creates a moving average (middle band) with an upper band and lower band fixed at k standard deviations above and below the moving average.", + "description": "This indicator creates a moving average (middle band) with an upper band and lower band fixed at k standard deviations above an...", "keywords": "bollinger bands", "og:type": "website", - "og:description": "This indicator creates a moving average (middle band) with an upper band and lower band fixed at k standard deviations above and below the moving average.", + "og:description": "This indicator creates a moving average (middle band) with an upper band and lower band fixed at k standard deviations above an...", "og:title": "Bollinger Bands - Using Indicators on QuantConnect.com", "og:site_name": "Bollinger Bands - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/bollinger-bands.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/21 Chaikin Money Flow/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/21 Chaikin Money Flow/metadata.json index 6291a2a621..1bf84386eb 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/21 Chaikin Money Flow/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/21 Chaikin Money Flow/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Chaikin Money Flow Index (CMF) is a volume-weighted average of accumulation and distribution over a specified period. CMF = n-day Sum of [(((C - L) - (H - C)) / (H - L)) x Vol] / n-day Sum of Vol Where: n = number of periods, typically 21 H = high L = low C = close Vol = volume https://www.fidelity.com/learning-center/trading-investing/technical-analysis/technical-indicator-guide/cmf", + "description": "The Chaikin Money Flow Index (CMF) is a volume-weighted average of accumulation and distribution over a specified period. CMF =...", "keywords": "chaikin money flow", "og:type": "website", - "og:description": "The Chaikin Money Flow Index (CMF) is a volume-weighted average of accumulation and distribution over a specified period. CMF = n-day Sum of [(((C - L) - (H - C)) / (H - L)) x Vol] / n-day Sum of Vol Where: n = number of periods, typically 21 H = high L = low C = close Vol = volume https://www.fidelity.com/learning-center/trading-investing/technical-analysis/technical-indicator-guide/cmf", + "og:description": "The Chaikin Money Flow Index (CMF) is a volume-weighted average of accumulation and distribution over a specified period. CMF =...", "og:title": "Chaikin Money Flow - Using Indicators on QuantConnect.com", "og:site_name": "Chaikin Money Flow - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/chaikin-money-flow.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/22 Chande Momentum Oscillator/02 Using CMO Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/22 Chande Momentum Oscillator/02 Using CMO Indicator.php index ff8a768090..9edd018aa1 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/22 Chande Momentum Oscillator/02 Using CMO Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/22 Chande Momentum Oscillator/02 Using CMO Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/22 Chande Momentum Oscillator/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/22 Chande Momentum Oscillator/metadata.json index 017f02447d..b3c1f3159e 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/22 Chande Momentum Oscillator/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/22 Chande Momentum Oscillator/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Chande Momentum Oscillator (CMO). CMO calculation is mostly identical to RSI. The only difference is in the last step of calculation: RSI = gain / (gain+loss) CMO = (gain-loss) / (gain+loss)", + "description": "This indicator computes the Chande Momentum Oscillator (CMO). CMO calculation is mostly identical to RSI. The only difference i...", "keywords": "chande momentum oscillator", "og:type": "website", - "og:description": "This indicator computes the Chande Momentum Oscillator (CMO). CMO calculation is mostly identical to RSI. The only difference is in the last step of calculation: RSI = gain / (gain+loss) CMO = (gain-loss) / (gain+loss)", + "og:description": "This indicator computes the Chande Momentum Oscillator (CMO). CMO calculation is mostly identical to RSI. The only difference i...", "og:title": "Chande Momentum Oscillator - Using Indicators on QuantConnect.com", "og:site_name": "Chande Momentum Oscillator - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/chande-momentum-oscillator.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/23 Commodity Channel Index/02 Using CCI Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/23 Commodity Channel Index/02 Using CCI Indicator.php index ee68115564..a678e1d94b 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/23 Commodity Channel Index/02 Using CCI Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/23 Commodity Channel Index/02 Using CCI Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20, MovingAverageType.Simple'; $properties = array("TypicalPriceAverage","TypicalPriceMeanDeviation"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20, MovingAverageType.Simple'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = True; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/23 Commodity Channel Index/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/23 Commodity Channel Index/metadata.json index a915c317b7..de4ccf0890 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/23 Commodity Channel Index/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/23 Commodity Channel Index/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator represents the traditional commodity channel index (CCI) CCI = (Typical Price - 20-period SMA of TP) / (.015 * Mean Deviation) Typical Price (TP) = (High + Low + Close)/3 Constant = 0.015 There are four steps to calculating the Mean Deviation, first, subtract the most recent 20-period average of the typical price from each period's typical price. Second, take the absolute values of these numbers. Third, sum the absolute values. Fourth, divide by the total number of periods (20).", + "description": "This indicator represents the traditional commodity channel index (CCI) CCI = (Typical Price - 20-period SMA of TP) / (.015 * M...", "keywords": "commodity channel index", "og:type": "website", - "og:description": "This indicator represents the traditional commodity channel index (CCI) CCI = (Typical Price - 20-period SMA of TP) / (.015 * Mean Deviation) Typical Price (TP) = (High + Low + Close)/3 Constant = 0.015 There are four steps to calculating the Mean Deviation, first, subtract the most recent 20-period average of the typical price from each period's typical price. Second, take the absolute values of these numbers. Third, sum the absolute values. Fourth, divide by the total number of periods (20).", + "og:description": "This indicator represents the traditional commodity channel index (CCI) CCI = (Typical Price - 20-period SMA of TP) / (.015 * M...", "og:title": "Commodity Channel Index - Using Indicators on QuantConnect.com", "og:site_name": "Commodity Channel Index - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/commodity-channel-index.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/24 Coppock Curve/02 Using CC Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/24 Coppock Curve/02 Using CC Indicator.php index 17604aba9e..71178f4d32 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/24 Coppock Curve/02 Using CC Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/24 Coppock Curve/02 Using CC Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 11, 14, 10'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '11, 14, 10'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/24 Coppock Curve/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/24 Coppock Curve/metadata.json index 510b665abc..76b23c3de9 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/24 Coppock Curve/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/24 Coppock Curve/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "A momentum indicator developed by Edwin \u201cSedge\u201d Coppock in October 1965. The goal of this indicator is to identify long-term buying opportunities in the S&P500 and Dow Industrials. source", + "description": "A momentum indicator developed by Edwin \u201cSedge\u201d Coppock in October 1965. The goal of this indicator is to identify long-term bu...", "keywords": "coppock curve", "og:type": "website", - "og:description": "A momentum indicator developed by Edwin \u201cSedge\u201d Coppock in October 1965. The goal of this indicator is to identify long-term buying opportunities in the S&P500 and Dow Industrials. source", + "og:description": "A momentum indicator developed by Edwin \u201cSedge\u201d Coppock in October 1965. The goal of this indicator is to identify long-term bu...", "og:title": "Coppock Curve - Using Indicators on QuantConnect.com", "og:site_name": "Coppock Curve - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/coppock-curve.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/25 Correlation/02 Using Correlation Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/25 Correlation/02 Using C Indicator.php similarity index 54% rename from 03 Writing Algorithms/28 Indicators/01 Supported Indicators/25 Correlation/02 Using Correlation Indicator.php rename to 03 Writing Algorithms/28 Indicators/01 Supported Indicators/25 Correlation/02 Using C Indicator.php index fa135c3ed7..7bbf531e55 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/25 Correlation/02 Using Correlation Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/25 Correlation/02 Using C Indicator.php @@ -5,12 +5,12 @@ $hasAutomaticIndicatorHelper = true; $helperPrefix = ''; $typeName = 'Correlation'; -$helperName = 'Correlation'; -$helperArguments = 'symbol'; +$helperName = 'C'; +$helperArguments = 'symbol, reference, 20, correlationType=CorrelationType.Pearson'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; -$constructorArguments = ''; +$updateParameterType = 'a TradeBar or QuoteBar'; +$constructorArguments = '"", Symbol.Create("QQQ", SecurityType.Equity, Market.USA), Symbol.Create("SPY", SecurityType.Equity, Market.USA), 20, correlationType=CorrelationType.Pearson'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; $constructorBox = 'correlation'; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/25 Correlation/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/25 Correlation/metadata.json index d066c05c6a..53056c7a3d 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/25 Correlation/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/25 Correlation/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Correlation Indicator is a valuable tool in technical analysis, designed to quantify the degree of relationship between the price movements of a target security (e.g., a stock or ETF) and a reference market index. It measures how closely the target\u2019s price changes are aligned with the fluctuations of the index over a specific period of time, providing insights into the target\u2019s susceptibility to market movements. A positive correlation indicates that the target tends to move in the same direction as the market index, while a negative correlation suggests an inverse relationship. A correlation close to 0 implies a weak or no linear relationship. Commonly, the SPX index is employed as the benchmark for the overall market when calculating correlation, ensuring a consistent and reliable reference point. This helps traders and investors make informed decisions regarding the risk and behavior of the target security in relation to market trends.", + "description": "The Correlation Indicator is a valuable tool in technical analysis, designed to quantify the degree of relationship between the...", "keywords": "correlation", "og:type": "website", - "og:description": "The Correlation Indicator is a valuable tool in technical analysis, designed to quantify the degree of relationship between the price movements of a target security (e.g., a stock or ETF) and a reference market index. It measures how closely the target\u2019s price changes are aligned with the fluctuations of the index over a specific period of time, providing insights into the target\u2019s susceptibility to market movements. A positive correlation indicates that the target tends to move in the same direction as the market index, while a negative correlation suggests an inverse relationship. A correlation close to 0 implies a weak or no linear relationship. Commonly, the SPX index is employed as the benchmark for the overall market when calculating correlation, ensuring a consistent and reliable reference point. This helps traders and investors make informed decisions regarding the risk and behavior of the target security in relation to market trends.", + "og:description": "The Correlation Indicator is a valuable tool in technical analysis, designed to quantify the degree of relationship between the...", "og:title": "Correlation - Using Indicators on QuantConnect.com", "og:site_name": "Correlation - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/correlation.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/26 De Marker Indicator/02 Using DEM Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/26 De Marker Indicator/02 Using DEM Indicator.php index 8c9c8a9003..87ae2fcab4 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/26 De Marker Indicator/02 Using DEM Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/26 De Marker Indicator/02 Using DEM Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20, MovingAverageType.Simple'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20, MovingAverageType.Simple'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = True; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/26 De Marker Indicator/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/26 De Marker Indicator/metadata.json index a933df222a..2e30e2efa7 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/26 De Marker Indicator/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/26 De Marker Indicator/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "In the DeMarker strategy, for some period of size N, set: DeMax = High - Previous High, and DeMin = Previous Low - Low where, in the prior, if either term is less than zero (DeMax or DeMin), set it to zero. We can now define the indicator itself, DEM, as: DEM = MA(DeMax)/(MA(DeMax)+MA(DeMin)) where MA denotes a Moving Average of period N. https://www.investopedia.com/terms/d/demarkerindicator.asp", + "description": "In the DeMarker strategy, for some period of size N, set: DeMax = High - Previous High, and DeMin = Previous Low - Low <...", "keywords": "de marker indicator", "og:type": "website", - "og:description": "In the DeMarker strategy, for some period of size N, set: DeMax = High - Previous High, and DeMin = Previous Low - Low where, in the prior, if either term is less than zero (DeMax or DeMin), set it to zero. We can now define the indicator itself, DEM, as: DEM = MA(DeMax)/(MA(DeMax)+MA(DeMin)) where MA denotes a Moving Average of period N. https://www.investopedia.com/terms/d/demarkerindicator.asp", + "og:description": "In the DeMarker strategy, for some period of size N, set: DeMax = High - Previous High, and DeMin = Previous Low - Low <...", "og:title": "De Marker Indicator - Using Indicators on QuantConnect.com", "og:site_name": "De Marker Indicator - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/de-marker-indicator.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/27 Delay/02 Using Delay Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/27 Delay/02 Using Delay Indicator.php index 5b437a506f..7698ea346d 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/27 Delay/02 Using Delay Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/27 Delay/02 Using Delay Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = ''; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/28 Detrended Price Oscillator/02 Using DPO Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/28 Detrended Price Oscillator/02 Using DPO Indicator.php index 5d5c07f587..acb6354d4a 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/28 Detrended Price Oscillator/02 Using DPO Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/28 Detrended Price Oscillator/02 Using DPO Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/28 Detrended Price Oscillator/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/28 Detrended Price Oscillator/metadata.json index b9a1429631..e43978cff7 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/28 Detrended Price Oscillator/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/28 Detrended Price Oscillator/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Detrended Price Oscillator is an indicator designed to remove trend from price and make it easier to identify cycles. DPO does not extend to the last date because it is based on a displaced moving average. Is estimated as Price {X/2 + 1} periods ago less the X-period simple moving average. E.g.DPO(20) equals price 11 days ago less the 20-day SMA.", + "description": "The Detrended Price Oscillator is an indicator designed to remove trend from price and make it easier to identify cycles. DPO d...", "keywords": "detrended price oscillator", "og:type": "website", - "og:description": "The Detrended Price Oscillator is an indicator designed to remove trend from price and make it easier to identify cycles. DPO does not extend to the last date because it is based on a displaced moving average. Is estimated as Price {X/2 + 1} periods ago less the X-period simple moving average. E.g.DPO(20) equals price 11 days ago less the 20-day SMA.", + "og:description": "The Detrended Price Oscillator is an indicator designed to remove trend from price and make it easier to identify cycles. DPO d...", "og:title": "Detrended Price Oscillator - Using Indicators on QuantConnect.com", "og:site_name": "Detrended Price Oscillator - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/detrended-price-oscillator.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/29 Donchian Channel/02 Using DCH Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/29 Donchian Channel/02 Using DCH Indicator.php index 4e744ff54c..0d6ad8934b 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/29 Donchian Channel/02 Using DCH Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/29 Donchian Channel/02 Using DCH Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20, 20'; $properties = array("UpperBand","LowerBand"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20, 20'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/29 Donchian Channel/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/29 Donchian Channel/metadata.json index 8b85b0677d..5b834646d2 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/29 Donchian Channel/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/29 Donchian Channel/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the upper and lower band of the Donchian Channel. The upper band is computed by finding the highest high over the given period. The lower band is computed by finding the lowest low over the given period. The primary output value of the indicator is the mean of the upper and lower band for the given timeframe.", + "description": "This indicator computes the upper and lower band of the Donchian Channel. The upper band is computed by finding the highest hig...", "keywords": "donchian channel", "og:type": "website", - "og:description": "This indicator computes the upper and lower band of the Donchian Channel. The upper band is computed by finding the highest high over the given period. The lower band is computed by finding the lowest low over the given period. The primary output value of the indicator is the mean of the upper and lower band for the given timeframe.", + "og:description": "This indicator computes the upper and lower band of the Donchian Channel. The upper band is computed by finding the highest hig...", "og:title": "Donchian Channel - Using Indicators on QuantConnect.com", "og:site_name": "Donchian Channel - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/donchian-channel.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/30 Double Exponential Moving Average/02 Using DEMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/30 Double Exponential Moving Average/02 Using DEMA Indicator.php index c6778ac76e..a9b651834a 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/30 Double Exponential Moving Average/02 Using DEMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/30 Double Exponential Moving Average/02 Using DEMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/30 Double Exponential Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/30 Double Exponential Moving Average/metadata.json index 63e5a4102e..b2dbab9f7d 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/30 Double Exponential Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/30 Double Exponential Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Double Exponential Moving Average (DEMA). The Double Exponential Moving Average is calculated with the following formula: EMA2 = EMA(EMA(t,period),period) DEMA = 2 * EMA(t,period) - EMA2 The Generalized DEMA (GD) is calculated with the following formula: GD = (volumeFactor+1) * EMA(t,period) - volumeFactor * EMA2", + "description": "This indicator computes the Double Exponential Moving Average (DEMA). The Double Exponential Moving Average is calculated with ...", "keywords": "double exponential moving average", "og:type": "website", - "og:description": "This indicator computes the Double Exponential Moving Average (DEMA). The Double Exponential Moving Average is calculated with the following formula: EMA2 = EMA(EMA(t,period),period) DEMA = 2 * EMA(t,period) - EMA2 The Generalized DEMA (GD) is calculated with the following formula: GD = (volumeFactor+1) * EMA(t,period) - volumeFactor * EMA2", + "og:description": "This indicator computes the Double Exponential Moving Average (DEMA). The Double Exponential Moving Average is calculated with ...", "og:title": "Double Exponential Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "Double Exponential Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/double-exponential-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/31 Ease Of Movement Value/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/31 Ease Of Movement Value/metadata.json index 288cca58bf..5122d17a5d 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/31 Ease Of Movement Value/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/31 Ease Of Movement Value/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the n-period Ease of Movement Value using the following: MID = (high_1 + low_1)/2 - (high_0 + low_0)/2 RATIO = (currentVolume/10000) / (high_1 - low_1) EMV = MID/RATIO _SMA = n-period of EMV Returns _SMA source", + "description": "This indicator computes the n-period Ease of Movement Value using the following: MID = (high_1 + low_1)/2 - (high_0 + low_0)/2 ...", "keywords": "ease of movement value", "og:type": "website", - "og:description": "This indicator computes the n-period Ease of Movement Value using the following: MID = (high_1 + low_1)/2 - (high_0 + low_0)/2 RATIO = (currentVolume/10000) / (high_1 - low_1) EMV = MID/RATIO _SMA = n-period of EMV Returns _SMA source", + "og:description": "This indicator computes the n-period Ease of Movement Value using the following: MID = (high_1 + low_1)/2 - (high_0 + low_0)/2 ...", "og:title": "Ease Of Movement Value - Using Indicators on QuantConnect.com", "og:site_name": "Ease Of Movement Value - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/ease-of-movement-value.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/32 Exponential Moving Average/02 Using EMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/32 Exponential Moving Average/02 Using EMA Indicator.php index 50e551310a..a20aee40a0 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/32 Exponential Moving Average/02 Using EMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/32 Exponential Moving Average/02 Using EMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20, 0.5'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20, 0.5'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/32 Exponential Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/32 Exponential Moving Average/metadata.json index 56e1d381e9..a92019fa3e 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/32 Exponential Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/32 Exponential Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator represents the traditional exponential moving average indicator (EMA). When the indicator is ready, the first value of the EMA is equivalent to the simple moving average. After the first EMA value, the EMA value is a function of the previous EMA value. Therefore, depending on the number of samples you feed into the indicator, it can provide different EMA values for a single security and lookback period. To make the indicator values consistent across time, warm up the indicator with all the trailing security price history.", + "description": "This indicator represents the traditional exponential moving average indicator (EMA). When the indicator is ready, the first va...", "keywords": "exponential moving average", "og:type": "website", - "og:description": "This indicator represents the traditional exponential moving average indicator (EMA). When the indicator is ready, the first value of the EMA is equivalent to the simple moving average. After the first EMA value, the EMA value is a function of the previous EMA value. Therefore, depending on the number of samples you feed into the indicator, it can provide different EMA values for a single security and lookback period. To make the indicator values consistent across time, warm up the indicator with all the trailing security price history.", + "og:description": "This indicator represents the traditional exponential moving average indicator (EMA). When the indicator is ready, the first va...", "og:title": "Exponential Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "Exponential Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/exponential-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/33 Filtered Identity/02 Using FilteredIdentity Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/33 Filtered Identity/02 Using FilteredIdentity Indicator.php index 1b268e65b3..67cc5202ff 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/33 Filtered Identity/02 Using FilteredIdentity Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/33 Filtered Identity/02 Using FilteredIdentity Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, filter = lambda x: x.Close > x.Open'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '"SPY", filter = lambda x: x.Close > x.Open'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/33 Filtered Identity/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/33 Filtered Identity/metadata.json index 252a26a2dd..9a33d60dd2 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/33 Filtered Identity/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/33 Filtered Identity/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator represents an indicator that is a ready after ingesting a single sample and always returns the same value as it is given if it passes a filter condition", + "description": "This indicator represents an indicator that is a ready after ingesting a single sample and always returns the same value as it ...", "keywords": "filtered identity", "og:type": "website", - "og:description": "This indicator represents an indicator that is a ready after ingesting a single sample and always returns the same value as it is given if it passes a filter condition", + "og:description": "This indicator represents an indicator that is a ready after ingesting a single sample and always returns the same value as it ...", "og:title": "Filtered Identity - Using Indicators on QuantConnect.com", "og:site_name": "Filtered Identity - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/filtered-identity.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/34 Fisher Transform/02 Using FISH Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/34 Fisher Transform/02 Using FISH Indicator.php index c597ecc6c4..6152e6e70d 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/34 Fisher Transform/02 Using FISH Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/34 Fisher Transform/02 Using FISH Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/34 Fisher Transform/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/34 Fisher Transform/metadata.json index c29ab0a608..92f858e486 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/34 Fisher Transform/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/34 Fisher Transform/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Fisher transform is a mathematical process which is used to convert any data set to a modified data set whose Probability Distribution Function is approximately Gaussian. Once the Fisher transform is computed, the transformed data can then be analyzed in terms of it's deviation from the mean. The equation is y = .5 * ln [ 1 + x / 1 - x ] where x is the input y is the output ln is the natural logarithm The Fisher transform has much sharper turning points than other indicators such as MACD For more info, read chapter 1 of Cybernetic Analysis for Stocks and Futures by John F. Ehlers We are implementing the latest version of this indicator found at Fig. 4 of http://www.mesasoftware.com/papers/UsingTheFisherTransform.pdf", + "description": "The Fisher transform is a mathematical process which is used to convert any data set to a modified data set whose Probability D...", "keywords": "fisher transform", "og:type": "website", - "og:description": "The Fisher transform is a mathematical process which is used to convert any data set to a modified data set whose Probability Distribution Function is approximately Gaussian. Once the Fisher transform is computed, the transformed data can then be analyzed in terms of it's deviation from the mean. The equation is y = .5 * ln [ 1 + x / 1 - x ] where x is the input y is the output ln is the natural logarithm The Fisher transform has much sharper turning points than other indicators such as MACD For more info, read chapter 1 of Cybernetic Analysis for Stocks and Futures by John F. Ehlers We are implementing the latest version of this indicator found at Fig. 4 of http://www.mesasoftware.com/papers/UsingTheFisherTransform.pdf", + "og:description": "The Fisher transform is a mathematical process which is used to convert any data set to a modified data set whose Probability D...", "og:title": "Fisher Transform - Using Indicators on QuantConnect.com", "og:site_name": "Fisher Transform - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/fisher-transform.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/35 Fractal Adaptive Moving Average/02 Using FRAMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/35 Fractal Adaptive Moving Average/02 Using FRAMA Indicator.php index 29e011e90d..2e6330fcf8 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/35 Fractal Adaptive Moving Average/02 Using FRAMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/35 Fractal Adaptive Moving Average/02 Using FRAMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20, 198'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20, 198'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/36 Heikin Ashi/02 Using HeikinAshi Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/36 Heikin Ashi/02 Using HeikinAshi Indicator.php index e0a798435f..784888639c 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/36 Heikin Ashi/02 Using HeikinAshi Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/36 Heikin Ashi/02 Using HeikinAshi Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol'; $properties = array("Open","High","Low","Close","Volume"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = ''; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/36 Heikin Ashi/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/36 Heikin Ashi/metadata.json index 8b7b18f8c5..683a0cdb67 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/36 Heikin Ashi/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/36 Heikin Ashi/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Heikin-Ashi bar (HA) The Heikin-Ashi bar is calculated using the following formulas: HA_Close[0] = (Open[0] + High[0] + Low[0] + Close[0]) / 4 HA_Open[0] = (HA_Open[1] + HA_Close[1]) / 2 HA_High[0] = MAX(High[0], HA_Open[0], HA_Close[0]) HA_Low[0] = MIN(Low[0], HA_Open[0], HA_Close[0])", + "description": "This indicator computes the Heikin-Ashi bar (HA) The Heikin-Ashi bar is calculated using the following formulas: HA_Close[0] = ...", "keywords": "heikin ashi", "og:type": "website", - "og:description": "This indicator computes the Heikin-Ashi bar (HA) The Heikin-Ashi bar is calculated using the following formulas: HA_Close[0] = (Open[0] + High[0] + Low[0] + Close[0]) / 4 HA_Open[0] = (HA_Open[1] + HA_Close[1]) / 2 HA_High[0] = MAX(High[0], HA_Open[0], HA_Close[0]) HA_Low[0] = MIN(Low[0], HA_Open[0], HA_Close[0])", + "og:description": "This indicator computes the Heikin-Ashi bar (HA) The Heikin-Ashi bar is calculated using the following formulas: HA_Close[0] = ...", "og:title": "Heikin Ashi - Using Indicators on QuantConnect.com", "og:site_name": "Heikin Ashi - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/heikin-ashi.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/37 Hilbert Transform/02 Using HT Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/37 Hilbert Transform/02 Using HT Indicator.php index 548845c1b6..287aea11a4 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/37 Hilbert Transform/02 Using HT Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/37 Hilbert Transform/02 Using HT Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 7, 0.635, 0.338'; $properties = array("InPhase","Quadrature"); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '7, 0.635, 0.338'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/37 Hilbert Transform/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/37 Hilbert Transform/metadata.json index fd1841cde9..891aef8ec0 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/37 Hilbert Transform/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/37 Hilbert Transform/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Hilbert Transform Indicator by John Ehlers. By using present and prior price differences, and some feedback, price values are split into their complex number components of real (inPhase) and imaginary (quadrature) parts. \">source", + "description": "This indicator computes the Hilbert Transform Indicator by John Ehlers. By using present and prior price differences, and some ...", "keywords": "hilbert transform", "og:type": "website", - "og:description": "This indicator computes the Hilbert Transform Indicator by John Ehlers. By using present and prior price differences, and some feedback, price values are split into their complex number components of real (inPhase) and imaginary (quadrature) parts. \">source", + "og:description": "This indicator computes the Hilbert Transform Indicator by John Ehlers. By using present and prior price differences, and some ...", "og:title": "Hilbert Transform - Using Indicators on QuantConnect.com", "og:site_name": "Hilbert Transform - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/hilbert-transform.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/38 Hull Moving Average/02 Using HMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/38 Hull Moving Average/02 Using HMA Indicator.php index b4ffd1ebf4..a2a04f6773 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/38 Hull Moving Average/02 Using HMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/38 Hull Moving Average/02 Using HMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/38 Hull Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/38 Hull Moving Average/metadata.json index 88cc62b7c4..716ecf9200 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/38 Hull Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/38 Hull Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "Produces a Hull Moving Average as explained at http://www.alanhull.com/hull-moving-average/ and derived from the instructions for the Excel VBA code at http://finance4traders.blogspot.com/2009/06/how-to-calculate-hull-moving-average.html", + "description": "Produces a Hull Moving Average as explained at http://www.alanhull.com/hull-moving-average/ and derived from the instructions f...", "keywords": "hull moving average", "og:type": "website", - "og:description": "Produces a Hull Moving Average as explained at http://www.alanhull.com/hull-moving-average/ and derived from the instructions for the Excel VBA code at http://finance4traders.blogspot.com/2009/06/how-to-calculate-hull-moving-average.html", + "og:description": "Produces a Hull Moving Average as explained at http://www.alanhull.com/hull-moving-average/ and derived from the instructions f...", "og:title": "Hull Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "Hull Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/hull-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/39 Ichimoku Kinko Hyo/02 Using ICHIMOKU Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/39 Ichimoku Kinko Hyo/02 Using ICHIMOKU Indicator.php index e1830ddc2d..961c79f15b 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/39 Ichimoku Kinko Hyo/02 Using ICHIMOKU Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/39 Ichimoku Kinko Hyo/02 Using ICHIMOKU Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 9, 26, 17, 52, 26, 26'; $properties = array("Tenkan","Kijun","SenkouA","SenkouB","Chikou","TenkanMaximum","TenkanMinimum","KijunMaximum","KijunMinimum","SenkouBMaximum","SenkouBMinimum","DelayedTenkanSenkouA","DelayedKijunSenkouA","DelayedMaximumSenkouB","DelayedMinimumSenkouB"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '9, 26, 17, 52, 26, 26'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/39 Ichimoku Kinko Hyo/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/39 Ichimoku Kinko Hyo/metadata.json index a00318c286..364c64b454 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/39 Ichimoku Kinko Hyo/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/39 Ichimoku Kinko Hyo/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Ichimoku Kinko Hyo indicator. It consists of the following main indicators: Tenkan-sen: (Highest High + Lowest Low) / 2 for the specific period (normally 9) Kijun-sen: (Highest High + Lowest Low) / 2 for the specific period (normally 26) Senkou A Span: (Tenkan-sen + Kijun-sen )/ 2 from a specific number of periods ago (normally 26) Senkou B Span: (Highest High + Lowest Low) / 2 for the specific period (normally 52), from a specific number of periods ago (normally 26)", + "description": "This indicator computes the Ichimoku Kinko Hyo indicator. It consists of the following main indicators: Tenkan-sen: (Highest Hi...", "keywords": "ichimoku kinko hyo", "og:type": "website", - "og:description": "This indicator computes the Ichimoku Kinko Hyo indicator. It consists of the following main indicators: Tenkan-sen: (Highest High + Lowest Low) / 2 for the specific period (normally 9) Kijun-sen: (Highest High + Lowest Low) / 2 for the specific period (normally 26) Senkou A Span: (Tenkan-sen + Kijun-sen )/ 2 from a specific number of periods ago (normally 26) Senkou B Span: (Highest High + Lowest Low) / 2 for the specific period (normally 52), from a specific number of periods ago (normally 26)", + "og:description": "This indicator computes the Ichimoku Kinko Hyo indicator. It consists of the following main indicators: Tenkan-sen: (Highest Hi...", "og:title": "Ichimoku Kinko Hyo - Using Indicators on QuantConnect.com", "og:site_name": "Ichimoku Kinko Hyo - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/ichimoku-kinko-hyo.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/40 Identity/02 Using Identity Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/40 Identity/02 Using Identity Indicator.php index baf77f435e..22003e4810 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/40 Identity/02 Using Identity Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/40 Identity/02 Using Identity Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '"SPY"'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/40 Identity/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/40 Identity/metadata.json index 984921d763..fcec256f3a 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/40 Identity/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/40 Identity/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator represents an indicator that is a ready after ingesting a single sample and always returns the same value as it is given.", + "description": "This indicator represents an indicator that is a ready after ingesting a single sample and always returns the same value as it ...", "keywords": "identity", "og:type": "website", - "og:description": "This indicator represents an indicator that is a ready after ingesting a single sample and always returns the same value as it is given.", + "og:description": "This indicator represents an indicator that is a ready after ingesting a single sample and always returns the same value as it ...", "og:title": "Identity - Using Indicators on QuantConnect.com", "og:site_name": "Identity - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/identity.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/41 Intraday Vwap/02 Using VWAP Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/41 Intraday Vwap/02 Using VWAP Indicator.php index adccd17e8e..c72a485e77 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/41 Intraday Vwap/02 Using VWAP Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/41 Intraday Vwap/02 Using VWAP Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '"SPY"'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/42 Kaufman Adaptive Moving Average/02 Using KAMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/42 Kaufman Adaptive Moving Average/02 Using KAMA Indicator.php index 62315adc63..7cd4d74fe3 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/42 Kaufman Adaptive Moving Average/02 Using KAMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/42 Kaufman Adaptive Moving Average/02 Using KAMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20, 10, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20, 10, 20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/42 Kaufman Adaptive Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/42 Kaufman Adaptive Moving Average/metadata.json index 5e91657b3b..08025b6556 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/42 Kaufman Adaptive Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/42 Kaufman Adaptive Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Kaufman Adaptive Moving Average (KAMA). The Kaufman Adaptive Moving Average is calculated as explained here: http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:kaufman_s_adaptive_moving_average", + "description": "This indicator computes the Kaufman Adaptive Moving Average (KAMA). The Kaufman Adaptive Moving Average is calculated as explai...", "keywords": "kaufman adaptive moving average", "og:type": "website", - "og:description": "This indicator computes the Kaufman Adaptive Moving Average (KAMA). The Kaufman Adaptive Moving Average is calculated as explained here: http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:kaufman_s_adaptive_moving_average", + "og:description": "This indicator computes the Kaufman Adaptive Moving Average (KAMA). The Kaufman Adaptive Moving Average is calculated as explai...", "og:title": "Kaufman Adaptive Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "Kaufman Adaptive Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/kaufman-adaptive-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/43 Kaufman Efficiency Ratio/02 Using KER Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/43 Kaufman Efficiency Ratio/02 Using KER Indicator.php index e30f6ee6a7..de70b232eb 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/43 Kaufman Efficiency Ratio/02 Using KER Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/43 Kaufman Efficiency Ratio/02 Using KER Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/43 Kaufman Efficiency Ratio/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/43 Kaufman Efficiency Ratio/metadata.json index aac108c7b3..726bb7abdf 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/43 Kaufman Efficiency Ratio/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/43 Kaufman Efficiency Ratio/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Kaufman Efficiency Ratio (KER). The Kaufman Efficiency Ratio is calculated as explained here: https://www.marketvolume.com/technicalanalysis/efficiencyratio.asp", + "description": "This indicator computes the Kaufman Efficiency Ratio (KER). The Kaufman Efficiency Ratio is calculated as explained here: https...", "keywords": "kaufman efficiency ratio", "og:type": "website", - "og:description": "This indicator computes the Kaufman Efficiency Ratio (KER). The Kaufman Efficiency Ratio is calculated as explained here: https://www.marketvolume.com/technicalanalysis/efficiencyratio.asp", + "og:description": "This indicator computes the Kaufman Efficiency Ratio (KER). The Kaufman Efficiency Ratio is calculated as explained here: https...", "og:title": "Kaufman Efficiency Ratio - Using Indicators on QuantConnect.com", "og:site_name": "Kaufman Efficiency Ratio - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/kaufman-efficiency-ratio.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/44 Keltner Channels/02 Using KCH Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/44 Keltner Channels/02 Using KCH Indicator.php index 9a133c7ba1..a86bbe5957 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/44 Keltner Channels/02 Using KCH Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/44 Keltner Channels/02 Using KCH Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20, 2, MovingAverageType.Simple'; $properties = array("MiddleBand","UpperBand","LowerBand","AverageTrueRange"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20, 2, MovingAverageType.Simple'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = True; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/44 Keltner Channels/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/44 Keltner Channels/metadata.json index b51f5cadec..d9e73a8151 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/44 Keltner Channels/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/44 Keltner Channels/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator creates a moving average (middle band) with an upper band and lower band fixed at k average True range multiples away from the middle band.", + "description": "This indicator creates a moving average (middle band) with an upper band and lower band fixed at k average True range multiples...", "keywords": "keltner channels", "og:type": "website", - "og:description": "This indicator creates a moving average (middle band) with an upper band and lower band fixed at k average True range multiples away from the middle band.", + "og:description": "This indicator creates a moving average (middle band) with an upper band and lower band fixed at k average True range multiples...", "og:title": "Keltner Channels - Using Indicators on QuantConnect.com", "og:site_name": "Keltner Channels - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/keltner-channels.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/45 Least Squares Moving Average/02 Using LSMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/45 Least Squares Moving Average/02 Using LSMA Indicator.php index 3bb37cf4c1..5ec1bad00a 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/45 Least Squares Moving Average/02 Using LSMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/45 Least Squares Moving Average/02 Using LSMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array("Intercept","Slope"); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/45 Least Squares Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/45 Least Squares Moving Average/metadata.json index 1e7c676607..ad5f6f6c3c 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/45 Least Squares Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/45 Least Squares Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Least Squares Moving Average (LSMA) first calculates a least squares regression line over the preceding time periods, and then projects it forward to the current period. In essence, it calculates what the value would be if the regression line continued. source", + "description": "The Least Squares Moving Average (LSMA) first calculates a least squares regression line over the preceding time periods, and t...", "keywords": "least squares moving average", "og:type": "website", - "og:description": "The Least Squares Moving Average (LSMA) first calculates a least squares regression line over the preceding time periods, and then projects it forward to the current period. In essence, it calculates what the value would be if the regression line continued. source", + "og:description": "The Least Squares Moving Average (LSMA) first calculates a least squares regression line over the preceding time periods, and t...", "og:title": "Least Squares Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "Least Squares Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/least-squares-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/46 Linear Weighted Moving Average/02 Using LWMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/46 Linear Weighted Moving Average/02 Using LWMA Indicator.php index 3dff9356f7..fdf2449f1b 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/46 Linear Weighted Moving Average/02 Using LWMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/46 Linear Weighted Moving Average/02 Using LWMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/46 Linear Weighted Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/46 Linear Weighted Moving Average/metadata.json index 6eb34b7377..a4d9b8a5f2 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/46 Linear Weighted Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/46 Linear Weighted Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator represents the traditional Weighted Moving Average indicator. The weight are linearly distributed according to the number of periods in the indicator. For example, a 4 period indicator will have a numerator of (4 * window[0]) + (3 * window[1]) + (2 * window[2]) + window[3] and a denominator of 4 + 3 + 2 + 1 = 10 During the warm up period, IsReady will return False, but the LWMA will still be computed correctly because the denominator will be the minimum of Samples factorial or Size factorial and the computation iterates over that minimum value. The RollingWindow of inputs is created when the indicator is created. A RollingWindow of LWMAs is not saved. That is up to the caller.", + "description": "This indicator represents the traditional Weighted Moving Average indicator. The weight are linearly distributed according to t...", "keywords": "linear weighted moving average", "og:type": "website", - "og:description": "This indicator represents the traditional Weighted Moving Average indicator. The weight are linearly distributed according to the number of periods in the indicator. For example, a 4 period indicator will have a numerator of (4 * window[0]) + (3 * window[1]) + (2 * window[2]) + window[3] and a denominator of 4 + 3 + 2 + 1 = 10 During the warm up period, IsReady will return False, but the LWMA will still be computed correctly because the denominator will be the minimum of Samples factorial or Size factorial and the computation iterates over that minimum value. The RollingWindow of inputs is created when the indicator is created. A RollingWindow of LWMAs is not saved. That is up to the caller.", + "og:description": "This indicator represents the traditional Weighted Moving Average indicator. The weight are linearly distributed according to t...", "og:title": "Linear Weighted Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "Linear Weighted Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/linear-weighted-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/47 Log Return/02 Using LOGR Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/47 Log Return/02 Using LOGR Indicator.php index 47574afbbf..6b72a9d6f9 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/47 Log Return/02 Using LOGR Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/47 Log Return/02 Using LOGR Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/47 Log Return/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/47 Log Return/metadata.json index 7c67ed56c8..97411e2281 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/47 Log Return/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/47 Log Return/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator represents the LogReturn indicator (LOGR) - log returns are useful for identifying price convergence/divergence in a given period - logr = log (current price / last price in period)", + "description": "This indicator represents the LogReturn indicator (LOGR) - log returns are useful for identifying price convergence/divergence ...", "keywords": "log return", "og:type": "website", - "og:description": "This indicator represents the LogReturn indicator (LOGR) - log returns are useful for identifying price convergence/divergence in a given period - logr = log (current price / last price in period)", + "og:description": "This indicator represents the LogReturn indicator (LOGR) - log returns are useful for identifying price convergence/divergence ...", "og:title": "Log Return - Using Indicators on QuantConnect.com", "og:site_name": "Log Return - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/log-return.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/48 Mass Index/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/48 Mass Index/metadata.json index d0e899079a..87ba008f70 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/48 Mass Index/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/48 Mass Index/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Mass Index uses the high-low range to identify trend reversals based on range expansions. In this sense, the Mass Index is a volatility indicator that does not have a directional bias. Instead, the Mass Index identifies range bulges that can foreshadow a reversal of the current trend. Developed by Donald Dorsey.", + "description": "The Mass Index uses the high-low range to identify trend reversals based on range expansions. In this sense, the Mass Index is ...", "keywords": "mass index", "og:type": "website", - "og:description": "The Mass Index uses the high-low range to identify trend reversals based on range expansions. In this sense, the Mass Index is a volatility indicator that does not have a directional bias. Instead, the Mass Index identifies range bulges that can foreshadow a reversal of the current trend. Developed by Donald Dorsey.", + "og:description": "The Mass Index uses the high-low range to identify trend reversals based on range expansions. In this sense, the Mass Index is ...", "og:title": "Mass Index - Using Indicators on QuantConnect.com", "og:site_name": "Mass Index - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/mass-index.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/49 Maximum/02 Using MAX Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/49 Maximum/02 Using MAX Indicator.php index 20086bfea7..0b26aa75ed 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/49 Maximum/02 Using MAX Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/49 Maximum/02 Using MAX Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array("PeriodsSinceMaximum"); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/50 Mc Clellan Oscillator/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/50 Mc Clellan Oscillator/metadata.json index ff4b06e3c1..621ba7fa37 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/50 Mc Clellan Oscillator/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/50 Mc Clellan Oscillator/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The McClellan Oscillator is a market breadth indicator which was developed by Sherman and Marian McClellan. It is based on the difference between the number of advancing and declining periods.", + "description": "The McClellan Oscillator is a market breadth indicator which was developed by Sherman and Marian McClellan. It is based on the ...", "keywords": "mc clellan oscillator", "og:type": "website", - "og:description": "The McClellan Oscillator is a market breadth indicator which was developed by Sherman and Marian McClellan. It is based on the difference between the number of advancing and declining periods.", + "og:description": "The McClellan Oscillator is a market breadth indicator which was developed by Sherman and Marian McClellan. It is based on the ...", "og:title": "Mc Clellan Oscillator - Using Indicators on QuantConnect.com", "og:site_name": "Mc Clellan Oscillator - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/mc-clellan-oscillator.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/51 Mc Clellan Summation Index/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/51 Mc Clellan Summation Index/metadata.json index 49cc7157c2..a1f1194e10 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/51 Mc Clellan Summation Index/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/51 Mc Clellan Summation Index/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The McClellan Summation Index (MSI) is a market breadth indicator that is based on the rolling average of difference between the number of advancing and declining issues on a stock exchange. It is generally considered as is a long-term version of the ", + "description": "The McClellan Summation Index (MSI) is a market breadth indicator that is based on the rolling average of difference between th...", "keywords": "mc clellan summation index", "og:type": "website", - "og:description": "The McClellan Summation Index (MSI) is a market breadth indicator that is based on the rolling average of difference between the number of advancing and declining issues on a stock exchange. It is generally considered as is a long-term version of the ", + "og:description": "The McClellan Summation Index (MSI) is a market breadth indicator that is based on the rolling average of difference between th...", "og:title": "Mc Clellan Summation Index - Using Indicators on QuantConnect.com", "og:site_name": "Mc Clellan Summation Index - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/mc-clellan-summation-index.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/52 Mean Absolute Deviation/02 Using MAD Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/52 Mean Absolute Deviation/02 Using MAD Indicator.php index 5893c34ee5..4258afa7e1 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/52 Mean Absolute Deviation/02 Using MAD Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/52 Mean Absolute Deviation/02 Using MAD Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array("Mean"); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/53 Mid Point/02 Using MIDPOINT Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/53 Mid Point/02 Using MIDPOINT Indicator.php index 7566e168b9..19b7c9df53 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/53 Mid Point/02 Using MIDPOINT Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/53 Mid Point/02 Using MIDPOINT Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/53 Mid Point/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/53 Mid Point/metadata.json index 6f9fd288bb..0478f2f485 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/53 Mid Point/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/53 Mid Point/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the MidPoint (MIDPOINT) The MidPoint is calculated using the following formula: MIDPOINT = (Highest Value + Lowest Value) / 2", + "description": "This indicator computes the MidPoint (MIDPOINT) The MidPoint is calculated using the following formula: MIDPOINT = (Highest Val...", "keywords": "mid point", "og:type": "website", - "og:description": "This indicator computes the MidPoint (MIDPOINT) The MidPoint is calculated using the following formula: MIDPOINT = (Highest Value + Lowest Value) / 2", + "og:description": "This indicator computes the MidPoint (MIDPOINT) The MidPoint is calculated using the following formula: MIDPOINT = (Highest Val...", "og:title": "Mid Point - Using Indicators on QuantConnect.com", "og:site_name": "Mid Point - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/mid-point.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/54 Mid Price/02 Using MIDPRICE Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/54 Mid Price/02 Using MIDPRICE Indicator.php index 4d6c647d2c..ef55ea0e73 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/54 Mid Price/02 Using MIDPRICE Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/54 Mid Price/02 Using MIDPRICE Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/54 Mid Price/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/54 Mid Price/metadata.json index 54252ae598..0043d544b8 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/54 Mid Price/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/54 Mid Price/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the MidPrice (MIDPRICE). The MidPrice is calculated using the following formula: MIDPRICE = (Highest High + Lowest Low) / 2", + "description": "This indicator computes the MidPrice (MIDPRICE). The MidPrice is calculated using the following formula: MIDPRICE = (Highest Hi...", "keywords": "mid price", "og:type": "website", - "og:description": "This indicator computes the MidPrice (MIDPRICE). The MidPrice is calculated using the following formula: MIDPRICE = (Highest High + Lowest Low) / 2", + "og:description": "This indicator computes the MidPrice (MIDPRICE). The MidPrice is calculated using the following formula: MIDPRICE = (Highest Hi...", "og:title": "Mid Price - Using Indicators on QuantConnect.com", "og:site_name": "Mid Price - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/mid-price.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/55 Minimum/02 Using MIN Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/55 Minimum/02 Using MIN Indicator.php index a7d3179211..9557c8fc71 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/55 Minimum/02 Using MIN Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/55 Minimum/02 Using MIN Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array("PeriodsSinceMinimum"); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/56 Momentum/02 Using MOM Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/56 Momentum/02 Using MOM Indicator.php index bdb6d172b6..9bb85a088b 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/56 Momentum/02 Using MOM Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/56 Momentum/02 Using MOM Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/57 Momentum Percent/02 Using MOMP Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/57 Momentum Percent/02 Using MOMP Indicator.php index 82fe802c09..36b309b8c5 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/57 Momentum Percent/02 Using MOMP Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/57 Momentum Percent/02 Using MOMP Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/57 Momentum Percent/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/57 Momentum Percent/metadata.json index 6f03753e08..2073d9efcd 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/57 Momentum Percent/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/57 Momentum Percent/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the n-period percentage rate of change in a value using the following: 100 * (value_0 - value_n) / value_n This indicator yields the same results of RateOfChangePercent", + "description": "This indicator computes the n-period percentage rate of change in a value using the following: 100 * (value_0 - value_n) / valu...", "keywords": "momentum percent", "og:type": "website", - "og:description": "This indicator computes the n-period percentage rate of change in a value using the following: 100 * (value_0 - value_n) / value_n This indicator yields the same results of RateOfChangePercent", + "og:description": "This indicator computes the n-period percentage rate of change in a value using the following: 100 * (value_0 - value_n) / valu...", "og:title": "Momentum Percent - Using Indicators on QuantConnect.com", "og:site_name": "Momentum Percent - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/momentum-percent.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/58 Momersion Indicator/02 Using MOMERSION Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/58 Momersion Indicator/02 Using MOMERSION Indicator.php index b19e99c0cc..c5fd947dbd 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/58 Momersion Indicator/02 Using MOMERSION Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/58 Momersion Indicator/02 Using MOMERSION Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 10, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '10, 20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/58 Momersion Indicator/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/58 Momersion Indicator/metadata.json index 342916f34c..ab3ca3ba89 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/58 Momersion Indicator/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/58 Momersion Indicator/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "Oscillator indicator that measures momentum and mean-reversion over a specified period n. sourceHarris, Michael. \"Momersion Indicator.\" Price Action Lab., 13 Aug. 2015. Web. ", + "description": "Oscillator indicator that measures momentum and mean-reversion over a specified period n. sourceHarris, Michael. \"Momersion Indicator.\" Price Action Lab., 13 Aug. 2015. Web. ", + "og:description": "Oscillator indicator that measures momentum and mean-reversion over a specified period n. with the inclusion of two (upper and lower) channel lines that are distanced from the linear regression line by a user defined number of standard deviations. Reference: http://www.onlinetradingconcepts.com/TechnicalAnalysis/LinRegChannel.html", + "description": "The Regression Channel indicator extends the QuantConnect.Indicators.LeastSquaresMovingAverage with the inclusion of two (upper...", "keywords": "regression channel", "og:type": "website", - "og:description": "The Regression Channel indicator extends the with the inclusion of two (upper and lower) channel lines that are distanced from the linear regression line by a user defined number of standard deviations. Reference: http://www.onlinetradingconcepts.com/TechnicalAnalysis/LinRegChannel.html", + "og:description": "The Regression Channel indicator extends the QuantConnect.Indicators.LeastSquaresMovingAverage with the inclusion of two (upper...", "og:title": "Regression Channel - Using Indicators on QuantConnect.com", "og:site_name": "Regression Channel - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/regression-channel.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/70 Relative Daily Volume/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/70 Relative Daily Volume/metadata.json index 6fcd044224..1d6ab9fbef 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/70 Relative Daily Volume/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/70 Relative Daily Volume/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Relative Daily Volume indicator is an indicator that compares current cumulative volume to the cumulative volume for a given time of day, measured as a ratio. Current volume from open to current time of day / Average over the past x days from open to current time of day", + "description": "The Relative Daily Volume indicator is an indicator that compares current cumulative volume to the cumulative volume for a give...", "keywords": "relative daily volume", "og:type": "website", - "og:description": "The Relative Daily Volume indicator is an indicator that compares current cumulative volume to the cumulative volume for a given time of day, measured as a ratio. Current volume from open to current time of day / Average over the past x days from open to current time of day", + "og:description": "The Relative Daily Volume indicator is an indicator that compares current cumulative volume to the cumulative volume for a give...", "og:title": "Relative Daily Volume - Using Indicators on QuantConnect.com", "og:site_name": "Relative Daily Volume - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/relative-daily-volume.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/71 Relative Moving Average/02 Using RMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/71 Relative Moving Average/02 Using RMA Indicator.php index d3f56d63d5..71f46b08d6 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/71 Relative Moving Average/02 Using RMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/71 Relative Moving Average/02 Using RMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array("ShortAverage","MediumAverage","LongAverage"); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/71 Relative Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/71 Relative Moving Average/metadata.json index de148b22fd..a47c234219 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/71 Relative Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/71 Relative Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator represents the relative moving average indicator (RMA). RMA = SMA(3 x Period) - SMA(2 x Period) + SMA(1 x Period) per formula: https://www.hybrid-solutions.com/plugins/client-vtl-plugins/free/rma.html", + "description": "This indicator represents the relative moving average indicator (RMA). RMA = SMA(3 x Period) - SMA(2 x Period) + SMA(1 x Period...", "keywords": "relative moving average", "og:type": "website", - "og:description": "This indicator represents the relative moving average indicator (RMA). RMA = SMA(3 x Period) - SMA(2 x Period) + SMA(1 x Period) per formula: https://www.hybrid-solutions.com/plugins/client-vtl-plugins/free/rma.html", + "og:description": "This indicator represents the relative moving average indicator (RMA). RMA = SMA(3 x Period) - SMA(2 x Period) + SMA(1 x Period...", "og:title": "Relative Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "Relative Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/relative-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/72 Relative Strength Index/02 Using RSI Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/72 Relative Strength Index/02 Using RSI Indicator.php index cf7d391d2b..cfb66c361f 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/72 Relative Strength Index/02 Using RSI Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/72 Relative Strength Index/02 Using RSI Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 14'; $properties = array("AverageLoss","AverageGain"); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '14'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = True; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/72 Relative Strength Index/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/72 Relative Strength Index/metadata.json index 385c8ee2f6..400f06dde6 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/72 Relative Strength Index/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/72 Relative Strength Index/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator represents the Relative Strength Index (RSI) developed by K. Welles Wilder. You can optionally specified a different moving average type to be used in the computation", + "description": "This indicator represents the Relative Strength Index (RSI) developed by K. Welles Wilder. You can optionally specified a diffe...", "keywords": "relative strength index", "og:type": "website", - "og:description": "This indicator represents the Relative Strength Index (RSI) developed by K. Welles Wilder. You can optionally specified a different moving average type to be used in the computation", + "og:description": "This indicator represents the Relative Strength Index (RSI) developed by K. Welles Wilder. You can optionally specified a diffe...", "og:title": "Relative Strength Index - Using Indicators on QuantConnect.com", "og:site_name": "Relative Strength Index - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/relative-strength-index.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/73 Relative Vigor Index/02 Using RVI Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/73 Relative Vigor Index/02 Using RVI Indicator.php index a8cd17cc7c..c9fe94379f 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/73 Relative Vigor Index/02 Using RVI Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/73 Relative Vigor Index/02 Using RVI Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20, MovingAverageType.Simple'; $properties = array("Signal"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20, MovingAverageType.Simple'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = True; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/73 Relative Vigor Index/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/73 Relative Vigor Index/metadata.json index 28dd6f4d79..44ed51814c 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/73 Relative Vigor Index/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/73 Relative Vigor Index/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "The Relative Vigor Index (RVI) compares the ratio of the closing price of a security to its trading range. For illustration, let: a = Close\u2212Openb = Close\u2212Open of One Bar Prior to ac = Close\u2212Open of One Bar Prior to bd = Close\u2212Open of One Bar Prior to ce = High\u2212Low of Bar af = High\u2212Low of Bar bg = High\u2212Low of Bar ch = High\u2212Low of Bar d Then let (a+2*(b+c)+d)/6 be NUM and (e+2*(f+g)+h)/6 be DENOM. RVI = SMA(NUM)/SMA(DENOM) for a specified period. https://www.investopedia.com/terms/r/relative_vigor_index.asp", + "description": "The Relative Vigor Index (RVI) compares the ratio of the closing price of a security to its trading range. For illustration, le...", "keywords": "relative vigor index", "og:type": "website", - "og:description": "The Relative Vigor Index (RVI) compares the ratio of the closing price of a security to its trading range. For illustration, let: a = Close\u2212Openb = Close\u2212Open of One Bar Prior to ac = Close\u2212Open of One Bar Prior to bd = Close\u2212Open of One Bar Prior to ce = High\u2212Low of Bar af = High\u2212Low of Bar bg = High\u2212Low of Bar ch = High\u2212Low of Bar d Then let (a+2*(b+c)+d)/6 be NUM and (e+2*(f+g)+h)/6 be DENOM. RVI = SMA(NUM)/SMA(DENOM) for a specified period. https://www.investopedia.com/terms/r/relative_vigor_index.asp", + "og:description": "The Relative Vigor Index (RVI) compares the ratio of the closing price of a security to its trading range. For illustration, le...", "og:title": "Relative Vigor Index - Using Indicators on QuantConnect.com", "og:site_name": "Relative Vigor Index - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/relative-vigor-index.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/74 Schaff Trend Cycle/02 Using STC Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/74 Schaff Trend Cycle/02 Using STC Indicator.php index cb0253c261..89a4471240 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/74 Schaff Trend Cycle/02 Using STC Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/74 Schaff Trend Cycle/02 Using STC Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 5, 10, 20, MovingAverageType.Exponential'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '5, 10, 20, MovingAverageType.Exponential'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = True; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/75 Sharpe Ratio/02 Using SR Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/75 Sharpe Ratio/02 Using SR Indicator.php index 24a76ab63f..fea9fc10d6 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/75 Sharpe Ratio/02 Using SR Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/75 Sharpe Ratio/02 Using SR Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 22, 0.03'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '22, 0.03'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/75 Sharpe Ratio/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/75 Sharpe Ratio/metadata.json index 11287867e3..ed8f486378 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/75 Sharpe Ratio/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/75 Sharpe Ratio/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "Calculation of the Sharpe Ratio (SR) developed by William F. Sharpe. Reference: https://www.investopedia.com/articles/07/sharpe_ratio.asp Formula: S(x) = (Rx - Rf) / stdDev(Rx) Where: S(x) - sharpe ratio of x Rx - average rate of return for x Rf - risk-free rate", + "description": "Calculation of the Sharpe Ratio (SR) developed by William F. Sharpe. Reference: https://www.investopedia.com/articles/07/sharpe...", "keywords": "sharpe ratio", "og:type": "website", - "og:description": "Calculation of the Sharpe Ratio (SR) developed by William F. Sharpe. Reference: https://www.investopedia.com/articles/07/sharpe_ratio.asp Formula: S(x) = (Rx - Rf) / stdDev(Rx) Where: S(x) - sharpe ratio of x Rx - average rate of return for x Rf - risk-free rate", + "og:description": "Calculation of the Sharpe Ratio (SR) developed by William F. Sharpe. Reference: https://www.investopedia.com/articles/07/sharpe...", "og:title": "Sharpe Ratio - Using Indicators on QuantConnect.com", "og:site_name": "Sharpe Ratio - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/sharpe-ratio.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/76 Simple Moving Average/02 Using SMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/76 Simple Moving Average/02 Using SMA Indicator.php index 5bc60476da..3f5f11dead 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/76 Simple Moving Average/02 Using SMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/76 Simple Moving Average/02 Using SMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array("RollingSum"); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/77 Sortino Ratio/02 Using SORTINO Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/77 Sortino Ratio/02 Using SORTINO Indicator.php index 8b521606a8..5873dc9e5c 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/77 Sortino Ratio/02 Using SORTINO Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/77 Sortino Ratio/02 Using SORTINO Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 22'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '22'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/77 Sortino Ratio/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/77 Sortino Ratio/metadata.json index 2c7afbe6d2..3b9ffe2409 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/77 Sortino Ratio/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/77 Sortino Ratio/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "Calculation of the Sortino Ratio, a modification of the . Reference: https://www.cmegroup.com/education/files/rr-sortino-a-sharper-ratio.pdf Formula: S(x) = (R - T) / TDD Where: S(x) - Sortino ratio of x R - the average period return T - the target or required rate of return for the investment strategy under consideration. In Sortino\u2019s early work, T was originally known as the minimum acceptable return, or MAR. In his more recent work, MAR is now referred to as the Desired Target Return. TDD - the target downside deviation. ", + "description": "Calculation of the Sortino Ratio, a modification of the QuantConnect.Indicators.SharpeRatio. Reference: https://www.cmegroup.co...", "keywords": "sortino ratio", "og:type": "website", - "og:description": "Calculation of the Sortino Ratio, a modification of the . Reference: https://www.cmegroup.com/education/files/rr-sortino-a-sharper-ratio.pdf Formula: S(x) = (R - T) / TDD Where: S(x) - Sortino ratio of x R - the average period return T - the target or required rate of return for the investment strategy under consideration. In Sortino\u2019s early work, T was originally known as the minimum acceptable return, or MAR. In his more recent work, MAR is now referred to as the Desired Target Return. TDD - the target downside deviation. ", + "og:description": "Calculation of the Sortino Ratio, a modification of the QuantConnect.Indicators.SharpeRatio. Reference: https://www.cmegroup.co...", "og:title": "Sortino Ratio - Using Indicators on QuantConnect.com", "og:site_name": "Sortino Ratio - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/sortino-ratio.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/78 Standard Deviation/02 Using STD Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/78 Standard Deviation/02 Using STD Indicator.php index b068ff10b5..3a4169f6fe 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/78 Standard Deviation/02 Using STD Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/78 Standard Deviation/02 Using STD Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 22'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '22'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/79 Stochastic/02 Using STO Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/79 Stochastic/02 Using STO Indicator.php index eae1b415ee..c1d1c1bc3e 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/79 Stochastic/02 Using STO Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/79 Stochastic/02 Using STO Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20, 10, 20'; $properties = array("FastStoch","StochK","StochD"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20, 10, 20'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/79 Stochastic/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/79 Stochastic/metadata.json index b00067c69f..0fe8f625a2 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/79 Stochastic/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/79 Stochastic/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Slow Stochastics %K and %D. The Fast Stochastics %K is is computed by (Current Close Price - Lowest Price of given Period) / (Highest Price of given Period - Lowest Price of given Period) multiplied by 100. Once the Fast Stochastics %K is calculated the Slow Stochastic %K is calculated by the average/smoothed price of of the Fast %K with the given period. The Slow Stochastics %D is then derived from the Slow Stochastics %K with the given period.", + "description": "This indicator computes the Slow Stochastics %K and %D. The Fast Stochastics %K is is computed by (Current Close Price - Lowest...", "keywords": "stochastic", "og:type": "website", - "og:description": "This indicator computes the Slow Stochastics %K and %D. The Fast Stochastics %K is is computed by (Current Close Price - Lowest Price of given Period) / (Highest Price of given Period - Lowest Price of given Period) multiplied by 100. Once the Fast Stochastics %K is calculated the Slow Stochastic %K is calculated by the average/smoothed price of of the Fast %K with the given period. The Slow Stochastics %D is then derived from the Slow Stochastics %K with the given period.", + "og:description": "This indicator computes the Slow Stochastics %K and %D. The Fast Stochastics %K is is computed by (Current Close Price - Lowest...", "og:title": "Stochastic - Using Indicators on QuantConnect.com", "og:site_name": "Stochastic - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/stochastic.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/80 Sum/02 Using SUM Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/80 Sum/02 Using SUM Indicator.php index bc439f7cc1..3198d8a630 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/80 Sum/02 Using SUM Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/80 Sum/02 Using SUM Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/81 Super Trend/02 Using STR Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/81 Super Trend/02 Using STR Indicator.php index 5e01a980c7..7ca049bf6d 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/81 Super Trend/02 Using STR Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/81 Super Trend/02 Using STR Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20, 2, MovingAverageType.Wilders'; $properties = array(); $otherProperties = array("BasicUpperBand","BasicLowerBand","CurrentTrailingUpperBand","CurrentTrailingLowerBand"); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20, 2, MovingAverageType.Wilders'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = True; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/81 Super Trend/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/81 Super Trend/metadata.json index 4a261fd6e3..a60281c69a 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/81 Super Trend/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/81 Super Trend/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "Super trend indicator. Formula can be found here via the excel file: https://tradingtuitions.com/supertrend-indicator-excel-sheet-with-realtime-buy-sell-signals/", + "description": "Super trend indicator. Formula can be found here via the excel file: https://tradingtuitions.com/supertrend-indicator-excel-she...", "keywords": "super trend", "og:type": "website", - "og:description": "Super trend indicator. Formula can be found here via the excel file: https://tradingtuitions.com/supertrend-indicator-excel-sheet-with-realtime-buy-sell-signals/", + "og:description": "Super trend indicator. Formula can be found here via the excel file: https://tradingtuitions.com/supertrend-indicator-excel-she...", "og:title": "Super Trend - Using Indicators on QuantConnect.com", "og:site_name": "Super Trend - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/super-trend.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/82 Swiss Army Knife/02 Using SWISS Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/82 Swiss Army Knife/02 Using SWISS Indicator.php index 80199467f9..0fe1ae70f0 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/82 Swiss Army Knife/02 Using SWISS Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/82 Swiss Army Knife/02 Using SWISS Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20, 0.2, SwissArmyKnifeTool.Gauss'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20, 0.2, SwissArmyKnifeTool.Gauss'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/83 T3 Moving Average/02 Using T3 Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/83 T3 Moving Average/02 Using T3 Indicator.php index 0ac88330ea..ea1adc8d12 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/83 T3 Moving Average/02 Using T3 Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/83 T3 Moving Average/02 Using T3 Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 30, 0.7'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '30, 0.7'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/83 T3 Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/83 T3 Moving Average/metadata.json index e69bbfae50..0a862c86c3 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/83 T3 Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/83 T3 Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the T3 Moving Average (T3). The T3 Moving Average is calculated with the following formula: EMA1(x, Period) = EMA(x, Period) EMA2(x, Period) = EMA(EMA1(x, Period),Period) GD(x, Period, volumeFactor) = (EMA1(x, Period)*(1+volumeFactor)) - (EMA2(x, Period)* volumeFactor) T3 = GD(GD(GD(t, Period, volumeFactor), Period, volumeFactor), Period, volumeFactor);", + "description": "This indicator computes the T3 Moving Average (T3). The T3 Moving Average is calculated with the following formula: EMA1(x, Per...", "keywords": "t3 moving average", "og:type": "website", - "og:description": "This indicator computes the T3 Moving Average (T3). The T3 Moving Average is calculated with the following formula: EMA1(x, Period) = EMA(x, Period) EMA2(x, Period) = EMA(EMA1(x, Period),Period) GD(x, Period, volumeFactor) = (EMA1(x, Period)*(1+volumeFactor)) - (EMA2(x, Period)* volumeFactor) T3 = GD(GD(GD(t, Period, volumeFactor), Period, volumeFactor), Period, volumeFactor);", + "og:description": "This indicator computes the T3 Moving Average (T3). The T3 Moving Average is calculated with the following formula: EMA1(x, Per...", "og:title": "T3 Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "T3 Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/t3-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/84 Target Downside Deviation/02 Using TDD Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/84 Target Downside Deviation/02 Using TDD Indicator.php index 246e921ccd..7b93e74b71 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/84 Target Downside Deviation/02 Using TDD Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/84 Target Downside Deviation/02 Using TDD Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 50'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = 'TargetDownsideDeviation(50), RateOfChange(1)'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/84 Target Downside Deviation/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/84 Target Downside Deviation/metadata.json index df4b25858f..3eb15a52ae 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/84 Target Downside Deviation/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/84 Target Downside Deviation/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the n-period target downside deviation. The target downside deviation is defined as the root-mean-square, or RMS, of the deviations of the realized return\u2019s underperformance from the target return where all returns above the target return are treated as underperformance of 0. Reference: https://www.cmegroup.com/education/files/rr-sortino-a-sharper-ratio.pdf", + "description": "This indicator computes the n-period target downside deviation. The target downside deviation is defined as the root-mean-squar...", "keywords": "target downside deviation", "og:type": "website", - "og:description": "This indicator computes the n-period target downside deviation. The target downside deviation is defined as the root-mean-square, or RMS, of the deviations of the realized return\u2019s underperformance from the target return where all returns above the target return are treated as underperformance of 0. Reference: https://www.cmegroup.com/education/files/rr-sortino-a-sharper-ratio.pdf", + "og:description": "This indicator computes the n-period target downside deviation. The target downside deviation is defined as the root-mean-squar...", "og:title": "Target Downside Deviation - Using Indicators on QuantConnect.com", "og:site_name": "Target Downside Deviation - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/target-downside-deviation.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/86 Triangular Moving Average/02 Using TRIMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/86 Triangular Moving Average/02 Using TRIMA Indicator.php index 6f7e4fc8df..41e6a05645 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/86 Triangular Moving Average/02 Using TRIMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/86 Triangular Moving Average/02 Using TRIMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/86 Triangular Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/86 Triangular Moving Average/metadata.json index e4d1973457..a0b8dbd862 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/86 Triangular Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/86 Triangular Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Triangular Moving Average (TRIMA). The Triangular Moving Average is calculated with the following formula: (1) When the period is even, TRIMA(x,period)=SMA(SMA(x,period/2),(period/2)+1) (2) When the period is odd, TRIMA(x,period)=SMA(SMA(x,(period+1)/2),(period+1)/2)", + "description": "This indicator computes the Triangular Moving Average (TRIMA). The Triangular Moving Average is calculated with the following f...", "keywords": "triangular moving average", "og:type": "website", - "og:description": "This indicator computes the Triangular Moving Average (TRIMA). The Triangular Moving Average is calculated with the following formula: (1) When the period is even, TRIMA(x,period)=SMA(SMA(x,period/2),(period/2)+1) (2) When the period is odd, TRIMA(x,period)=SMA(SMA(x,(period+1)/2),(period+1)/2)", + "og:description": "This indicator computes the Triangular Moving Average (TRIMA). The Triangular Moving Average is calculated with the following f...", "og:title": "Triangular Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "Triangular Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/triangular-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/87 Triple Exponential Moving Average/02 Using TEMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/87 Triple Exponential Moving Average/02 Using TEMA Indicator.php index db1dfd6e2f..82fec05084 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/87 Triple Exponential Moving Average/02 Using TEMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/87 Triple Exponential Moving Average/02 Using TEMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/87 Triple Exponential Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/87 Triple Exponential Moving Average/metadata.json index 33bf8078bb..3ec810903c 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/87 Triple Exponential Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/87 Triple Exponential Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Triple Exponential Moving Average (TEMA). The Triple Exponential Moving Average is calculated with the following formula: EMA1 = EMA(t,period) EMA2 = EMA(EMA(t,period),period) EMA3 = EMA(EMA(EMA(t,period),period),period) TEMA = 3 * EMA1 - 3 * EMA2 + EMA3", + "description": "This indicator computes the Triple Exponential Moving Average (TEMA). The Triple Exponential Moving Average is calculated with ...", "keywords": "triple exponential moving average", "og:type": "website", - "og:description": "This indicator computes the Triple Exponential Moving Average (TEMA). The Triple Exponential Moving Average is calculated with the following formula: EMA1 = EMA(t,period) EMA2 = EMA(EMA(t,period),period) EMA3 = EMA(EMA(EMA(t,period),period),period) TEMA = 3 * EMA1 - 3 * EMA2 + EMA3", + "og:description": "This indicator computes the Triple Exponential Moving Average (TEMA). The Triple Exponential Moving Average is calculated with ...", "og:title": "Triple Exponential Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "Triple Exponential Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/triple-exponential-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/88 Trix/02 Using TRIX Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/88 Trix/02 Using TRIX Indicator.php index 9f74d32c2c..80f33f2842 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/88 Trix/02 Using TRIX Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/88 Trix/02 Using TRIX Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/88 Trix/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/88 Trix/metadata.json index 68178cc071..9bfdfb432f 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/88 Trix/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/88 Trix/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the TRIX (1-period ROC of a Triple EMA) The TRIX is calculated as explained here: http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:trix", + "description": "This indicator computes the TRIX (1-period ROC of a Triple EMA) The TRIX is calculated as explained here: http://stockcharts.co...", "keywords": "trix", "og:type": "website", - "og:description": "This indicator computes the TRIX (1-period ROC of a Triple EMA) The TRIX is calculated as explained here: http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:trix", + "og:description": "This indicator computes the TRIX (1-period ROC of a Triple EMA) The TRIX is calculated as explained here: http://stockcharts.co...", "og:title": "Trix - Using Indicators on QuantConnect.com", "og:site_name": "Trix - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/trix.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/89 True Range/02 Using TR Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/89 True Range/02 Using TR Indicator.php index 325be1abfb..4db02dfdc7 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/89 True Range/02 Using TR Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/89 True Range/02 Using TR Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = ''; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/89 True Range/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/89 True Range/metadata.json index 9f456d2daf..e0da914f91 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/89 True Range/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/89 True Range/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the True Range (TR). The True Range is the greatest of the following values: value1 = distance from today's high to today's low. value2 = distance from yesterday's close to today's high. value3 = distance from yesterday's close to today's low.", + "description": "This indicator computes the True Range (TR). The True Range is the greatest of the following values: value1 = distance from tod...", "keywords": "true range", "og:type": "website", - "og:description": "This indicator computes the True Range (TR). The True Range is the greatest of the following values: value1 = distance from today's high to today's low. value2 = distance from yesterday's close to today's high. value3 = distance from yesterday's close to today's low.", + "og:description": "This indicator computes the True Range (TR). The True Range is the greatest of the following values: value1 = distance from tod...", "og:title": "True Range - Using Indicators on QuantConnect.com", "og:site_name": "True Range - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/true-range.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/90 True Strength Index/02 Using TSI Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/90 True Strength Index/02 Using TSI Indicator.php index 8328a15509..b4252b4f63 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/90 True Strength Index/02 Using TSI Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/90 True Strength Index/02 Using TSI Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 25, 13, 7, MovingAverageType.Exponential'; $properties = array("Signal"); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '25, 13, 7, MovingAverageType.Exponential'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = True; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/90 True Strength Index/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/90 True Strength Index/metadata.json index fdb93468a1..0f143894a2 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/90 True Strength Index/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/90 True Strength Index/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the True Strength Index (TSI). The True Strength Index is calculated as explained here: https://school.stockcharts.com/doku.php?id=technical_indicators:True_strength_index Briefly, the calculation has three steps: 1. Smooth the momentum and the absolute momentum by getting an EMA of them (typically of period 25) 2. Double smooth the momentum and the absolute momentum by getting an EMA of their EMA (typically of period 13) 3. The TSI formula itself: divide the double-smoothed momentum over the double-smoothed absolute momentum and multiply by 100 The signal is typically a 7-to-12-EMA of the TSI.", + "description": "This indicator computes the True Strength Index (TSI). The True Strength Index is calculated as explained here: https://school....", "keywords": "true strength index", "og:type": "website", - "og:description": "This indicator computes the True Strength Index (TSI). The True Strength Index is calculated as explained here: https://school.stockcharts.com/doku.php?id=technical_indicators:True_strength_index Briefly, the calculation has three steps: 1. Smooth the momentum and the absolute momentum by getting an EMA of them (typically of period 25) 2. Double smooth the momentum and the absolute momentum by getting an EMA of their EMA (typically of period 13) 3. The TSI formula itself: divide the double-smoothed momentum over the double-smoothed absolute momentum and multiply by 100 The signal is typically a 7-to-12-EMA of the TSI.", + "og:description": "This indicator computes the True Strength Index (TSI). The True Strength Index is calculated as explained here: https://school....", "og:title": "True Strength Index - Using Indicators on QuantConnect.com", "og:site_name": "True Strength Index - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/true-strength-index.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/91 Ultimate Oscillator/02 Using ULTOSC Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/91 Ultimate Oscillator/02 Using ULTOSC Indicator.php index 990dac4804..b456457d4f 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/91 Ultimate Oscillator/02 Using ULTOSC Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/91 Ultimate Oscillator/02 Using ULTOSC Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 5, 10, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '5, 10, 20'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/91 Ultimate Oscillator/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/91 Ultimate Oscillator/metadata.json index b605331388..5b84cd1981 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/91 Ultimate Oscillator/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/91 Ultimate Oscillator/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator computes the Ultimate Oscillator (ULTOSC) The Ultimate Oscillator is calculated as explained here: http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:ultimate_oscillator", + "description": "This indicator computes the Ultimate Oscillator (ULTOSC) The Ultimate Oscillator is calculated as explained here: http://stockc...", "keywords": "ultimate oscillator", "og:type": "website", - "og:description": "This indicator computes the Ultimate Oscillator (ULTOSC) The Ultimate Oscillator is calculated as explained here: http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:ultimate_oscillator", + "og:description": "This indicator computes the Ultimate Oscillator (ULTOSC) The Ultimate Oscillator is calculated as explained here: http://stockc...", "og:title": "Ultimate Oscillator - Using Indicators on QuantConnect.com", "og:site_name": "Ultimate Oscillator - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/ultimate-oscillator.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/92 Variance/02 Using VAR Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/92 Variance/02 Using VAR Indicator.php index 03e71958ff..f756bb0050 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/92 Variance/02 Using VAR Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/92 Variance/02 Using VAR Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/94 Volume Weighted Average Price Indicator/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/94 Volume Weighted Average Price Indicator/metadata.json index fdda682f65..14ced16882 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/94 Volume Weighted Average Price Indicator/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/94 Volume Weighted Average Price Indicator/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "Volume Weighted Average Price (VWAP) Indicator: It is calculated by adding up the dollars traded for every transaction (price multiplied by number of shares traded) and then dividing by the total shares traded for the day.", + "description": "Volume Weighted Average Price (VWAP) Indicator: It is calculated by adding up the dollars traded for every transaction (price m...", "keywords": "volume weighted average price indicator", "og:type": "website", - "og:description": "Volume Weighted Average Price (VWAP) Indicator: It is calculated by adding up the dollars traded for every transaction (price multiplied by number of shares traded) and then dividing by the total shares traded for the day.", + "og:description": "Volume Weighted Average Price (VWAP) Indicator: It is calculated by adding up the dollars traded for every transaction (price m...", "og:title": "Volume Weighted Average Price Indicator - Using Indicators on QuantConnect.com", "og:site_name": "Volume Weighted Average Price Indicator - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/volume-weighted-average-price-indicator.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/95 Wilder Accumulative Swing Index/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/95 Wilder Accumulative Swing Index/metadata.json index a7ffcbb4ce..3c5c110fe9 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/95 Wilder Accumulative Swing Index/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/95 Wilder Accumulative Swing Index/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator calculates the Accumulative Swing Index (ASI) as defined by Welles Wilder in his book 'New Concepts in Technical Trading Systems'. ASI\u209c = ASI\u209c\u208b\u2081 + SI\u209c Where: ASI\u209c\u208b\u2081 The for the previous period. SI\u209c The calculated for the current period. ", + "description": "This indicator calculates the Accumulative Swing Index (ASI) as defined by Welles Wilder in his book 'New Concepts in Technical...", "keywords": "wilder accumulative swing index", "og:type": "website", - "og:description": "This indicator calculates the Accumulative Swing Index (ASI) as defined by Welles Wilder in his book 'New Concepts in Technical Trading Systems'. ASI\u209c = ASI\u209c\u208b\u2081 + SI\u209c Where: ASI\u209c\u208b\u2081 The for the previous period. SI\u209c The calculated for the current period. ", + "og:description": "This indicator calculates the Accumulative Swing Index (ASI) as defined by Welles Wilder in his book 'New Concepts in Technical...", "og:title": "Wilder Accumulative Swing Index - Using Indicators on QuantConnect.com", "og:site_name": "Wilder Accumulative Swing Index - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/wilder-accumulative-swing-index.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/96 Wilder Moving Average/02 Using WWMA Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/96 Wilder Moving Average/02 Using WWMA Indicator.php index 95f70404fb..a9c82aae63 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/96 Wilder Moving Average/02 Using WWMA Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/96 Wilder Moving Average/02 Using WWMA Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array(); $otherProperties = array(); -$updateParameterType = 'time/number pair, or an IndicatorDataPoint'; +$updateParameterType = 'time/number pair or an IndicatorDataPoint'; $constructorArguments = '20'; $updateParameterValue = 'bar.EndTime, bar.Close'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/96 Wilder Moving Average/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/96 Wilder Moving Average/metadata.json index ff59e81d55..a46ed265a4 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/96 Wilder Moving Average/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/96 Wilder Moving Average/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator represents the moving average indicator defined by Welles Wilder in his book: New Concepts in Technical Trading Systems.", + "description": "This indicator represents the moving average indicator defined by Welles Wilder in his book: New Concepts in Technical Trading ...", "keywords": "wilder moving average", "og:type": "website", - "og:description": "This indicator represents the moving average indicator defined by Welles Wilder in his book: New Concepts in Technical Trading Systems.", + "og:description": "This indicator represents the moving average indicator defined by Welles Wilder in his book: New Concepts in Technical Trading ...", "og:title": "Wilder Moving Average - Using Indicators on QuantConnect.com", "og:site_name": "Wilder Moving Average - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/wilder-moving-average.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/97 Wilder Swing Index/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/97 Wilder Swing Index/metadata.json index 919bf41828..eed54b959e 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/97 Wilder Swing Index/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/97 Wilder Swing Index/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "This indicator calculates the Swing Index (SI) as defined by Welles Wilder in his book 'New Concepts in Technical Trading Systems'. SI\u209c = 50 * ( N / R ) * ( K / T ) Where: N Equals: C\u209c - C\u209c\u208b\u2081 + 0.5 * (C\u209c - O\u209c) + 0.25 * (C\u209c\u208b\u2081 - O\u209c\u208b\u2081) See R Found by selecting the expression with the largest value and then using the corresponding formula. Expression => Formula |H\u209c - C\u209c\u208b\u2081| => |H\u209c - C\u209c| - 0.5 * |L\u209c - C\u209c\u208b\u2081| + 0.25 * |C\u209c\u208b\u2081 - O\u209c\u208b\u2081| |L\u209c - C\u209c\u208b\u2081| => |L\u209c - C\u209c| - 0.5 * |H\u209c - C\u209c\u208b\u2081| + 0.25 * |C\u209c\u208b\u2081 - O\u209c\u208b\u2081| |H\u209c - L\u209c| => |H\u209c - L\u209c\u208b\u2081| + 0.25 * |C\u209c\u208b\u2081 - O\u209c\u208b\u2081| See K Found by selecting the larger of the two expressions: |H\u209c - C\u209c\u208b\u2081|, |L\u209c - C\u209c\u208b\u2081| See T The limit move, or the maximum change in price during the time period for the bar. Passed as limitMove via the constructor. See ", + "description": "This indicator calculates the Swing Index (SI) as defined by Welles Wilder in his book 'New Concepts in Technical Trading Syste...", "keywords": "wilder swing index", "og:type": "website", - "og:description": "This indicator calculates the Swing Index (SI) as defined by Welles Wilder in his book 'New Concepts in Technical Trading Systems'. SI\u209c = 50 * ( N / R ) * ( K / T ) Where: N Equals: C\u209c - C\u209c\u208b\u2081 + 0.5 * (C\u209c - O\u209c) + 0.25 * (C\u209c\u208b\u2081 - O\u209c\u208b\u2081) See R Found by selecting the expression with the largest value and then using the corresponding formula. Expression => Formula |H\u209c - C\u209c\u208b\u2081| => |H\u209c - C\u209c| - 0.5 * |L\u209c - C\u209c\u208b\u2081| + 0.25 * |C\u209c\u208b\u2081 - O\u209c\u208b\u2081| |L\u209c - C\u209c\u208b\u2081| => |L\u209c - C\u209c| - 0.5 * |H\u209c - C\u209c\u208b\u2081| + 0.25 * |C\u209c\u208b\u2081 - O\u209c\u208b\u2081| |H\u209c - L\u209c| => |H\u209c - L\u209c\u208b\u2081| + 0.25 * |C\u209c\u208b\u2081 - O\u209c\u208b\u2081| See K Found by selecting the larger of the two expressions: |H\u209c - C\u209c\u208b\u2081|, |L\u209c - C\u209c\u208b\u2081| See T The limit move, or the maximum change in price during the time period for the bar. Passed as limitMove via the constructor. See ", + "og:description": "This indicator calculates the Swing Index (SI) as defined by Welles Wilder in his book 'New Concepts in Technical Trading Syste...", "og:title": "Wilder Swing Index - Using Indicators on QuantConnect.com", "og:site_name": "Wilder Swing Index - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/wilder-swing-index.png" diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/98 Williams Percent R/02 Using WILR Indicator.php b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/98 Williams Percent R/02 Using WILR Indicator.php index 9c42000e9b..b051aca65f 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/98 Williams Percent R/02 Using WILR Indicator.php +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/98 Williams Percent R/02 Using WILR Indicator.php @@ -9,7 +9,7 @@ $helperArguments = 'symbol, 20'; $properties = array("Maximum","Minimum"); $otherProperties = array(); -$updateParameterType = 'a TradeBar, or QuoteBar'; +$updateParameterType = 'a TradeBar or QuoteBar'; $constructorArguments = '20'; $updateParameterValue = 'bar'; $hasMovingAverageTypeParameter = False; diff --git a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/98 Williams Percent R/metadata.json b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/98 Williams Percent R/metadata.json index 4164825423..995c2bd919 100644 --- a/03 Writing Algorithms/28 Indicators/01 Supported Indicators/98 Williams Percent R/metadata.json +++ b/03 Writing Algorithms/28 Indicators/01 Supported Indicators/98 Williams Percent R/metadata.json @@ -1,10 +1,10 @@ { "type": "metadata", "values": { - "description": "Williams %R, or just %R, is the current closing price in relation to the high and low of the past N days (for a given N). The value of this indicator fluctuates between -100 and 0. The symbol is said to be oversold when the oscillator is below -80%, and overbought when the oscillator is above -20%.", + "description": "Williams %R, or just %R, is the current closing price in relation to the high and low of the past N days (for a given N). The v...", "keywords": "williams percent r", "og:type": "website", - "og:description": "Williams %R, or just %R, is the current closing price in relation to the high and low of the past N days (for a given N). The value of this indicator fluctuates between -100 and 0. The symbol is said to be oversold when the oscillator is below -80%, and overbought when the oscillator is above -20%.", + "og:description": "Williams %R, or just %R, is the current closing price in relation to the high and low of the past N days (for a given N). The v...", "og:title": "Williams Percent R - Using Indicators on QuantConnect.com", "og:site_name": "Williams Percent R - Using Indicators on QuantConnect.com", "og:image": "https://cdn.quantconnect.com/docs/i/writing-algorithms/indicators/supported-indicators/williams-percent-r.png" diff --git a/Resources/indicators/IndicatorImageGenerator.py b/Resources/indicators/IndicatorImageGenerator.py index 59787e0159..ef0f9ccee7 100644 --- a/Resources/indicators/IndicatorImageGenerator.py +++ b/Resources/indicators/IndicatorImageGenerator.py @@ -547,10 +547,22 @@ def Initialize(self): 'title' : 'TRIN([symbol, Symbol.Create("QQQ", SecurityType.Equity, Market.USA)])', 'columns' : [] }, + 'alpha': + { + 'code': Alpha("", Symbol.Create("QQQ", SecurityType.Equity, Market.USA), Symbol.Create("SPY", SecurityType.Equity, Market.USA), 20), + 'title' : 'A(symbol, reference, 20)', + 'columns' : [] + }, 'beta': { - 'code': Beta("", 20, Symbol.Create("QQQ", SecurityType.Equity, Market.USA), Symbol.Create("SPY", SecurityType.Equity, Market.USA)), - 'title' : 'B(Symbol.Create("QQQ", SecurityType.Equity, Market.USA), symbol, 20)', + 'code': Beta("", Symbol.Create("QQQ", SecurityType.Equity, Market.USA), Symbol.Create("SPY", SecurityType.Equity, Market.USA), 20), + 'title' : 'B(symbol, reference, 20)', + 'columns' : [] + }, + 'correlation': + { + 'code': Correlation("", Symbol.Create("QQQ", SecurityType.Equity, Market.USA), Symbol.Create("SPY", SecurityType.Equity, Market.USA), 20, correlationType=CorrelationType.Pearson), + 'title' : 'C(symbol, reference, 20, correlationType=CorrelationType.Pearson)', 'columns' : [] }, 'filtered-identity': @@ -658,6 +670,42 @@ def Initialize(self): df = pd.DataFrame(values, index=index, columns=["advancedeclinevolumeratio"]) generate("advance-decline-volume-ratio", indicator, df) + index, values = [], [] + indicator = special_indicators.get('alpha') + indicator['code'] = qb.A("SPY","QQQ", 1, 20) + for bars in history: + indicator['code'].Update(bars.get("SPY")) + indicator['code'].Update(bars.get("QQQ")) + if indicator['code'].IsReady: + index.append(bars.Time) + values.append(indicator['code'].Current.Value) + df = pd.DataFrame(values, index=index, columns=["alpha"]) + generate("alpha", indicator, df) + + index, values = [], [] + indicator = special_indicators.get('beta') + indicator['code'] = qb.B("SPY","QQQ", 20) + for bars in history: + indicator['code'].Update(bars.get("SPY")) + indicator['code'].Update(bars.get("QQQ")) + if indicator['code'].IsReady: + index.append(bars.Time) + values.append(indicator['code'].Current.Value) + df = pd.DataFrame(values, index=index, columns=["beta"]) + generate("beta", indicator, df) + + index, values = [], [] + indicator = special_indicators.get('correlation') + indicator['code'] = qb.C("SPY","QQQ", 20, CorrelationType.Pearson) + for bars in history: + indicator['code'].Update(bars.get("SPY")) + indicator['code'].Update(bars.get("QQQ")) + if indicator['code'].IsReady: + index.append(bars.Time) + values.append(indicator['code'].Current.Value) + df = pd.DataFrame(values, index=index, columns=["correlation"]) + generate("correlation", indicator, df) + index, values = [], [] indicator = special_indicators.get('arms-index') indicator['code'] = qb.TRIN(["SPY","QQQ"]) diff --git a/Resources/indicators/images/alpha.png b/Resources/indicators/images/alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..25584102cbad9926e154fbc733139d0390fe3f77 GIT binary patch literal 75270 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

+j~ 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 z%0AZ_%;U%Mtea;^M4^jj-Z=I!Ok~cWZ1+q&_f{2!87W_#&J5xjdd$io9Jek~gM^$eV)Od@^$tO(r54l6i ztdSY@F%*YS>mjUS+?@kCrOOl^#agtBq!s*khZQyrc+QPv%Dc58zFH+y8WiU&Sj3~ zp@G>=QQ+q*#{GNIj-~p(n%0Bv@?}q{<-yK%bxX&nA-TPAOrQIo&B~(Da<-6Z#FUa( z3h|8XZ`GLsS&`a>bGX_}O@V6&eg|s`DF@tq+LOvvKf{&6z%ma=ld`Kx2WWAfP_{9) zW!kIy;sQebN$E((E+-R0gE}G}RISUy_(|qT*RimWW^XweysMqomWJ*a;7K@32EPO1 zF77{Z_Y{~%v!VNBhV_88O@_LSHqYpb_4fy*SSYca167M*LZssFE@}2d`G{tvR5IcK zd18yO)O#V#aMfWV9+&sE;mY>BXHOJD`DBQTAB`uuJsoSn=PFQlSkFdZS+19nl}J}e zL>A`*&hTR)lm<84Uj(!Y(6goO zUnANo$iiwFKzO?v&0cRFjeTVopAPb-ISyVOq;c{Jb5YJ<5rzeN@Yh-gFBV4Bs4QAEva~7Q28%xBso($o2pgqG|l_&K-;!}@s2a0{~ zR~Jv8ZJGz^;|-9)`m^3tE2kH8HE=M)_-W2gkx;!Y$-l$!& zb_5(YPizIQ4=I~A;bkv~cw8$7e{X_L=R9tO75fT4zYevHsO85a`AwF4aktpy9}-jj zu;?koGHFOJk*&6iyqtL;0I9{cW_gn$iH3x!z62HVaOHgz`uI-aVT7W|*nnk$rUB(* z_W6jsdN8GdKy)9UgtWOk_s)G5Y`Rz1#D@PyI$MrK`y}}sX>+Z3Q_DTKOYM6BaoEC) z*vpq?p;QF9WUsfyit(wV&(+xBy}7_tiv|SvRq)yqQ9fj5QSCF?XpLlL$cM#=30{MP zzC1lSNHp|$V&^b@ZiLrxA9~m4Uop8MSt?+wz>K??zbVmzEHMx0SGg?*eD6MhLo@Vg?WG(6>fP^;m0Y&L3{v!_h$t&FGY$vrP81K+MAU$p+;wC4 zL4*cMDOQ8&+LsS6Ora^rl;uIwlb9@$%9iUXg+@yKZjG#qSdfxse1vyKv2~Wy!6ddh zuGcW0?SKug=wbF{HW3tCVyuMIT2vf(NQT&*w`Q~ya*x)Z<>P{X{QW6{nC}8dE|bxz z9NvDvOQ^fqM88>vmQd;ysKT++Tx0^dZsG1Z_Y zzFvNgPTDZBpx3uX#>n<1dYkzKjaH=?G^GgY0k^~9(`rFrDl}8%sUb7_>ViBl*Y*9{ z&-t}y{kT5Y!f`*HlkxHb8m!YETOUozE!nPO8kg8K0(6qF1I!9Eus-bvVp~2H2b}UB zH>jy-K#=*IjGHX=`sls)p_UOrS}tme^JME2f^0I`c~OlhF_$Dow@&xU3$smWl?6+@ zf%Q&Bd$mH1afOfGr9D|{c4Jd7wrSyUKPlX-9SdU5O;E~vOL6&A8*a;zIvfFUltU|Q z@b8oA96a{3d9y{GWb9~_)4?Ef)${h>g{t1{uK#9dJh$?S{r79@N}aP-7M$JHPq}5w z7&%J@RCT9;u^$bpD;{5e4v%c@cTf-@G)#T-l;^vBR=I36Yv#j*>l|VISk@1J!eq*~ zpW{oJR`ZS0KwiX94pL`I ztKhBLbi^IOZq{q?(m^Nz2Wiqt*j*;%fV&h&OwF)x!kbTLsXk-9^*eqxG}pXQ9tz;l zPkjgJgBOOiu4K;tR)vhUuY|smH&mCyTUoZ)B7V>So?HCNBQR zh*G9kIC=LeoSn?_F+DhBQKf%0j$|;px2z(5F*p|6x9xwN%+z@55cX%gY2sA%D;E6f zuvhPUP!2mbvV^|nRLZE0(aOxPg2M3mr_M$Z^XX^_7fu3hbvPBv`uyzp#`o#SM_Ss- z4BclT{@QX7+|nWQ*M0IDnzdKLJwGk?R6+=NXr6SL2?snzn&|_<@Ll^&@H4=uTmAU+lyun-Y?M{JguTj=o50o5bMEE>!gf1rg_`G*5dIDtYcmO3Rb|~6` zWmW3I+(M4(k``fnMr_ch_Duujt4|F^4=LY`tPcky$sIVe!(}ucal9r2>V**KeMSX= zhys`6qx|ne7!T$D_@xlT^2-IBIZkSA8wG^W6s}XN~At5z10z-$iba$5s(m5cF3_~|ary>G_bk|VN@%#Jy zpI5$8=i1k~_St)_wb!;LkcAkXweil9HMtP!`BIs{*+k>F!Je#}R?+QP{#?dDk}NGn zB?!S-zJ?wRPz+Um;B9oaTy#-rBa{jnig^N>8)w+KTk^}-??w7i-B9@72ko!WhG*3k zSA<$lHhd;A+1>|R)o`etLr%PcD>5fd#)NVQY@!ym0frN5l}<#UcS*Y%n(p`Fmk%-< z)!wp=%3eK={xuume&|Rwj~j5)>+?JKK&(pLCU!|36pXK_q#-n!$--N);Fj0DH_Q%8 zh^@^0!aJK8bsJ}pFSD;71ogr@->sF05IBDtbWj&!W_L_psF|nVUryYRsX`Y}%zR5x zllk;WsY=e)9Y zivz{wn3Z>iAB`~1ccK4@Mc@-+ZP2o%AhNza$u#KY*RvHYzl3s0ASpDx%_bXDHl@+ht z8_O~rCbwWBh^CPcSMtzkuDSincPWJ)$+(CxLv+#(C4^<#yv(acO$vtWTVhQa;cf-4 z2-9OSCW*G}cqwICY1}J3n{g+uY<|*<+1) zjNxYC89zPbd}MY7dBTna0SL?<q zMYZBY?SX-THb{++rUh52vN4x>I-a6MD=^y+dt%}fg^~#4O-Ry?3p`wS7xn+N02bBl zNjU9=Dv5pqXHW8R)IWG*|1x0?l)a;jEl3^ng@m~(JEsVmm91%-jl-Q2yBq0U6i_V8=7i!F;f?;9ewx;8 zrPPEAhAU*??={*XN0K21+I=PW)2JgKYJPY}n+3woZwOo2t!_F2Ce?)9GhR0J2+t7C;A{k^4w#^*Na#HXhUmU8m}jdERBCZS}u! zv8KCU(=R1KsTrW=Z>#Su=!IicU8o2^C9ZH`h3YKdvk;EoDb(m+S3fUr;Yl_Qk|@>9 zZzphMsDimSH6kq_0e+mb#@zc)#z27GP?VwAXFcAMBb{dthm(qZfXh!E%t3AehnP!}ok7=_SFx1H;@8cI>j%WbifNVe?m*t4f}fua1n z!u51Z%u!vm*FASyJyDL!*Iam4K2HN>Pejghjd4_3(mr25G2J%j3!yg2mcrGEI%LX2 z8-AM$FhZKCCTw(*U@Jqg{?any;>B>&9jO`x#yv9F>2@WGe__qkoMk+YddpFkp^ zUb8smJ<8#}oEMpqTpcWQ6HVd%(!l~l21R<6k+YnCr?j46>^fRiK}_D|2%Q*Fg7kiQ ze=necu5)W9ARqJ=EgH{iSJqZM1o<*imk@;SW7z+~$26Cp&E0ApKPH51IV?Y-#bsMOp5YjSF^@Mr7-_n1B_q$%(@!k`cHX<_abna-V|( z3BU9UR_E`v@+-q_h}CcplliAQ@%)Mn>Rz7E@2_Jj7>g(|!0c;mTI8Ifs78DxncWqw zpRIfx=5z2pzC>*&Pc@by0=}x2FW^xn;`9FUC3iCkxLUc2E=+F^08RGt>g`ux^*<`5 zQus;vbB3y_!U{b(Q{KMxQnwIEz|9cFj42}$XK?%(i@dGZNmi7d!?~=fhQ*U1=|*GO zb;`32EOgQ#DG#JKDO|w>sACNKYdKq5W?gPBgt00UURD0^8nDu;J;7{H6*86XtEy0C z4(#2VOx@v-p<=N!Xp-jcYxPAZjb&g{4rim8TaKP}-=ZU-flCsk6;p-~>KUeU5YB+? zqhZJGPv%Dy)ZsSvZKe!l1G;Z_jzHLC^xU_%l@GRcO0<*SDoGea6c{>odLC{7Gqc3g zsmd6Z)CdzU1dPl3!X5NlY>Bf@*X!PwQ_qx_st~C62!5JITpS?2&@2=sLD;`ndgxsDRrUND{6h54Xe{jUwB17d&hvR6r5>pOP*yX@_{ko>ot}I#YffX=)S0aSix< z#z#SjZx-p)`%FS`=D4de%UUzVmQ8hAKK3vV5xpp~h$c>+j{wQDemv*2q@TvD-zCaX za2t3c65ztA4p#7BJ7qcn4hwfqK56vn^YRm|YS&LzXo@(a3~4bgOe5FR3H5Fsj9e(S zc#V==gqw8WL2S$a+lkNdX%OjSG>0>Hh2i?ZV)hc$vDnHi`6_b2TGhmRWZ<6Dc3X8u z>Yc8M&*?m)!zK#_6X+zPa<0x{=|NJX#!8UP=xWEwvq95gA?cM6d(orpAIIVge-DJ1 zJjsk}>#}RsdlMvT$H-Ud++SAE!!C;-Q97tWoF}K7@&yEfx`D^IXe|2+I`Qn(#ZWhj z)}gE2IVPr>bP?m%X*Mwg`m$=A{^>7V^2{Ba3G^t^DfTihb@NS3LW0#V${Kq+1oldY z8l|sSvzqMB-gb&yOkDWw}tb;K*7r)>o<+<4yzi0XBU`c7SU;{sx@ zRk4|rQnUDP{1QxGeIh!_cR6hRdGex7M2A)%Rro>g;r)_>_NzdK%!mI|jb#?B?F1im z9QWNxbXe>WICYb3c1_nwXU%mdF}#pR!=~xAvo2|G5G7_bni?=(Hm(esZUoR`)ItAz#W^|pz(H8!#(}VoT7^B8yUcB%veAYld zlV}=T%J}MnS_}Vi0gLJ#1e`m0$~gtB?o!M0>L^?@jtZ^HaokT8K4a#Y=Qk!-&pm=C zWPBZ+7yd|3GrLMhsgN$(L`3lJS-bn1HHO{Ov4C`=g{|m~3SJ$LlQv?soe9d|f$j|V z#Nk9Kh;x?#>dhx~ktI1nchT382&t#^8hYG*NX4d-i-rQCFUrR8u3Ikul%Xr2D?d9u zocZa$uY(GW(VA;@pxP!aDm<*>OmdE}9GR1dwokgo^M#)ojixOMb&$phUB~IgPJ9#F zX}HYs$Lt?M${%&G1~N2MTBSxa!m1ZsSbdSjBG>JJn5)*_w^-9{A*38)h~QLY6Nj?} znKoJ`>4DTcQn*M%t}dl7JQ!}n@GqvVglxt2ozka~5UeeeZ8>d}9}yOt33}}FLHw+N z`66AapH4%H!G{OhOGO9SQjnr^dE0JrG=7WZPIbpo3N8!Qq#Sj) zOd`Xkm5Kf6_auRqi_hgC4Xu>*|{8)+Fh& z`vpY2(U$nszb3|YCxxF;Yd9+1O9hB^7I;f$mg8S4qJ@2s3 zo<-CB)$Qla7sv&*EHBvKBp@YoEywLc>4bV8#&<49!iT7qrcJ0d-C zP5K52O{42wPPZGgD>|Jf$l3P8T0O9|bK5Q3?|6`-^9$JIy^!vf{K<84%!pkOSxQxD z#G7v3UB8;3<*FF)@p;~Uc^&r@?%xGehN|PM$J`qLWU~(*cXulaCp>g9dqkI2zS|Uw zKy3zWBi!?L-)}sV103TVH(p4Dw!5sC;x6W3^mS7sirnb*!ruRVY5Xc}Fa0s(xe2k( z2n7O)zKNO-h8l>oD|SSkQc6Qs-__6Sma2L|>w2rT#L=Q*OwXmD!#WbOag&n9iSe7@ zZM3f2J^JrCv1}O%>?WZ-dn+P;Z-0GGD%$!8b=7-`R})-w)k5|CBhKkS|!q{j+~ug0=PI4x!T8$ ztJ%iFJJn5nGb~N)E zxk%aC+_Y(2I1w!GcBg~d@xnErFrg7haQQt^PCT_G$JObi(mT-;&kDUl%}ab&GYY951liulniSZq)Vm!rzq(URYQ)EH@e)lfb7$7?`RA z$qxuibgh+%akM|a3qPgYDQbB&YZX-hlcGlD`%iWfRwr_b@a$R1#f+Ds>y+dz``mi} zm9P6VP8y5+rcC5BMfI1&X09`!+!3*nO!d-5A|sw*g#zE)nw}cW|B)A*%ECv3@8)g;=NSD7w8>TpAPJTf9X>1xuMn2x|0L9@`8?_#8 z8YImNR|35ph!h544W5&H4}jfsQ)$syt(=dx$e50Q`p_tNa=SFcN@Ryda<%%C8K8jGKVaZLvc2zq!#XB)H*&v zZL)Ogna82oU$a2w%1cg8lKmp{%`Fq9?`b#XM_8Lc{Dzy5O&2+HM2yDTFX%37+B-Yi;j=Lz*1R=){vXIs2?B)KtL`vCKt{s6IiOH2$xiErUB%wp@QB1yBj{KSA=*tj#9_c{#m2Uj)~ zydOlD9bra5{wq!9RD_Gsw>6LWILAupB1I{94UM8N^kZf;Bgg%<`fJLh#ryN8$dvFQ zWFJr8ZIg&5Z7%Z)bDbSvpr^%FKAFLahZk*v_Cb8v^=}&(AG6pWn7E%8zRY>CQ}N}e zI(xQ3w9U5|p5A$1dlNG(w#8}lHk$Py)v**zwo3In#q{d0jLt#2kGTtiPzG}A>}L{; zN{=^Nb43ieYTZotDa%xw3t(n*s%k97)#=4-ukdU~8C z8)&RC-;Xj^pz9QHWJy6%_YfO~GV}>cm~2_U2P6x;>4E$s3%T3pr0>YT3Ym~%+6oUr zJaMBek{jv^}T-d;8UaDC(%@pbN)97(!U`y`~JEbmhC# z5|uj|>qQ20oy5vx+HkhzzOC0UlDld1snHKo(=_KFu^aA0wHtJuIzO*0gBkVTh;gspg2NAP3-Vv^GEU z@+yaAf1C*DpRW?Kx*RU6(0MxGdEC_U6q%D|9#`m}VDg(bDcZi#1{X6Iun|Bkma58t zVt|@GXMhzdfN~i$eJC)J@<+||d5Iy#3xjI<_fK6^8jD}pqmxSHA`+}y1x9nZPI~C* zr*qWTpAABU!??-SnFB2iMhuIe)5#Bn`FNPWo(LY@)XmFgZwQzSP3=Mwkdpz6iEpOD zm(8!V2t7e$O`@GQ6qth%JT+^OrH@j%SsjInx|mu}7K_Y7=u1P+fUx>bsG;|}FA*vE z%eq2H7toXmOcKhcCRg$cMgC5jCJAcLpXKW)v}kyg#;Ju8ZzSj?Mn{_|9e{`R*=@LaLI#G;DQ*O#Sgi(G4xPvtav@E^j( z-~Q^L&_gY{-2O~cW@S`onaN}IX14O-ih_EInOi{5Ci-$%7BUgWc)tC1z|bt3vFAYg5bMLZ&g@*;!9mhF zn57c>S|d1n^CW*q$z^~BlL=-|PPf&Z{@XwsaP3a$S7-Nz=ydAqRCWGg$`be3Cr>!# zAbw|@22OK%OEo=>}6M-7}fa#ZY^K3<8IB!j%UxK+(1>a zG3^Ibjxp>%1VHqR5;o?k?4XX$q zkY6(gc&_3HsViL**0F`N0X37DI-ZJ`k>*_8j`-9!8!+z5aQQf$hKX9J_6`sf7KAX&6-sR~*U1jGBq#T9L9744 z6Bc7a%}E*eoNF(o76*G!aJVB^<*Mw%pqh8b0v zhc0-UfW-v}(RW5&l|cVVv^q~J>;m+zXORu~ZLi(!9I9OfBgC(rV<%Xs84gE@;2qbf zfxRi;EoIy5X}R5R2eLfCAwz@w=IRoMX`};=SmL5SgvAd3fGaySraEucjGX;ou%k3* zBW>b=OONPQ?@G?##p3S^rgH{(h`d5$m2brmx9+dh0IT<2cYWr{7m7UHi}sDLjV{L5 zld+m=m?vHdr5>6TrjRb}8If)@R4q&gYXOf8BWqpT*Pocih)oK7zgxPq9?pzdCh^MY z7I>*Yvh$JqE`9j3xxGph>;7J&*z)%HPKtmE3TiI|6e@`o7b1XkJ;I}b*$4kJd?4LJ zgAojm%=}Wgw@}Sbl1s0!q_ecD0`o2|hB{nD5{5u7Lj0898xuX`2iR-ucQ z`zUEBP3oIuVF6J4FAI6CVtebLDQD3y#vq>1*o>q**ykflzfBkZaJR2E!u>MMCDIN0qSg*m0i2Jn}Gg;e1#?Kqc;c`D&jrG5Z>zVG|% z+Yg0|jyD7Wixp~G$;cWb8hEe}2FW1dHbygMB~QUCa4BZGN~&aGO-3qC_M=WFg;JOF zCzkaAsqB(<+&gyG*do$cUC@v>YpLr-e+5B4G*v?zCe^3jc5KGYFtb z;p-$Kl}T~)TV!7$ICl!9O0+L_62gBwWS0y@@USEe3Y1*macptMe|aPFMb+Nsr%>J= zV@uiC{bmUN_tODulx~02ahalh`kbi`q`Pr2@%J;WK0XN)>iJaKLAJ1hS)R(;;e{y^ z%xNsZO&(|u;7u=`dAB&%Uk>_ShMHWkgE_tiACQ>K%F?v%SayG$_DXGy*{t~Z8gxQzEU0m`{$@XRB@U7ZueKl@Yo-6&E>|R*?vE@ zt+zw(L16%*`2T1B9eS8e9qUPpSx|oiR|&^F$0b-7BU}p@7I?A}*xN$5A$6N%Ow)6$ zDPQw+q$S64nwn=sldKgtglNwV% zRbQoqOn_CuR)=fyvL*)K%x9_VeR2smBf1Sfe%oNebs`~ZB?ZOJ8T_XMYVr4}q!fOq zf&Yb+>8GzZ@K$%CxvGnSbLB9sl7{(q&hg=8;9|wS7WUm? zF{$Y31=n@y?13QCn1Fk;LqG>W{2QY7F zk;#`;Io)Q=&nW^`bR%ej7~vM`3PH;kqn%~>qj%EoN@tUvG;56Y>@1Gt@qrGkBTq#?2e0T(dgooox*!0=5!vcLL?4lcCyXsJJC zPvC`3F8^65I&Ej^6)Ap{HbsKar9Gnw!di~@_chz_3gUYIUw~}#M*_*;bYBg5LS-OV zNh4&?N$DfL;ge+?1=JNx394S+{cKa92g?T7!n1z=ZV!aQkNyg0Wty|ft+@Z&5+ar| z9l6DN-#2F*;RhJXo2)HnCKBpbAtMzu85!tloSZRWhS|{}E;mmaC2MI^<2$oDJ;&W= z#zo%X*gWcRd8UIO$RJkA(iPKz_#4d@-z&b(lC|@;kZr;2I^|k~HypCPJch?-j)k#n zK0s6A_{;W1;6`$jLjOBLJ@{YgrC-c5{v&WLwGrX~plVqD7B-uX{SajH#7dw7$&QaL z@mQ^6-6VQV%$-VS*ly#RP?te0IS#URQsoD9QuddP=^yP|!vFI1(%MVq5S4kIgc?bm zEAGTHr`u}LsJ#JboA|FwX12MB$s+dVoqhfv(KmC;Tv6HvbiN)>_SJknJsn|BECMeS3w&VFj2HTvSg>zGqGv@OW$1|==3>en%j59jX%ddi&{hli$%Aw z>?L5S#lXyUE~xr1=TsqyMCwG;4j-w1ayJWyOQ_)9?SE@i)X;l9v8YBYrM4yY1qnQ1 zf3;R{0F(?%nfuCdVyomJMZ(INdGWi3Pl}I%_kYt(G*3G-hmzK0>Mqsd%@z~pB zePCO=hdUTF-UY0J)vO`R=y3}s)dE9-?wt%6D9}{qBl#&$oME>AjVQ-ZPFkxaXX*p>vE5Y%GSFPGn_!2>SgaM)LI&= zm(ASuSwu~b!?H7ZySdbGNQ&yX3VWD`tC2wOVBQUe7ra%unB;tNa72DrXP}UGg$yUs zySYzREw*pGM80>q6$t-1pL4|HrcYlHl2<+c|Fi&(()i`91_oBAjB`XY_uJ+^x0qsc zk0<5XdbhjjVf42Qvne>HKYKkJYet%Y4X3_F~xz@ZR8e%FKhA z22F}m{I=TB+SBd4y%&xOKPT(pIFh*6Y_zbCzpzuh_M%&14nKbfY{}1M4Mo%!cBg*z zul-Nr{!iwe=r$dfpIw9yRav~ua_`u7-6B^DHD^?2T<&M2;34&hz={-bOF z3!whQdc>caT75)_RSq^7;Atl0yo;B>5`ULUbDTRnSw7oZa2L8RbvkNL3swlRj{1(O zG&JP6X9~Y$E81b%!oq5p`qj!sqEe2t2^iXQNjqO#CmGv&7rz>G9S-`6DtQpV?^;-F zD}PoA$5nJhMVvVf&T8l$%8$E6bYIb320|NnhxGiklrl&%fK|EZ@?9=ocUp!nf3p7Il zy~Z0%Fi_G>-WFUD@K8NX%ShB&gmHw)I;T1b8HFexDr*{*721_F`=(uNBToNkK>qLL zBB-KWbAF2|BsOc48Mhd8;G#72mzu`M^O1I(>j$qfIu0>ErQiQCG;S!sc<%czxTC>& z(|`!RH#|wM!OMp#47s8Wr@P8(=A|Xly>Z>ZSeXmP^KG8F|IuKaDhVNoG(f&*Z`dmD z&oflsNO!9$+GyH!ppl`5cLxJ2kIloO7UYRx-PARbnj`#=;eUZ7JY>nDq8J}W)@1o9 zeyq$l;`|@U7~{k6xnoQXuUla=^zF~-ci?XM|7+ndz(&pOZ=^-R{*PO`5l)vgcWB0E zjD+6(Ep@Xu-^O{ET4>CmlQPkC zv{x~V32B31qy8k4TMG9QE-BDZY63kgsX^G%T+MgVCjjj4{+_i%`%gB(8L{5mYNRHx zf^XhpN(Zx_tFLGbFSz2dFbC4HvKYIyn3MZi3@KF@xupN?`f zv6G!`gQg%Gzof>AfLlLny?p`U7|BU&ygJuEjHzvJqE6-`&f?L}2`zM#?&VEZJ?azMkbGd9ZH za6oRr+@5}^>b?L(vo8M1YvQNepL2NTx06tk;sGwxn3Z}RZESu7iYlB>Hgo7)2JC&b z%iO9Sl|}+C%BFRTn1}7;&R5>XJCpG@Bz4!Uvw8x8$FM z*w=q-7HZwurV^-4koUe&Cv}C>8IA8%}KgjiMthh0u#=N&KFp zD82>CEgt~GRSSY|q)>^r+o4sr+mf;AlLay;%4~OqJ64+`bDu5u zha&#y@=4XuX==~j8W=duigcM=oo3bxxohj`VCAw4<-Ej`H)0_qWbwZ?e zr~=jAnM}CAw9=RmZTdR=Oh8w}eda5=j?q9#1HgP=_%|5Q)U&IJW)^y_Jjcq}k$CQz z`u5MOBa!V2okEH181&h1jOkr%9HMXkK3kmb2Q*;afx(YxOg5B(jYZOHH0IW!mQLZna|tOl~^I{LbNzJAF!xkP#^eg$(Kee5(+(S6^?1JfMp8IF~Q zUW3rB@wq{hPPK-c31037YymHV=$auH2%od-_Ehb-W7omXOGiH!-7`;KKY6VPi!!{8 zse@7=ujs7syS{00u7J@gkp)8eoa4Amu&Dm`0g>o@?f~;OgxpnhVD~~0@y`z9mb$rs zu(_KFE8Lo1ARfGWCp9Q#W9+FE(vbJaZv29A^=rpw+*{{{PAoR~v&+x6z;Nv&kL);I zn_8J+-BTifyY_MqPHDN1b)?VdRJE52)Y14M=M2Whr_{k9z;erLN>!AjH}rMS5qGXb zR5Ljk{tNtcm|!It&(Na2Ij#`hoT(SoeqY6qI=DQ?lA{x}>%+UU^>4_@!eK zMJ)3<%~hKGWZ0#1QmbnU_wAAJO*zG_(+sFjGXJLOHi4RUJ`9}MVZ~bPfFZ_Q#)1T0 zECvgyeJmWT%Ikdtv;c2U-5kWv<=x)_C%uR{ypsbrmLMU{q>{6;)0J>esVt)xasVal8@h9l+^r`{E!*QEZpK*0(&V}%;Tbb zLYbyH${ArU4#ZN|wyciEkqO4m^$frJQBaLktA+CZcGdotxi^sIm+-cvGc7;(7w{Key&q1&+9__RQJ_-n@wP|TQ8U;~oc<`7CnfA` z;O8c9;M?1-;&=3@H^WaZv(EG<5+_B29PBsK1Cp}08Hotg+CBUk)lJ)H!N9gy&>4x42M%oToJrrS4hor*S}+GTc)NQV*Q*j3 z*RHFT;%>81FZF{1kpFB#?lD$n$K8(XVaHviZbn-et=NyaBko6Pk5j-nWTHN^j8(2K z=9Xlnp2(9KR!(((8@e=?1*R3z{t;#7+hpIJs33OK?AfyjoNukJxy*qKwLudcL{g9m zQ$3>oa&_e-A-8G%dU2JJj+3kE{hNIHY#FAcvr>SSrk?--256r*X@54U-=RE9RYOwx zmw4TVzec)-d{8D_da@Pp(=rwKoj-EkV+|w;U)t3L%;|(xKg0X&bpr3yw}et0ib+&x ze1v*)cl)%LzbsZ^|U2ota%nj8;*7BkBup1!&J9-(*HDdBqVe`RSI9>M${j!+ozU`Gu(9NfW+8@L@42h!d^Zr_g zl0vV<{=2(pnaiSmN`FPoaHokG*!$Jdb+J|Pun<6-;&lG;V#ZYgzbEyRH!&GtS+AE$ z*+PIfN@QaKSXYTf&OSs!yQenrP6`Wr!aez31@=4=yg!5R0t%<@wMxy69|wk_cOg%@ zO?EZWlx-7FhI@s32*cUb3Pep3#lG)NbBG>=U06LiVsE)a=Zy+D&>PlzsW5H7jmj)w-R-Y=?5Gw5t5QPY>7qn9ORN~}a85;g# zzAL~mS@*>jmbLqV?Yo|muTtw}m4b*O2PEEt&Nuab=gIZ!DEsXWco{}p$I7`J#B}(^ zZB7o7AKRa!pxK_2vk{_?S>_;J3SR2k8^}?tlor3r@?*1_>3Ns5g@W8|xKt^+4qV7N z!|so(YhrxDltB3lPDT20t_x0#&pC)8=TF(vjFFu5N8bSGns|_sG#TtvbcW@Z15oLW zA71+I8I7-P*8q%F$5yiJ4PexsCKceiZysEdN$qE!@ZD=OS!}+kVc zLM2kkATH~!^_n|NY&a@Cx9jE&$4rY_x38abyIbfUg!UqX{s-td2^`@}oAS`3SF{pR z>I=TYY83l}dCA?ES>|nrr&CbiiuLGlqhL+O7Wg6T4$zl3yMoR0ho#bJWe#ZAk$=e> z-H;nN$~s@Z1hLSqNCYbq=XB@uSBnf zIWh&z0T7zE5X##>FYwEEEs`1rS@>Z<1xLy69o#%&GUNMSkXGyUz@2uMmW^oLO5+D^ z3UBnT{AtJ^=^DW+LI^i|mtn|{EU3P54@mzS`vLOTEGNLn)Vh#Ovgo9;mRD|OckQpH zXH#8=yGkq1)hfUFl*<^J7d7FuJ;uikO6Kr=<(bMGGT0ipM>fFLAq@+(orD z_&6-gPr2k0$2U%l%G27*&%sw=y5hGbL9g3s2GFQRh&UIKck>`LP+korvX&h zLbERw2*q)mT06iW8jnEfEYMLVa!vSOR46&;P1XB_N4~-yU{aqg7hR7(^?-OBls7K& zpI?q_sZ0%r!)*%j!8G_6um$!1JXe|(QVIY7rMKTn)AvjVi_{`O%Yqol;tJB&7 z;C7}0OkcR3icjZ%jUYJL#wIW?>%sHfc1_sR^!p*$x2z1rU61K6`E$4iO0;`xY|$!| z?14$0+|dH=b3@mMc{S#n*dGGy|4A7n9bdy4&>r{@3E$%qp^4L4fYhDey1K4}X-d7Q zX5&R`Yv^Au;|SF0Bfejl*J6prBR(X%k(RHO4<(yKgkO37nxQJINLPZqvy}B((g2d< zaquh`U6aGJ7bx=Td0*vPBj#46XLZ~OA#BPPg`rOdTd~JQUR_xjXBPOPr_j%nYFKV# z2o#vWOa8mGKd_67#lGh3;`De#?<^c7X*Z8?Q?{n1mXwUA$^=t@19ce0xr99mAvKdw zcKPZ%wBamh*h`%zQ-tsWm4L$*Tv3!Bt1bIl+;KUH zm{WU@jzFMnwlppNPDZ+O)p9Gz|22py>zZ_M@Jb6v^ix9Rf$;iWSa0*rdSlRafyNMJF}hAeV@d_zKcI3%5u&PkhSCjm zS)ojKn{ZF%0)Q2E%xjk?l!rh~0dq5Rpp#qg9fyDU?|yF-gZ_^Q5Q|t8*>s)@edr8= zS&u=Zs|fWRWXvN==MT)>$WL&_b5APsY`P`HCLRr*Y13K)m8RhN`Mv{t#9s;zwCMHm z#9cnQep&ukEp-G_R#R{qAo58zMJBn7F1Qov)e_XJPNfbJ#Xq3DGsWRN z8-xlG3APN?jeMftWhFe!KHw#|IS!4Nkgcp_19#unI^}TMLZ(>6u>qTeLTf+;p`L$F zz03k87;21wr6623ObP-_;1oplcuC)s2lHemHvRTnl@!Q1%3K-s@u6{e9Z2cIg&NAa zFkOl>6(@l!T5Ap!*+?YdQVT6iU-fl9;Qt-0N6T{F#?nTS{AT*R$Hf*stzul}Wub9< z1uN*qs1iiT!pC)@?42n3IQ~eZlNzr*jeW|qDaioyB`pc4!G7r9F48xAarzJkssu0Uss7}Zioer#f z{T#b_)|E`0y3_Ea7Egr8wQmIlqibcfcRhvN*sJKm5Op&~q(CexZ4!`**bcmkS`&;h zs*et*+D707%!iRxi9Ng7&JqGv5XZ5vZ+(m~ozN;`aD0qzd6v%Fx%@`^MPSzIV&OHa zou!d3#8n$``Pfp4d~{OE#wruMPS*}R>7l{s4b8r6LOt<9vb)?4{F`;PSi}?gw;cnq z{|bo+B`mfqE-2^e5e_tt>_)RyCi_2MXRC`}k}}Wk=;v}^6zp7+e{rbTC82N8E`~Xb zpJJGrIC)0Me9Nu;L2p0AWHcfj3O;AzTFI;by&^&8HF&|!vr~8b%T`5jIJ|SR5#^|m zsTf4L@L-D^beQ%1y4gR^s>7H06cML4ZFa6BkyY{@r@uefxU;nPF~kyMKYk;-!BN{S$%X@NE+{7eYE3nF=?&V+xG!fW_l`a+&*dG;_9aitQ3Vf&pDB=H**+h+r~v8&;CC`J5uIdQUWzEMM^^w|)ZK%^gfA4Y!2 zXXov-=T4cC^S85Kq7L1|Um^!VYdze^)xw`{NkDChuUDU+oD>zwXgs{RUP>(X6G~Lc zCWb`sq}K!XGD%hYE!{n(HWbL7sY+Hdcr8!T-Xb#3ITE2n1H<>c^CqpvxMUr&2IWL$ z!?tG`X2Sh!{gpt2$&JrSXCYvMCdPDi<1l2iWFRy=LVe`%IbfR5%F)+RfIA;O?I|Do zJ4Q6{ECs9#Fq_E+*+)NC82?QU+@MUjI$sqrc}n3s_nJO+wi5IT#~x&j-|tjyYBW7N z@o}0cevLMKp7k~Q8FTa{CeUQ7(V9{OITm=$p}bTih9}L{UcTxlp3OYAP0Wm_|3F^a zipdtIY@}Of)CkN{?CFmlQ5)ic{$;hes9gScT|8UR?bHX|tnzf>O4*gx7vFTk6~7dj zWQ2y+UjRx`BYugq?)hU`9ecH=NK} z=vEk4Z}sUClIHOC!1IeI?2*LP?jtUtg&eZKF0>ob5pntzu0tj6Ed)+m#ed)C&dt6? zV-2sqnlagW^iF7z@?6+u!x8!dR|&$WO2^~%FB zJxGJ_SyJmxnIxS32I^}^7WZBPjH8;i`*=1%7E*4vzd~0zqA$U;jsK@!!CuQPZa5is z$A~QKRiNdZ5{Ivr8vw_E-|jlT+^avWkZ3hz$V5}qBfv#^+`m9^%e!l7Gu`QA*&7?? zlTs+5Gp4)!W?~dRyrmB5$PiVbcTMQ8x#s)G>2lja;yB9x zKqTPt=MENtd(H_hDSGMmfOcIR+I&y7Mx0*Me`(Bi!=sBfQB0&K#Eo4Ry{4J&x?T5k zr^yXf(;DY;Cp`Vm7MJaFCE3om4d#4zk`pEWTllt#EGT{~wBsD~8DPkPPxHQUU+pN* zE@BigsPgwjv^O;ZJ(cx7h)~Z%1j-XgVm>wcEY?&L zd~x$xnbgi}WhXT&C*6Vap7pE&B!j-}8a4P~3j?JoRAfMX0q?goCYQ@@*c$aL6~{#< zUDceUnd4d{Y(G@1i+^HTg+9ymp6*`;^*$lc`=;g~O<2$5p?i8|KUT8=+*cY!nA@*< zINL=-g=Ft`vRjJ)Y+hPgN9!p?3;Sy?mgP85sh*t7VUaU&MtG_BKslK;rV~ zt!4Yu{jLU-6W>w@^#uGK5=8dSYIeFBp+ClpW>1gO=mNo$E0#)qkACAR^hB+K$zJ~MmEpL6=8}z&`U}R$yN9Z#?<>1Sa4_r@mG4oLA{A?fC0|%{DMIx0}dJ53fC}~6)zMoX{SH54^ zG07}l1HXp~ExNiO+spH9iEnJ@z5lNBRWVz->f2v(zHAR_Hhw#5=b#Lq#d?eVUm%A_ z!~{=HTl&4|;lE0k-XvekE1s)9FFFCIN_E!ZtZstFCl@26#RuT-|0qdEdaTNyJ^>H@ z`I3v)?mlL5h6tG##^t*h=F>ILAn_Pum#G;YI1h>+5dj7kPy@pzG z3UIL#^~7Ry(nhQB;-{a8^cuzV;eLufTcC#hk3ajo_)X%)M+R6yKI^UYzsa0G$N$`# z;;!9iCqpZ~1X9%C7i6T^T%^i(qZKp(Ff8w@(=QFQ3bZv_JtFWpG`o#n04EQ7UMNdJ z#TSfcR%!GIcBing8b_!%I_H>5I0+v;=W$APS+@rOZH|qO?%V)@-u1b}BkJaDIYAVe z@l*1+0FswS^;gI0-9=<@9Al?>SF)EotmA`K|IZ?b0Tyzu7+t(0Y^Xu6k*SNR;hQX) zoWRiKFwRQ)!lQ;j&-GBztpI)Y<+ilI828t2-yI`fZn~}rLQjEMO7?{&T7~HKOx6Zw z3|$~!^-0z;OV&F=I@!ef_tyo+PCWp&9i6oNISJT~rpNVuQjm2(&}t6Rm#WMt|D%O3 zzZ@lUgD|?C1-sxY4kS6DBTZZvK9)=D{tACS#KobD$soKMIdYUrIYM3x(4w^Rm30{e ze_SeJDAI|y8vocZ{=!eI1|K)A*+nBt{3*@ieEDHZC z`8WhB8>6v%#=s$$jM;rO&EPs~5o`m%e$B`ZfYs(&vUZ-obY??w2%bR#EPcYbH-dp1 z-6P=!F)^yQas@;z!G4JU&JJgQm@}*V2X~U)vViwHd5EgIv;_Cj^OAAxEXSneq>Nzf zfXQVZ^Vbw|trcr(5XIT8ME*|%2SABUSN$8Y50W)z1}P^_U?M&2?lSrU`11O^V9Pa} z#2Ax@C=P*s-x@c@gCm)E_?@AMbx?}& z`29IG{E^chj?q8o_Uy5oosylEXs)kW+KYfAWIiQlxC;!v@v(Wdg|EeQc8MkQUDqNRbCwJJ$Z9d2Uvl$$@Yye^Iih z#|*LCH8W`ctkw@9Uh(NSHvh9xf25p_w!0+o<`@;P6U{ouTutphz*Wvao#RikO4C_Ce$H>zLy(Eb{YNN|-lhKPU`khnQsrrUt#GAICXs5bXeF*rwdw+DQ8<9`! zc}C48M*$1VgvzA4I|8rCB3F~_L4819AnrPqs}myO_W!l_<>6F!U*8f^WDQ*Yk$^ft-Zf{f4;GiY}k575UXqihiYwnFxwIeskLHWdA_k&EU`YQ zL1x?ezn>QN>@Me8 zuiIInNiF(@!k)%$tX4ENw7#?b2F2;MBk_cp0H4F<5B%1Qo!(oyQZ{7uo;{_N?ti`H z!zI6rjp3E&va+eW>U`JgT|Zxs?tlAO;>-Ju6z;m-5@q{6W~T?{D%T&l>^^Ps(&_Qg z>WPGhIdNx#W8yEIA!zF8MzTco9DnhgerxsFErG~gZ%ZV$l!pp;sf_8J7lIp8Z<1}q z1@smyBqmamtv;4brA$E6e(#H0SyXeovNrorqrJPb_&_*8iwXTeUd`1=+q8AwJ5(!p zbN!@>w7KsJrlDHtda>wxIkqT8cv0?x)Mn{d!hARN#H}By<Zpq|kyj~oDd%NflxF&5NbUOcvZ*N_%p7yJ({uFoi+shtBc{rG zHr7}M*5>*{CvHld5}qCy2>y^?q#*1+E7{}J*>8{bxVlFo8F!o`%?=gexar)cD-P$h z)xR08uW`uV$`2S*Gep_$hIKb~(yP7cA&F%y58PmNx4vx;~ zeRuq!7RojOpZQXqQ47vT(^+V^w?8P9arW~Xh177c?O>Yyt>>)2eah-q>ZU4Xe9>uQ z=!hhov2CXW-r;U!k4o`!a*Fm5oXN&RpeSMcbM&&i68$O=C|gkU&mr_Kf>3UN5oaFMrrc0XCC++BEwsFz(<7;u%~} z6m7qd;@Bjlk-#Cy1+QgyFoj$W|H^SMZ}f0|IAQ4diTiJdPZbdDZ1AT5cZG4b&)9fj zu%Vc1c51M}+3|ac&lN0buJek7)GQy5(nD^idFMF}TDDwLk@Mm6n$>?7^717;%wt!J*Xe}H$ zalAQ2{q4DluMetdNUS6`3GVurT)8IQld>&0O4h&mC2bG_m8VsEXfBqEG;R=IJA$c_>C01L7ce7L9qd}`suoCxwAuTw~@K{ zfy^8U{SkuAYc{1;$OblY+|s`w=0F)Q9Sse|r4!qLtB}6r=Na6F0E%ewxR4)|*8+rT zFX4y>{!5tf0d(0@s%t6od$hmuS-`F-De_>i7_g)LyZC*%)G>qjPnJ;)5AP{>bh_|6 zXExqqMwf}l8gSR7Ty%#d3r9wA0dRrn?2f%*(7X7$x24#a@{a3mgTxFq2QcvXo;O*1PbfQ_Y|uaTFhcd0S)TM#@;-=} zN=3RTQ4t@`R9y!_F2r$19ao9W^VDQ$@;*mO60a#3v90(?TaLEI6ni>e8ZO8PXS=lMva7^kcsps8&9m~ zy!7q$DqqDx9t$il4*M>RIT5KvItjR=r!SK{sAMcnP#tE5JiL*q(n*~wcnH zyFVr$sfrP=XaDe*GP2!{D3gS&iE6ZlnXvQYzM?O~3>=~Q)b~*!XoupZ0+#H0ZOEso zVw{r=@~2)|88%fZWf@X$4C|=JBK9{7R}IlujS>VMFN)(w;oP!i;^w3Rab}EhM1VID zD-8a+J?u!4}}$=1ZA5P}ply6;?CUyRjP2Kxso_4+W1 zI{k%VM8ILXok$i_gXWk*p!J)$uj2VK)VVJ;o6pkZ%GR`ptyOo2b#ixxT1HJYQJ|Tt zMmyhqkEP~Wr5IlAPM_?EOS=di6lCe2p8!;1GDZwSr?q(-d>nV)c_PrztIHOo z|CUY%HexUdoB*?9dgL)4cOc>OKyXA;QqX(21jBXvxGxgDiwQ5zi6UUDgT2zuuOQW2 zGoVos0c6nVsAISaQ%gQ&JY`;spjZ^dIs-E+JzplO!KqqxwsZ31RCNn_a-^X%9GbRZ zqT2vTc8HnEResP-iTgcx2r4_ufl>%MuBKerH6OAL5z>3r)OaihsH!f8&|1%m<+?#C z$wVAA$=Je+8G;V3Vk1{E@XR^;ys6^=|FquRn+M<}``U71IaJt7x*%H+WxKW6VK+Yu zq85i-EMKt>ynkbvY2I-=u+hPOLD7#nzIXnC3T(lMz;%3PrL4P8=qax1uaUVU-)0%j z@H7Q>$Oy1MGK7t8^F!HqaR%s4VkS$tGMrGLC3y51q;(a!4h-`Z;Oel{$Lw;Z*7>0a zc85X;iB<73$g7pjKNQj*9+=yLc;6hu_c z`FJFT8NGsQPfQF4dv0uxxFiVc9@Ji&AlY4tH$AI2=>ze$im^GFaCN}b+C=6c{hJzE z1&q6=8p9|8v>}7tUD~cQau9IHlL@_=pd>wfeXq>{Xn?o#M1jC)+M85W4E-&9*arYt zDeKj@PCN)?jYmA!|EUsw)VJkIHB`j#J&oDs;p$lA3z zF-sW{;*k4P4|f#o;BK&n0tYW*5WH3=w2?I#0F-bti9o{BoNI?KJjl8B(Em9_Tbpaa zh((ohVmEInoHKX!bLfudS1;z;U$H6iR(wZfDl$p*zJl05BK5KA`yG@MNEG>;_jo>> z{c3Au@WUJH@MG;Jw4+w9WqVx$aTvx5BICahY`a0hwbk1Q`m0+@LVh$uOb~MByNreP zx!}v-=Th8mG-@beOyGR;PCa;+at%dv!ph|G=-Wcu5rXdYsQO)+P(pFoE0cZKJU z!imKV54TUQrfO07!CA5&}EjPn>(iqV(0RqkAvZ8y(wD9 zA!dNPVRsNxbm88BAWQ_f%hi|WaU6kTZ&(D5Pv`qrmI|DEqsfrDQMF(HsBJtl23cG+ZU zbYV1Kx7_6pNVv(f-KZAPAuL-Y(wz$TNrx%00bnUvReMC>ZF1EL>=I+8Z99W+UzjMxKO(?5jX5WA)nQ*o$N%60L=FsYJTL%a%AHZ>Q05 zF&ycYM4$gT&W;1!q3{Z70h1ir0=>0iw|MCj)Hi^ zxqn5AXTz#Mc+d7xX#BWbYTuC*_PzytQ*aiFA6I^yb}zV%rplJ*MqVirot_R4Dy6Mp z(ep^6kzowe-fOU@W(AH~`C>Kcv#`4-F;_HBco$Ur`g?0@EkZGBGsR+m@jJLWf*EGC z*Tr}D5J@MW07z5;clh@EkI&Ai5wi?+&6<`rI;)?c_%%DRorM3O@!$^U~)4up5QrI<-OAoeBor&l? ziYEvk5I`qV@sfgtMXt-YTJCntWJAkOvMaHFah=QVw42m|La5QbeL*T+`#0{2?B6OM z{CMO!?2XC8EH}UvC@o%M-$`o(Z+_2ZZ~ho`0b_$xt4=L)b60J_+36ro5J0=k?=bTx ziOE$as}CfcWO=EcPbh1+XDo8y6a!0*HUUQIG8%c9*bv?c33I^42QGT-DhFA>R;^Gv zIX4bLL0m^zP)`*`(m-t;3Rg$OQ5SEIggnTKSp;sE=)M=83U9(K-x&91JUB!m)w@{? z$n)bST7rwQ)UgrJt&yP|d?!*M4He`)L^?WRX`)JptgK>xPv=k6xzcE$KG*Ku$Q$7$ z6qIYi_8onZ9-|6gEd(EkwjiEJ)h@ zh=DXa+9412519BSX~`Z*dnhvfYVmfj(|ouoy24s&p*R$SmBuN3YJFLI4-s3gTwFh5 zF7hEiW^1F6zhs~J7qIE7D%sI#))_RiO|Z+ZPCs+<6KTH!rv<27{2)ml)LqYU*atT+ zO%^TpIk@d}YbY@X)-!_r^>(Tpq=LSVC~8k$7leYizL=n)2qMhTt9TN!PXpOX3s5jZ z`Ip&=imyYr3aw&cKY}V?_GnSZI*wPW!$SX9ip(4&2sHRzAm z7C}a8C@FZE3mNGxOClZ_Y3a|A0{H&|J$K5P4OPyWayS#Zhb;|t6vYpI&ENvT1|Nyc zKh>-=p+}j(n$;*v-e3{*g;g#RBmW+m`u}KTTr5MB9dKPs z=!g6%!W(49SRr|pvT#Hy45YGaC?zC4Or0cRw{9dD$&fVe*|8SU_S zL<450bFi>Bp#1zFKH|sMeD*%%3}3?^UzUfxorcGHow^o$aC3SP4Da(Zvel&g#;=sS z@N~f%MTE`o4NM*>9+qOA=rzJnQOosTD8;Bry3k`B5xSsdFvO#VMA2^C*^U3Z&gVU1@;mX|3L2 z9Ta5(x5ukSbU2DqfV9*x@lb6fJEh%`zevBGkC}!~NInLUCnKB}_G0Fph@DiLQ1woD zDZsT3;w|ani?(??$tzXwyzjmJ=qCLcHCIgNlXR=w`@lxSF8c^pAi;(&_4vT;pERsN_m%Qn?;^63xHtJlLy2l+@>aU2^?>}mDpcc_h z?GygE6YNmqmHTb8VLOmERCE_cU@7I#m{|z+y}fkvau?ngxD@G_=lyuli>zrCmh31{ z$fv8{59zRpwmZeS)TIc8&9gK?sFcYmxs(k(lJ79SLd)YTHEG*Hk-xh|@Lg@ph=-u84o|AN>1=EVOk zz14Qk#-xDJe=y!%!Ao|dN$%RtjCfMRiE3IK)4y*BH2jn(kw&eDI43I5u^vC0{vH{l*Iau~A~O8Ows2)$xQgH?TP(7Z zlyCx4oix%93}A04kkBXH-+ynAJ)?=U*cfMfZ9zf` z7PN6)$ylFq9g$`IdG&ic!4x9HxbS=20Wx$x>~(`*9Gdh1Ygv-ps$qdQ8>&`U{pP8U zah1W_7kfT#iBN5f63e&wYyB5CB_vtE9e1AT3)Gpucw7Y0jz}U`vp=9miZ^$r8Ib7Y zo?jVbew5T<*aOXYU=6#^^XBc-RN&YsD7s%fqnGrDw-;ShlaNV`D5BES#=a3Lj83TX zt0U9q<}Q4gHR7`iNy872bBea1=Ls`96wnv{7eQu~%~WdBt=7*^2Z`Stujg$iZ>+za zNk7UBSkO?9HqJuuW}?>2IDaP;u&<;&gkbXUZgVP7cK=$WM4y`n=U={FE}84JJT=~> z?v2Z4JYSj6d*3c5TKbIaHB*83MW5+Y&qZMvsXpCQ&vkmFK=G~Tsufb$*WRP0ffQK2 zhd2HrzrbSQ4Qk3=qmHi!ETc=v%n!Y(G*D6SCox_~a&Fv?MgS@GDH{+t+s+c+0n^cF zzuORt5sT z7V+Q$4MPMC;t0uAOrTUA$b^6$^5G2fzrA`BqKbKoZhZUj*hGLkkUhd=Z0&j*tStVM z;5|bgfA;jk^lcZFE1r?j8Z|3S{fLA>Ew=uaHb|1SW->Um~# z#nL8OQ|T8Y&+EN>ekSs3FX+CEOm;|}5ER^!WU#xfJK*+qs-$MM=h+}!OF$p5DKfqV z8I>0qhU=ykJH97pr{fmZ)*5a+2{Q^0ybMc8eMv|L?ecGTP{2X+I|jU_Xu5n?G6!4f z26l={O_k9VeH9AmeQbU!)oaFem2z*K=}Pihi?;D2U@%V`qfZ8@;7ncS&WHw|URkTt zy;dg?Ucrnu(``ZBRkTE4=>%5mj2hx%ACPxUAYoFj(O_qt5MmRwiXv&@_xW&t;mUvA z(y&wa!|q4?kMDdsd19AvbV!Ha!0MtME958QFmYtZ@524@2Z0YHHy-p~KFjOa6#!hP zOFV0S&o++Kmm&_S^t$)ywQNYFP532y!zM8&8@T-QSmnG2Dc*Q6OsHv^1-)DWcWZ2H zrDqA`V?WJXn}RE`T!sXP6A?V{RL%@SZHy^;{2w6(f4JPpBL*4Bg&wWTF33!EP{vnh zAOP8RiZ|vOY*kU%9Fkj@*Ml=BZg_Ea!?B?Y>t`v<|HsqDNCxDVMuu@n6bv$eR4FF=R!FNuc&Shit7K{DgP1qQ2Q9 z?Ah`4O4l0SV+BD9Q%)?L0zWNr?C}(V!T;uymlAj$l_#)2PSmFM%~Of>UjG2KK$)*? z5^O=Nl!w_pU=^8LBgZfEOV)tIo}lb&^e#q|j-`xyVds5#R&(FYOtwLW#~wxsWBS*X zcUwn%b3P?D1qygMC{czkOMQH__oDZwR2Cg(z0g<4W7Y#wlzD zo;^35{-8wZVD@)Vr3+P;|=t^~l%izJmrQWX!*@ zy>4kqU%bkLf@Sf%D<+JeghGa&j?YbHn(^$vR28jTK%yP|X&nPO!M|sz)bI6bdnO|j z;xEf+90V+tmN2-M2V^6>x)?6Sga1V0ItEw~QhN8WUew<%7_p3)BA$maBR9EhZb`x^!d|`jxB5cX`L7LgyGHl6h(u z%=}hTz@zbZo5T@e()0K9bZp(2^|!RoZjdEwF6+GW`~)k0-Ig-vhEk+~k!8AudgPnu zW~c1!)lS?HR66=rRG*sFrX73c=+2@Wu{x;D3-{P{W1pP2`>aC zD`)PuL}Y*Z*dhH$%wtx}wmGrer)uo?IHr;6^2hLE`sNvLL_$US>o0=s02U)Si{fo_|6 z;g&B*Fv_g9yd->(kZ9DknodoPQyUMF$zWu}Xr$RRKA@yT^Skj?v6CB=6Z`I?axW50 zSusQgd>PMLGZ*Qm+hFRJ6wRf;xHqgee~}64Rj^h(hb~<>URz5`jeA|JIY+ZcW9NRHnD(=W?quztVlf} zvrY74vC=0uh}Fz?y#sx?lPJvu-)5@F7}X;uH^9a^Ys1GAvPTFFQ%Ph(ELwp?x^J|( zW>1|cDA9vP8DIFJEp^O34kN`twsOC_vrLSbZeCea_*7Vn%KcbPgF8v?aXHYfciIPA zQC(htjykhj!oq+J6M7>~i3*gk^T{J-9r*f7`@5Q~j2M2Uee4Fv({BHGnrNbd|9Fmi zc5^gkLabyeThpssm-y-yC-K#7Nv!MU*X)TMqMkM!zB!sApxxvy@{Xei2}XR?XAATc z1MxZzRK_o0Y;V8pE^z_#X?TB5`U#m(jCNog%~8U{j?+$ZECbK&U%BbF{^HV+K^okH1SNWAOsLJnD-S_N!Zg;NXwXhq zhrsDGih*%~SI=LEj~^F7*nhghC`{hLh<`Z-W0;Aam+XR=1i@l)T25$19QBl63G}5@bm2Y)NQ7eW zA|2mB0&N>sIP{;7(?Vxo?}E<$SM|FCeIXE)dnn`hElRY7QTiuxuwwG-86hyxP`jk3 zEYMcCR#+$-^xW<-nNXo4%uPjd17=WRxWLDQT;w&k$OZfKl7 zL`?V|==fqzF{|Jo^M@*G&n+1+_?`=l3t__m6ez~TN})kM2~BS>&~*&G?u-unPA}cH z8?2DFs|bswL_hLFW*x|e42FBrVkZsmb&*;c1!#rh(?uEq_+Gb!$`LR)=CoaOLSSg! zGUNu<1Mnas8)Ue;31?8b$MbZ)kwI6 z_Q1h|1dc#!wez6Ecf|rS+F;?-R%pcFKX&}KaKupmN0#Oh;ChMl$av8%%8eoSQ1KNi z8r)s`$k(di1|kEmhcm*680~ewDuR#|rP^MD!M`rDQBV5~Mu@Re?VieZST6+;3lYHl z0uKu~I+cO7wdpD+X3fTt7E)1bo{3`o|~$i@R+?aU!As&7VKsLxZHz8#Y+BzpZa4 zXjPX@K`T(-H-a?*reXs@Ogt7$?w{TkYI}{hGr;|AawoysA7Ph+P`N|K&k4K0PIjhb zr-2I6deXc20Rq&6_i<^0D)OyRxhISc6FAP!eHUM}(<7cZ$9)-&LBHL$|KJzw!!6S1 ziT6h&t>Y@F3Y+P?2CRYdS1Sy56$;}g>XbHg{j)c{=*I^scKgDGop zXIje^Kshf|ZtV#Gn-Xva7|uQ%&EK@)z0;1}tQfW~R{qGtFf}4ul|q4I&^rD#{}Kjy z+4nFN81Ihjt;x(g{>B;d9q9LZZ$SlY1H3z|!HiFSzevvyI71Y9D*||9#QgEQ6LiQ) zIEn4p-{`grW@3h*{}ZyDWp;t%XJP6EU9&j~BF%CaaK8Wpd4LJK4Gu8W_7R!wJzykt zTBm*Kmk2U_UyFN}^gR6BE{*Vov`v-iBYZ2p*fI}@0p7;B-uNL*5!3mo3RSc06jVd|*MTc}Pz`>bLB13wVE?7VNHs8W0L`n|Au3wjUB~+{(6GYAK@=_4RaFvJq(F0 z=N$EF=3i!J1eHvvfdGXp-2W0shCw-t6M`v`m)u8gh_Ec4;H`x=DPP@X!9Sg`sW12U(WqAkvmQW8VG~A=->2VeF!GnKzT~; zrvv`uzqDW+TGPy!NTLXN2l|0==N!}P8zy;1VbIh)`K&7(U=^qG4TM2b`ev8(PNjgg zoK_c#gW3cOMg8>4P&t>f#@2qzyRFm+kKn~VKdrZ?plYNlcqFGXCF}ZWsLC_mKoEMb zZ*9JcWyX+b0LMeaG(g-y|DZ`B)l@y{i=d2;jk%uixTl=1b2HUEKe^38vj`RL!X~8!7{N@y-m2q z>7VFFurp%V`nld(fj&=?YcOmRFTv2=F!AXX#rS_>q(sEuSem%=6IKPR?XE-g&`D7G zqri;Y05kt2Wom$kSW{H)iynRghq}w8jJ%RmWRCs^s57pGO8+9XkyuB>BJkZX8Gg48 zW_{$f8|g@GR*UHcf`%XvlCL@FwiHuNX3Jri6AzFr_>2LYpb9cUs)9%2I$78vj{s~n zx2hq%ZRaxEOJ-$Ijbzr_gNhNi;G9<>Q~w*XcAlXh;SM5pzOzde2%nGqi0*Dcf9CZHf8 zmQO!^5}&`h7<60-uO29FPyv{5!NC*>bN(CZ9-+;ZPfMAl`!x+UhHZ!^p<7lz&akxs zbR(AI1-+j4e)@C{{yu!!C>!bhBfs$+wLs#LLxcua4hhq3JKPK3+v}$@0yDhhxMblF z^lXT9@$ESL`KAz`C1~IZLiV~Pe@4n8+d8&_MjF1|63hS-K^jM*g%Ogn3KEXi6&C3{ zf~QZewHn5e{hmIGpo9P7Z0$K_@Q0P!awz7&8L$Mwa=E)7KtWchL@qFvf6~66&ITNd z%|kNVWAF1Om#GK;JL)zGA|7d9@IzwnU@))$4m!}_RzrMK$;eTZ)Qkre1AiAVKYfg> z)W82DP%#ze>!o)~H2?hi_H!MA0F6R5w^)#Rg64NrFGl+0zP0iC8 z@cgcj5Ct=3x-?#MDUi!&J$xcqT|w)y=j#*13Q_q?nfc4j$p@yYskpFBHD4zt49({w zj5p;nA6PeT`7Z}pf2jQN(9E-oGc(DtqR_iuU$Ut>pl&?VfotvdZGXM0$qh+^)U8(2 zB!1r?w;mc4NR51L+{z!g_jsd2XixrQ-HNg~*h5gl`FN3QYG!b?rebZm>S3~OmBqjf z;}qAkDcp1A&xT&?=<%6cwoElP^&qMcBQ#|!dTW2|Krb$InZ7iOQe0bqayiq7>#st8 zv65L6tBTIKSl2j}F=@+ohe%JOt*&JXIa*oJQ7tVEi1pQ)Z3?2L|@)=Fjo)6_j(YRqig(Q z0=n1o3m}eTA*uu{o=XbS+MwKMUgOG*@?LDdw^&=~@9gI~Sb-M9{&}p$@a0M`I)W4V)sPjwJLXa6)%MD%0Vi0I9fZkY<_V^cmFMX&1Jul8K0a8QK=m7Z-cW2siiBaIeSt( zeMz$e)sAA66Pt^L8%a-BLuS?#r1bo@))W#<`QzrlrYxO(`PjzM!%flEO=DrSCV!f6 zi%RlV@C==P_U1&QCgxt1oG7(@jn{ZiwcOUHm`hEshum?vej^xob-8cA80}4p+!-$0 z)YF^wRZF5ICZ#p6v6-Y+?#m66GfxNdCC4ZVd>S3~4A-ZRSTm6NBxib0n}73}n(iF( zo`Ty-`d#B@9B0?^gQs#Dmxk$1k#|g*Eld)}s+UJ57|ge@jpjCZid<_^zsZ!fYYgSm zRH+`-6(6e`q&uBNxB|BFR+*rEtIx(6W~OEe8KYiq6Ccb^S2$hiUJ8#8331xdaZ^?` zQ2g<9lyTXH^;mo_JdtO(IX@+sy(;)%H6SS`VS;KiI(6&e1VhvEbT^w8iDfOrc*)V9 z66dcp;9hU|K)$&3V6plBiGUmh-mc0|?ORo*)Wi+5rLVnxHX%? z=TRUsUY%_=s^Q*L7Unwl_yv{W%F!P3j+e8-4_9tBR+@9Q*W1c7wJgayw}@)QdpYE_ zx*gdMbBU$A^lAMk|3Y2vc`Sq9%hi?P00(#ejy*G_wuANGSN*S(;szcMY?6QO>$K5E zf6^dMTDqBQt(qmQPAqIJqb#SV7dg{r9G!}FCpHZVKR3^Aeb2-SZO&IVa$1Y7S|l&5 z-x-jOK6nm;CHvstG=8_tlKN(V?m%_4^-`ni8fmd*R?ZpyE!IWF(A0Ga@A;^6Zl8qoJM2B-UxQxPnXQ7gTsZ%uv>_p6Gs>^0RcNO^wT$^~0aaBSO9IRe3 zaoKQO@MmnI!;SVEX3^l{FLZdA@X0-?rL61eZRCviFkQ}=fc^91jUU$5Ugs>z^^8_A zVYlqf0*M=q6DOM)dIJfp}%cf#wCibB3hl=TjYtWpN~u@Ep=>trZibV<;I$; ze)JL6ta{-7xlC=stEt@nKmZ=qk16zu`Rw}~_j$lAP<(a|rZG>fr(i8wezE3)WI!`w z(A7P1FJq!Q=+ol893OFD+-6@?eq4LwH708xK;Ch)Li?v7dsT35x{D?`-q!RJSmDj` zQaBFxB`k%Ze^3+PF!sZMo#cJTk6zNvjnMPYrEC^m}?awtt&U4Qrbq*p!l zy#t6@TH8*QQnhXhdu^OEW8bjK@=DVk5bbAwob$Xg%F!dg)gz^FIPohv37O(vl5VpV zs2u4_*{KwyGABRTzZT8MXV?c#DoccSUOe<^ciMzs)kmKXv1GPpo^h-4FGMSC6q*xj z4$3pN<(n7;;)QzUr_P8j9Io*jxIGh7IeQhCpFg{Krgvi`#;c~xPGM-K=Yy}NcS7>z zbh>-^lF9n+zWt@M(JVjurQ9lN%;FZ-k5=uOFn+A)!O&DubHP+&!+4`QskFB_XEKS; zUR0~b-F+a|LqUmHH9=yL40zGwv6`*FM4MaP*;761xFqx0BmZT;SCkx1cE_k+QIYhR z)bJ18YXwA-;YQ2r(E<**E(cdl|E{jCF5Z~!BV9rHlCy2Jvq-h<(jbT1B z2V=ivRy6B(Wne{fc$hYK-2E<@txWHM5|@dj_0_s*QcQ7~@>cqht=Aui=07wgZDcRT zlI8ep-Q8K}r`xfZFiPd&H#Nhb(b%_W&TQlVrE|b`fYY*GypckUd9STwCsmTiK#Z44 zQ7T{KQZF~&UQ=(fru}jNp5jIF*g57qXJid9E#{e6ZYQ5+qR-rvSirS~f)9&`Pmbz8 zImm@x8(XVP-6GYv)t?%pT4>^C@84BzmN|>}{NtSm6Q6$3rX1aY?vH-gG4`srs;R_$ zGU+c{ZD+r=inaYtBJyfU9wgr0Dh1=wsu6dv^_7;uk|jr*0}D+970pRjo4iB$4x7vj zW`TIh_%t9*-&nE&oQUQk`(|S1{eVTq@_+JB(Z5W@hHZ1HDS05JGm~ZKE(Q{mQN5<` z#anoU)e*kL2SigfxMOWak9q`l0;p=SwM$mv^g#%+{d1Vy;o3s5* z-u6SAQc(sxfAhIt|NGx&{#9sqguZtTU((xSvKln;bfG!d%(>ycGxwc_-)fLmhA96m z$GF8Wva3(3J*$BIOxonk8IJPObQ@f`w)-#>hCV~={x2;Y4~Ni<*&u@XCz-wvk>mY} zO!uGK!ywsi_bY~ShqpiD)OREb;WYhLB61|BWb{`NfYlkdt19L*n1evmQK`R zRojc2aIyT0qpr=*kkMjH>{;j#s^s`fnj6po)1{3%?ImCe9Zbkk@lWA*s^#~H|NH}BY4JZWDNylO4npepaDE4Zu(lH~_a8`g zQ0rGJE$Tn2QVg_W_>bU|n)O$R&G#QwLH8;C?%eP0{%`kxN#cK{Px=49@qFL%4fLXt Tw%_2~|^(y?UAaG8PurRe3on4J<5Z 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

    A^$AqZJOECOPMRfL7je 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

    5(`x>gGo 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 diff --git a/Resources/indicators/images/correlation.png b/Resources/indicators/images/correlation.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec579deb833518fcfaf8ac93470649969f32e4a GIT binary patch literal 59338 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

    ErMFtpRCVI^ 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', + 'update-parameter-type': 'time/number pair or an IndicatorDataPoint', 'update-parameter-value': 'bar.EndTime, bar.Close' }, 'BarIndicator': { 'name': 'bar-indicator', - 'update-parameter-type': 'a TradeBar, or QuoteBar', + 'update-parameter-type': 'a TradeBar or QuoteBar', 'update-parameter-value': 'bar' }, 'TradeBarIndicator': { @@ -223,6 +223,10 @@ def find_indicator_type(base_type): include(DOCS_RESOURCES."/indicators/visualization.php"); ?>""") + if description.find(' 0: + description = description.replace('','') + if len(description) > 127: + description = description[:127] + '...' with open(f'{folder}/metadata.json', 'w', encoding='utf-8') as fp: metadata = { 'type': 'metadata',