{"action":"created","comment":{"url":"https://api.github.com/repos/QuantConnect/Lean/pulls/comments/30605992","id":30605992,"diff_hunk":"@@ -0,0 +1,332 @@\n+﻿/*\n+ * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.\n+ * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.\n+ * \n+ * Licensed under the Apache License, Version 2.0 (the \"License\"); \n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n+ * \n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+*/\n+\n+using System;\n+using QuantConnect.Data.Market;\n+\n+namespace QuantConnect.Indicators\n+{\n+    /// <summary>\n+    /// This indicator computes Average Directional Index which measures trend strength without regard to trend direction.\n+    /// Firstly, it calculates the Directional Movement and the True Range value, and then the values are accumulated and smoothed\n+    /// 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.\n+    /// From these accumulated values we are therefore able to derived the 'Positive Directional Index' (+DI) and 'Negative Directional Index' (-DI)\n+    /// which is used to calculate the Average Directional Index.\n+    /// </summary>\n+    public class AverageDirectionalIndex : IndicatorBase<TradeBar>\n+    {\n+        private TradeBar _previousInput;\n+\n+        private readonly int _period;\n+\n+        private IndicatorBase<TradeBar> TrueRange { get; set; }\n+\n+        private IndicatorBase<TradeBar> DirectionalMovementPlus { get; set; }\n+\n+        private IndicatorBase<TradeBar> DirectionalMovementMinus { get; set; }\n+\n+        private IndicatorBase<IndicatorDataPoint> SmoothedDirectionalMovementPlus { get; set; }\n+\n+        private IndicatorBase<IndicatorDataPoint> SmoothedDirectionalMovementMinus { get; set; }\n+\n+        private IndicatorBase<IndicatorDataPoint> SmoothedTrueRange { get; set; }\n+\n+        /// <summary>\n+        /// Gets or sets the index of the Plus Directional Indicator\n+        /// </summary>\n+        /// <value>\n+        /// The  index of the Plus Directional Indicator.\n+        /// </value>\n+        public IndicatorBase<IndicatorDataPoint> PositiveDirectionalIndex { get; set; }\n+\n+        /// <summary>\n+        /// Gets or sets the index of the Minus Directional Indicator\n+        /// </summary>\n+        /// <value>\n+        /// The index of the Minus Directional Indicator.\n+        /// </value>\n+        public IndicatorBase<IndicatorDataPoint> NegativeDirectionalIndex { get; set; }\n+\n+        /// <summary>\n+        /// Initializes a new instance of the <see cref=\"AverageDirectionalIndex\"/> class.\n+        /// </summary>\n+        /// <param name=\"name\">The name.</param>\n+        /// <param name=\"period\">The period.</param>\n+        public AverageDirectionalIndex(string name, int period)\n+            : base(name)\n+        {\n+            _period = period;\n+\n+            TrueRange = new FunctionalIndicator<TradeBar>(name + \"_TrueRange\",\n+                currentBar =>\n+                {\n+                    var value = ComputeTrueRange(currentBar);\n+                    return value;\n+                },\n+                isReady => _previousInput != null\n+                );\n+\n+            DirectionalMovementPlus = new FunctionalIndicator<TradeBar>(name + \"_PositiveDirectionalMovement\",\n+                currentBar =>\n+                {\n+                    var value = ComputePositiveDirectionalMovement(currentBar);\n+                    return value;\n+                },\n+                isReady => _previousInput != null\n+                );\n+\n+\n+            DirectionalMovementMinus = new FunctionalIndicator<TradeBar>(name + \"_NegativeDirectionalMovement\",\n+                currentBar =>\n+                {\n+                    var value = ComputeNegativeDirectionalMovement(currentBar);\n+                    return value;\n+                },\n+                isReady => _previousInput != null\n+                );\n+\n+            PositiveDirectionalIndex = new FunctionalIndicator<IndicatorDataPoint>(name + \"_PositiveDirectionalIndex\",\n+                input => ComputePositiveDirectionalIndex(),\n+                positiveDirectionalIndex => DirectionalMovementPlus.IsReady && TrueRange.IsReady,\n+                () =>\n+                {\n+                    DirectionalMovementPlus.Reset();\n+                    TrueRange.Reset();\n+                }\n+                );\n+\n+            NegativeDirectionalIndex = new FunctionalIndicator<IndicatorDataPoint>(name + \"_NegativeDirectionalIndex\",\n+                input => ComputeNegativeDirectionalIndex(),\n+                negativeDirectionalIndex => DirectionalMovementMinus.IsReady && TrueRange.IsReady,\n+                () =>\n+                {\n+                    DirectionalMovementMinus.Reset();\n+                    TrueRange.Reset();\n+                }\n+                );\n+\n+            SmoothedTrueRange = new FunctionalIndicator<IndicatorDataPoint>(name + \"_SmoothedTrueRange\",\n+                    currentBar => ComputeSmoothedTrueRange(period),\n+                    isReady => _previousInput != null\n+                );\n+\n+\n+            SmoothedDirectionalMovementPlus = new FunctionalIndicator<IndicatorDataPoint>(name + \"_SmoothedDirectionalMovementPlus\",\n+                    currentBar => ComputeSmoothedDirectionalMovementPlus(period),\n+                    isReady => _previousInput != null\n+                );\n+\n+            SmoothedDirectionalMovementMinus = new FunctionalIndicator<IndicatorDataPoint>(name + \"_SmoothedDirectionalMovementMinus\",\n+                    currentBar => ComputeSmoothedDirectionalMovementMinus(period),\n+                    isReady => _previousInput != null\n+                );\n+        }\n+\n+        /// <summary>\n+        /// Computes the Smoothed Directional Movement Plus value.\n+        /// </summary>\n+        /// <param name=\"period\">The period.</param>\n+        /// <returns></returns>\n+        private decimal ComputeSmoothedDirectionalMovementPlus(int period)\n+        {\n+\n+            decimal value;\n+\n+            if (Samples < period)\n+            {\n+                value = SmoothedDirectionalMovementPlus.Current + DirectionalMovementPlus.Current;\n+            }\n+            else\n+            {\n+                value = SmoothedDirectionalMovementPlus.Current - (SmoothedDirectionalMovementPlus.Current / period) + DirectionalMovementPlus.Current;\n+            }\n+\n+            return value;\n+        }\n+\n+        /// <summary>\n+        /// Computes the Smoothed Directional Movement Minus value.\n+        /// </summary>\n+        /// <param name=\"period\">The period.</param>\n+        /// <returns></returns>\n+        private decimal ComputeSmoothedDirectionalMovementMinus(int period)\n+        {\n+            decimal value;\n+\n+            if (Samples < period)\n+            {\n+                value = SmoothedDirectionalMovementMinus.Current + DirectionalMovementMinus.Current;\n+            }\n+            else\n+            {\n+                value = SmoothedDirectionalMovementMinus.Current - (SmoothedDirectionalMovementMinus.Current / 14) + DirectionalMovementMinus.Current;\n+            }\n+\n+            return value;\n+        }\n+\n+        /// <summary>\n+        /// Computes the Smoothed True Range value.\n+        /// </summary>\n+        /// <param name=\"period\">The period.</param>\n+        /// <returns></returns>\n+        private decimal ComputeSmoothedTrueRange(int period)\n+        {\n+            decimal value;\n+\n+            if (Samples < period)\n+            {\n+                value = SmoothedTrueRange.Current + TrueRange.Current;\n+            }\n+            else\n+            {\n+                value = SmoothedTrueRange.Current - (SmoothedTrueRange.Current / period) + TrueRange.Current;\n+            }\n+            return value;\n+        }\n+\n+        /// <summary>\n+        /// Gets a flag indicating when this indicator is ready and fully initialized\n+        /// </summary>\n+        public override bool IsReady\n+        {\n+            get { return Samples >= _period; }\n+        }\n+\n+        /// <summary>\n+        /// Computes the True Range value.\n+        /// </summary>\n+        /// <param name=\"input\">The input.</param>\n+        /// <returns></returns>\n+        private decimal ComputeTrueRange(TradeBar input)\n+        {\n+            var trueRange = new decimal(0.0);\n+\n+            if (_previousInput == null) return trueRange;\n+\n+            trueRange = (Math.Max(Math.Abs(input.Low - _previousInput.Close), Math.Max(TrueRange.Current, Math.Abs(input.High - _previousInput.Close))));\n+\n+            return trueRange;\n+        }\n+\n+        /// <summary>\n+        /// Computes the positive directional movement.\n+        /// </summary>\n+        /// <param name=\"input\">The input.</param>\n+        /// <returns></returns>\n+        private decimal ComputePositiveDirectionalMovement(TradeBar input)\n+        {\n+            var postiveDirectionalMovement = new decimal(0.0);\n+\n+            if (_previousInput == null) return postiveDirectionalMovement;\n+\n+            if ((input.High - _previousInput.High) >= (_previousInput.Low - input.Low))\n+            {\n+                if ((input.High - _previousInput.High) > 0)\n+                {\n+                    postiveDirectionalMovement = input.High - _previousInput.High;\n+                }\n+            }\n+\n+            return postiveDirectionalMovement;\n+        }\n+\n+        /// <summary>\n+        /// Computes the negative directional movement.\n+        /// </summary>\n+        /// <param name=\"input\">The input.</param>\n+        /// <returns></returns>\n+        private decimal ComputeNegativeDirectionalMovement(TradeBar input)\n+        {\n+            var negativeDirectionalMovement = new decimal(0.0);\n+\n+            if (_previousInput == null) return negativeDirectionalMovement;\n+\n+            if ((_previousInput.Low - input.Low) > (input.High - _previousInput.High))\n+            {\n+                if ((_previousInput.Low - input.Low) > 0)\n+                {\n+                    negativeDirectionalMovement = _previousInput.Low - input.Low;\n+                }\n+            }\n+\n+            return negativeDirectionalMovement;\n+        }\n+\n+        /// <summary>\n+        /// Computes the next value of this indicator from the given state\n+        /// </summary>\n+        /// <param name=\"input\">The input given to the indicator</param>\n+        /// <returns>A new value for this indicator</returns>\n+        protected override decimal ComputeNextValue(TradeBar input)\n+        {\n+            TrueRange.Update(input);\n+            DirectionalMovementPlus.Update(input);\n+            DirectionalMovementMinus.Update(input);\n+            SmoothedTrueRange.Update(Current);\n+            SmoothedDirectionalMovementMinus.Update(Current);\n+            SmoothedDirectionalMovementPlus.Update(Current);\n+            PositiveDirectionalIndex.Update(Current);\n+            NegativeDirectionalIndex.Update(Current);\n+            var diff = Math.Abs(PositiveDirectionalIndex - NegativeDirectionalIndex);\n+            var sum = PositiveDirectionalIndex + NegativeDirectionalIndex;\n+            var value = Math.Round((sum == 0 ? 50 : ((_period - 1) * Current.Value + 100 * diff / sum) / _period), 5);","path":"Indicators/AverageDirectionalIndex.cs","position":285,"original_position":285,"commit_id":"526ca0292b60c804b30752b3e38475244f1a83b3","original_commit_id":"526ca0292b60c804b30752b3e38475244f1a83b3","user":{"login":"kaffeebrauer","id":5925601,"avatar_url":"https://avatars.githubusercontent.com/u/5925601?v=3","gravatar_id":"","url":"https://api.github.com/users/kaffeebrauer","html_url":"https://github.com/kaffeebrauer","followers_url":"https://api.github.com/users/kaffeebrauer/followers","following_url":"https://api.github.com/users/kaffeebrauer/following{/other_user}","gists_url":"https://api.github.com/users/kaffeebrauer/gists{/gist_id}","starred_url":"https://api.github.com/users/kaffeebrauer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kaffeebrauer/subscriptions","organizations_url":"https://api.github.com/users/kaffeebrauer/orgs","repos_url":"https://api.github.com/users/kaffeebrauer/repos","events_url":"https://api.github.com/users/kaffeebrauer/events{/privacy}","received_events_url":"https://api.github.com/users/kaffeebrauer/received_events","type":"User","site_admin":false},"body":"I think it's not necessary.","created_at":"2015-05-19T14:41:20Z","updated_at":"2015-05-19T14:41:20Z","html_url":"https://github.com/QuantConnect/Lean/pull/82#discussion_r30605992","pull_request_url":"https://api.github.com/repos/QuantConnect/Lean/pulls/82","_links":{"self":{"href":"https://api.github.com/repos/QuantConnect/Lean/pulls/comments/30605992"},"html":{"href":"https://github.com/QuantConnect/Lean/pull/82#discussion_r30605992"},"pull_request":{"href":"https://api.github.com/repos/QuantConnect/Lean/pulls/82"}}},"pull_request":{"url":"https://api.github.com/repos/QuantConnect/Lean/pulls/82","id":35727902,"html_url":"https://github.com/QuantConnect/Lean/pull/82","diff_url":"https://github.com/QuantConnect/Lean/pull/82.diff","patch_url":"https://github.com/QuantConnect/Lean/pull/82.patch","issue_url":"https://api.github.com/repos/QuantConnect/Lean/issues/82","number":82,"state":"open","locked":false,"title":"Implemented the Average Directional Index Indicator with accompanying…","user":{"login":"kaffeebrauer","id":5925601,"avatar_url":"https://avatars.githubusercontent.com/u/5925601?v=3","gravatar_id":"","url":"https://api.github.com/users/kaffeebrauer","html_url":"https://github.com/kaffeebrauer","followers_url":"https://api.github.com/users/kaffeebrauer/followers","following_url":"https://api.github.com/users/kaffeebrauer/following{/other_user}","gists_url":"https://api.github.com/users/kaffeebrauer/gists{/gist_id}","starred_url":"https://api.github.com/users/kaffeebrauer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kaffeebrauer/subscriptions","organizations_url":"https://api.github.com/users/kaffeebrauer/orgs","repos_url":"https://api.github.com/users/kaffeebrauer/repos","events_url":"https://api.github.com/users/kaffeebrauer/events{/privacy}","received_events_url":"https://api.github.com/users/kaffeebrauer/received_events","type":"User","site_admin":false},"body":"… test data and unit tests.\r\n\r\nImplemented the Average Directional Index Indicator with accompanying\r\ntest data and unit tests.","created_at":"2015-05-19T13:08:54Z","updated_at":"2015-05-19T14:41:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"89525c61a4e67feece22fd11e88e9a792ead1869","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/QuantConnect/Lean/pulls/82/commits","review_comments_url":"https://api.github.com/repos/QuantConnect/Lean/pulls/82/comments","review_comment_url":"https://api.github.com/repos/QuantConnect/Lean/pulls/comments{/number}","comments_url":"https://api.github.com/repos/QuantConnect/Lean/issues/82/comments","statuses_url":"https://api.github.com/repos/QuantConnect/Lean/statuses/526ca0292b60c804b30752b3e38475244f1a83b3","head":{"label":"kaffeebrauer:master","ref":"master","sha":"526ca0292b60c804b30752b3e38475244f1a83b3","user":{"login":"kaffeebrauer","id":5925601,"avatar_url":"https://avatars.githubusercontent.com/u/5925601?v=3","gravatar_id":"","url":"https://api.github.com/users/kaffeebrauer","html_url":"https://github.com/kaffeebrauer","followers_url":"https://api.github.com/users/kaffeebrauer/followers","following_url":"https://api.github.com/users/kaffeebrauer/following{/other_user}","gists_url":"https://api.github.com/users/kaffeebrauer/gists{/gist_id}","starred_url":"https://api.github.com/users/kaffeebrauer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kaffeebrauer/subscriptions","organizations_url":"https://api.github.com/users/kaffeebrauer/orgs","repos_url":"https://api.github.com/users/kaffeebrauer/repos","events_url":"https://api.github.com/users/kaffeebrauer/events{/privacy}","received_events_url":"https://api.github.com/users/kaffeebrauer/received_events","type":"User","site_admin":false},"repo":{"id":35881605,"name":"Lean","full_name":"kaffeebrauer/Lean","owner":{"login":"kaffeebrauer","id":5925601,"avatar_url":"https://avatars.githubusercontent.com/u/5925601?v=3","gravatar_id":"","url":"https://api.github.com/users/kaffeebrauer","html_url":"https://github.com/kaffeebrauer","followers_url":"https://api.github.com/users/kaffeebrauer/followers","following_url":"https://api.github.com/users/kaffeebrauer/following{/other_user}","gists_url":"https://api.github.com/users/kaffeebrauer/gists{/gist_id}","starred_url":"https://api.github.com/users/kaffeebrauer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kaffeebrauer/subscriptions","organizations_url":"https://api.github.com/users/kaffeebrauer/orgs","repos_url":"https://api.github.com/users/kaffeebrauer/repos","events_url":"https://api.github.com/users/kaffeebrauer/events{/privacy}","received_events_url":"https://api.github.com/users/kaffeebrauer/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kaffeebrauer/Lean","description":"Lean Algorithmic Trading Engine by QuantConnect","fork":true,"url":"https://api.github.com/repos/kaffeebrauer/Lean","forks_url":"https://api.github.com/repos/kaffeebrauer/Lean/forks","keys_url":"https://api.github.com/repos/kaffeebrauer/Lean/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kaffeebrauer/Lean/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kaffeebrauer/Lean/teams","hooks_url":"https://api.github.com/repos/kaffeebrauer/Lean/hooks","issue_events_url":"https://api.github.com/repos/kaffeebrauer/Lean/issues/events{/number}","events_url":"https://api.github.com/repos/kaffeebrauer/Lean/events","assignees_url":"https://api.github.com/repos/kaffeebrauer/Lean/assignees{/user}","branches_url":"https://api.github.com/repos/kaffeebrauer/Lean/branches{/branch}","tags_url":"https://api.github.com/repos/kaffeebrauer/Lean/tags","blobs_url":"https://api.github.com/repos/kaffeebrauer/Lean/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kaffeebrauer/Lean/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kaffeebrauer/Lean/git/refs{/sha}","trees_url":"https://api.github.com/repos/kaffeebrauer/Lean/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kaffeebrauer/Lean/statuses/{sha}","languages_url":"https://api.github.com/repos/kaffeebrauer/Lean/languages","stargazers_url":"https://api.github.com/repos/kaffeebrauer/Lean/stargazers","contributors_url":"https://api.github.com/repos/kaffeebrauer/Lean/contributors","subscribers_url":"https://api.github.com/repos/kaffeebrauer/Lean/subscribers","subscription_url":"https://api.github.com/repos/kaffeebrauer/Lean/subscription","commits_url":"https://api.github.com/repos/kaffeebrauer/Lean/commits{/sha}","git_commits_url":"https://api.github.com/repos/kaffeebrauer/Lean/git/commits{/sha}","comments_url":"https://api.github.com/repos/kaffeebrauer/Lean/comments{/number}","issue_comment_url":"https://api.github.com/repos/kaffeebrauer/Lean/issues/comments{/number}","contents_url":"https://api.github.com/repos/kaffeebrauer/Lean/contents/{+path}","compare_url":"https://api.github.com/repos/kaffeebrauer/Lean/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kaffeebrauer/Lean/merges","archive_url":"https://api.github.com/repos/kaffeebrauer/Lean/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kaffeebrauer/Lean/downloads","issues_url":"https://api.github.com/repos/kaffeebrauer/Lean/issues{/number}","pulls_url":"https://api.github.com/repos/kaffeebrauer/Lean/pulls{/number}","milestones_url":"https://api.github.com/repos/kaffeebrauer/Lean/milestones{/number}","notifications_url":"https://api.github.com/repos/kaffeebrauer/Lean/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kaffeebrauer/Lean/labels{/name}","releases_url":"https://api.github.com/repos/kaffeebrauer/Lean/releases{/id}","created_at":"2015-05-19T12:48:04Z","updated_at":"2015-05-19T12:48:05Z","pushed_at":"2015-05-19T13:07:33Z","git_url":"git://github.com/kaffeebrauer/Lean.git","ssh_url":"git@github.com:kaffeebrauer/Lean.git","clone_url":"https://github.com/kaffeebrauer/Lean.git","svn_url":"https://github.com/kaffeebrauer/Lean","homepage":"https://lean.quantconnect.com","size":41688,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"QuantConnect:master","ref":"master","sha":"df7ae5b63b44d9db2fdc7d8daa699bbe1129925d","user":{"login":"QuantConnect","id":3912814,"avatar_url":"https://avatars.githubusercontent.com/u/3912814?v=3","gravatar_id":"","url":"https://api.github.com/users/QuantConnect","html_url":"https://github.com/QuantConnect","followers_url":"https://api.github.com/users/QuantConnect/followers","following_url":"https://api.github.com/users/QuantConnect/following{/other_user}","gists_url":"https://api.github.com/users/QuantConnect/gists{/gist_id}","starred_url":"https://api.github.com/users/QuantConnect/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/QuantConnect/subscriptions","organizations_url":"https://api.github.com/users/QuantConnect/orgs","repos_url":"https://api.github.com/users/QuantConnect/repos","events_url":"https://api.github.com/users/QuantConnect/events{/privacy}","received_events_url":"https://api.github.com/users/QuantConnect/received_events","type":"Organization","site_admin":false},"repo":{"id":27251463,"name":"Lean","full_name":"QuantConnect/Lean","owner":{"login":"QuantConnect","id":3912814,"avatar_url":"https://avatars.githubusercontent.com/u/3912814?v=3","gravatar_id":"","url":"https://api.github.com/users/QuantConnect","html_url":"https://github.com/QuantConnect","followers_url":"https://api.github.com/users/QuantConnect/followers","following_url":"https://api.github.com/users/QuantConnect/following{/other_user}","gists_url":"https://api.github.com/users/QuantConnect/gists{/gist_id}","starred_url":"https://api.github.com/users/QuantConnect/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/QuantConnect/subscriptions","organizations_url":"https://api.github.com/users/QuantConnect/orgs","repos_url":"https://api.github.com/users/QuantConnect/repos","events_url":"https://api.github.com/users/QuantConnect/events{/privacy}","received_events_url":"https://api.github.com/users/QuantConnect/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/QuantConnect/Lean","description":"Lean Algorithmic Trading Engine by QuantConnect","fork":false,"url":"https://api.github.com/repos/QuantConnect/Lean","forks_url":"https://api.github.com/repos/QuantConnect/Lean/forks","keys_url":"https://api.github.com/repos/QuantConnect/Lean/keys{/key_id}","collaborators_url":"https://api.github.com/repos/QuantConnect/Lean/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/QuantConnect/Lean/teams","hooks_url":"https://api.github.com/repos/QuantConnect/Lean/hooks","issue_events_url":"https://api.github.com/repos/QuantConnect/Lean/issues/events{/number}","events_url":"https://api.github.com/repos/QuantConnect/Lean/events","assignees_url":"https://api.github.com/repos/QuantConnect/Lean/assignees{/user}","branches_url":"https://api.github.com/repos/QuantConnect/Lean/branches{/branch}","tags_url":"https://api.github.com/repos/QuantConnect/Lean/tags","blobs_url":"https://api.github.com/repos/QuantConnect/Lean/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/QuantConnect/Lean/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/QuantConnect/Lean/git/refs{/sha}","trees_url":"https://api.github.com/repos/QuantConnect/Lean/git/trees{/sha}","statuses_url":"https://api.github.com/repos/QuantConnect/Lean/statuses/{sha}","languages_url":"https://api.github.com/repos/QuantConnect/Lean/languages","stargazers_url":"https://api.github.com/repos/QuantConnect/Lean/stargazers","contributors_url":"https://api.github.com/repos/QuantConnect/Lean/contributors","subscribers_url":"https://api.github.com/repos/QuantConnect/Lean/subscribers","subscription_url":"https://api.github.com/repos/QuantConnect/Lean/subscription","commits_url":"https://api.github.com/repos/QuantConnect/Lean/commits{/sha}","git_commits_url":"https://api.github.com/repos/QuantConnect/Lean/git/commits{/sha}","comments_url":"https://api.github.com/repos/QuantConnect/Lean/comments{/number}","issue_comment_url":"https://api.github.com/repos/QuantConnect/Lean/issues/comments{/number}","contents_url":"https://api.github.com/repos/QuantConnect/Lean/contents/{+path}","compare_url":"https://api.github.com/repos/QuantConnect/Lean/compare/{base}...{head}","merges_url":"https://api.github.com/repos/QuantConnect/Lean/merges","archive_url":"https://api.github.com/repos/QuantConnect/Lean/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/QuantConnect/Lean/downloads","issues_url":"https://api.github.com/repos/QuantConnect/Lean/issues{/number}","pulls_url":"https://api.github.com/repos/QuantConnect/Lean/pulls{/number}","milestones_url":"https://api.github.com/repos/QuantConnect/Lean/milestones{/number}","notifications_url":"https://api.github.com/repos/QuantConnect/Lean/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/QuantConnect/Lean/labels{/name}","releases_url":"https://api.github.com/repos/QuantConnect/Lean/releases{/id}","created_at":"2014-11-28T04:20:19Z","updated_at":"2015-05-19T09:39:37Z","pushed_at":"2015-05-19T13:08:55Z","git_url":"git://github.com/QuantConnect/Lean.git","ssh_url":"git@github.com:QuantConnect/Lean.git","clone_url":"https://github.com/QuantConnect/Lean.git","svn_url":"https://github.com/QuantConnect/Lean","homepage":"https://lean.quantconnect.com","size":41688,"stargazers_count":172,"watchers_count":172,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":114,"mirror_url":null,"open_issues_count":18,"forks":114,"open_issues":18,"watchers":172,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/QuantConnect/Lean/pulls/82"},"html":{"href":"https://github.com/QuantConnect/Lean/pull/82"},"issue":{"href":"https://api.github.com/repos/QuantConnect/Lean/issues/82"},"comments":{"href":"https://api.github.com/repos/QuantConnect/Lean/issues/82/comments"},"review_comments":{"href":"https://api.github.com/repos/QuantConnect/Lean/pulls/82/comments"},"review_comment":{"href":"https://api.github.com/repos/QuantConnect/Lean/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/QuantConnect/Lean/pulls/82/commits"},"statuses":{"href":"https://api.github.com/repos/QuantConnect/Lean/statuses/526ca0292b60c804b30752b3e38475244f1a83b3"}}}}