From 725ad73240a3dedd46ec1a69d64fd92508c8c411 Mon Sep 17 00:00:00 2001
From: JosueNina <36119850+JosueNina@users.noreply.github.com>
Date: Fri, 15 Nov 2024 09:19:55 -0500
Subject: [PATCH] Implement Average Range (AR) Indicator (#8404)
* Add Average Daily Range indicator and tests
- Implemented AverageDailyRange indicator
- The indicator uses a Simple Moving Average (SMA)
- Created unit tests for the indicator
- Includes example input data and test file (spy_adr.csv)
* Refactor AverageDailyRange Indicator
- Renamed AverageDailyRange to AverageRage for a more generic approach
- Replaced explicit types with 'var'
- Updated method name in test cases
- Placed AR method in the correct alphabetical order
* Solving minor issues with AR indicator
- Replace TradeBar with IBaseDataBar
- Remove unnecessary override methods
---
Algorithm/QCAlgorithm.Indicators.cs | 18 +
Indicators/AverageRange.cs | 81 ++++
Tests/Indicators/AverageRangeTests.cs | 80 ++++
Tests/QuantConnect.Tests.csproj | 3 +
Tests/TestData/spy_adr.csv | 526 ++++++++++++++++++++++++++
5 files changed, 708 insertions(+)
create mode 100644 Indicators/AverageRange.cs
create mode 100644 Tests/Indicators/AverageRangeTests.cs
create mode 100644 Tests/TestData/spy_adr.csv
diff --git a/Algorithm/QCAlgorithm.Indicators.cs b/Algorithm/QCAlgorithm.Indicators.cs
index 3da6baf8db9b..8ba5d84b20e7 100644
--- a/Algorithm/QCAlgorithm.Indicators.cs
+++ b/Algorithm/QCAlgorithm.Indicators.cs
@@ -145,6 +145,23 @@ public Alpha A(Symbol target, Symbol reference, int alphaPeriod = 1, int betaPer
return alpha;
}
+ ///
+ /// Creates a new Average Range (AR) indicator.
+ ///
+ /// The symbol whose Average Range we want to calculate
+ /// The period over which to compute the Average Range
+ /// The resolution
+ /// Selects a value from the BaseData to send into the indicator. If null, defaults to the Value property of BaseData (x => x.Value).
+ /// The Average Range indicator for the requested symbol over the specified period
+ [DocumentationAttribute(Indicators)]
+ public AverageRange AR(Symbol symbol, int period, Resolution? resolution = null, Func selector = null)
+ {
+ var name = CreateIndicatorName(symbol, $"AR({period})", resolution);
+ var averageRange = new AverageRange(name, period);
+ InitializeIndicator(averageRange, resolution, selector, symbol);
+ return averageRange;
+ }
+
///
/// Creates a new ARIMA indicator.
///
@@ -1894,6 +1911,7 @@ public SimpleMovingAverage SMA(Symbol symbol, int period, Resolution? resolution
return simpleMovingAverage;
}
+
///
/// Creates a new Schaff Trend Cycle indicator
///
diff --git a/Indicators/AverageRange.cs b/Indicators/AverageRange.cs
new file mode 100644
index 000000000000..f498feaefc6b
--- /dev/null
+++ b/Indicators/AverageRange.cs
@@ -0,0 +1,81 @@
+/*
+ * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
+ * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+using QuantConnect.Data.Market;
+
+namespace QuantConnect.Indicators
+{
+ ///
+ /// Represents the Average Range (AR) indicator, which calculates the average price range
+ ///
+ public class AverageRange : BarIndicator, IIndicatorWarmUpPeriodProvider
+ {
+ ///
+ /// The Simple Moving Average (SMA) used to calculate the average of the price ranges.
+ ///
+ private readonly SimpleMovingAverage _sma;
+
+ ///
+ /// Initializes a new instance of the AverageRange class with the specified name and period.
+ ///
+ /// The name of the AR indicator.
+ /// The number of periods over which to compute the average range.
+ public AverageRange(string name, int period) : base(name)
+ {
+ _sma = new SimpleMovingAverage(name + "_SMA", period);
+ }
+
+ ///
+ /// Initializes the AR indicator with the default name format and period.
+ ///
+ public AverageRange(int period)
+ : this($"AR({period})", period)
+ {
+ }
+
+ ///
+ /// Indicates whether the indicator has enough data to start producing valid results.
+ ///
+ public override bool IsReady => _sma.IsReady;
+
+ ///
+ /// The number of periods needed to fully initialize the AR indicator.
+ ///
+ public int WarmUpPeriod => _sma.WarmUpPeriod;
+
+ ///
+ /// Resets the indicator and clears the internal state, including the SMA.
+ ///
+ public override void Reset()
+ {
+ _sma.Reset();
+ base.Reset();
+ }
+
+ ///
+ /// Computes the next value of the Average Range (AR) by calculating the price range (high - low)
+ /// and passing it to the SMA to get the smoothed value.
+ ///
+ /// The input data for the current bar, including open, high, low, close values.
+ /// The computed AR value, which is the smoothed average of price ranges.
+ protected override decimal ComputeNextValue(IBaseDataBar input)
+ {
+ var priceRange = input.High - input.Low;
+ // Update the SMA with the price range
+ _sma.Update(new IndicatorDataPoint(input.EndTime, priceRange));
+ return _sma.Current.Value;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Tests/Indicators/AverageRangeTests.cs b/Tests/Indicators/AverageRangeTests.cs
new file mode 100644
index 000000000000..1fb652027b7c
--- /dev/null
+++ b/Tests/Indicators/AverageRangeTests.cs
@@ -0,0 +1,80 @@
+/*
+ * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
+ * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using NUnit.Framework;
+using QuantConnect.Data.Market;
+using QuantConnect.Indicators;
+
+namespace QuantConnect.Tests.Indicators
+{
+ [TestFixture]
+ public class AverageRangeTests : CommonIndicatorTests
+ {
+ protected override IndicatorBase CreateIndicator()
+ {
+ RenkoBarSize = 1m;
+ VolumeRenkoBarSize = 0.5m;
+ return new AverageRange(20);
+ }
+ protected override string TestFileName => "spy_adr.csv";
+
+ protected override string TestColumnName => "adr";
+
+ [Test]
+ public void ComputesCorrectly()
+ {
+ var period = 20;
+ var adr = new AverageRange(period);
+ var values = new List();
+ for (int i = 0; i < period; i++)
+ {
+ var value = new TradeBar
+ {
+ Symbol = Symbol.Empty,
+ Time = DateTime.Now.AddSeconds(i),
+ High = 2 * i,
+ Low = i
+ };
+ adr.Update(value);
+ values.Add(value);
+ }
+ var expected = values.Average(x => x.High - x.Low);
+ Assert.AreEqual(expected, adr.Current.Value);
+ }
+
+ [Test]
+ public void IsReadyAfterPeriodUpdates()
+ {
+ var period = 5;
+ var adr = new AverageRange(period);
+ for (int i = 0; i < period; i++)
+ {
+ Assert.IsFalse(adr.IsReady);
+ var value = new TradeBar
+ {
+ Symbol = Symbol.Empty,
+ Time = DateTime.Now.AddSeconds(i),
+ High = 2 * i,
+ Low = i
+ };
+ adr.Update(value);
+ }
+ Assert.IsTrue(adr.IsReady);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Tests/QuantConnect.Tests.csproj b/Tests/QuantConnect.Tests.csproj
index d1c2ea7653f4..dc23d19d0296 100644
--- a/Tests/QuantConnect.Tests.csproj
+++ b/Tests/QuantConnect.Tests.csproj
@@ -603,6 +603,9 @@
PreserveNewest
+
+ PreserveNewest
+
diff --git a/Tests/TestData/spy_adr.csv b/Tests/TestData/spy_adr.csv
new file mode 100644
index 000000000000..fc4ff551cfa6
--- /dev/null
+++ b/Tests/TestData/spy_adr.csv
@@ -0,0 +1,526 @@
+date,open,high,low,close,adr
+19980102 00:00,973100,975300,965300,973600,
+19980105 00:00,978400,984400,967800,977500,
+19980106 00:00,972500,972800,961900,966300,
+19980107 00:00,960900,965000,952200,964700,
+19980108 00:00,963100,963100,955000,957800,
+19980109 00:00,952500,955000,919100,924700,
+19980112 00:00,911300,941900,909100,940600,
+19980113 00:00,946300,956300,942200,952200,
+19980114 00:00,956900,959700,947200,958100,
+19980115 00:00,955000,957500,948100,949400,
+19980116 00:00,962500,966900,956600,962300,
+19980120 00:00,966900,980000,965000,980000,
+19980121 00:00,972200,976900,961600,971600,
+19980122 00:00,961600,968800,958800,963000,
+19980123 00:00,965000,967800,950000,956600,
+19980126 00:00,963800,967300,937500,957500,
+19980127 00:00,958100,980000,956600,970000,
+19980128 00:00,974100,981100,971700,978800,
+19980129 00:00,978400,995600,975600,987500,
+19980130 00:00,987800,989700,980000,983100,16190.0
+19980202 00:00,999100,1005000,997500,1002500,16065.0
+19980203 00:00,1000000,1008100,997200,1006900,15780.0
+19980204 00:00,1002800,1011600,998800,1005900,15875.0
+19980205 00:00,1013100,1015900,1000300,1003800,16015.0
+19980206 00:00,1010000,1015000,1006900,1012800,16015.0
+19980209 00:00,1017200,1017500,1007200,1011400,14735.0
+19980210 00:00,1014400,1024700,1011900,1020500,13735.0
+19980211 00:00,1020900,1031900,1017000,1021300,13775.0
+19980212 00:00,1017200,1029400,1008800,1026600,14180.0
+19980213 00:00,1021900,1029400,1018800,1021600,14240.0
+19980217 00:00,1028100,1030900,1021600,1023400,14190.0
+19980218 00:00,1023100,1034700,1022800,1034100,14035.0
+19980219 00:00,1032500,1034100,1027500,1030000,13600.0
+19980220 00:00,1030800,1037500,1023800,1035600,13785.0
+19980223 00:00,1042500,1042500,1033400,1040000,13350.0
+19980224 00:00,1039100,1040900,1029400,1031900,12435.0
+19980225 00:00,1037500,1048800,1036300,1044800,11890.0
+19980226 00:00,1044400,1051600,1041900,1050600,11905.0
+19980227 00:00,1049700,1055300,1043100,1052000,11515.0
+19980302 00:00,1052500,1057500,1046300,1048100,11590.0
+19980303 00:00,1045300,1054700,1045000,1054100,11700.0
+19980304 00:00,1050900,1054100,1040600,1049700,11830.0
+19980305 00:00,1035000,1044400,1031600,1037500,11830.0
+19980306 00:00,1045600,1058800,1044400,1057500,11770.0
+19980309 00:00,1055300,1062200,1052500,1054400,11850.0
+19980310 00:00,1062200,1068400,1053800,1066600,12065.0
+19980311 00:00,1069700,1073100,1067300,1072500,11715.0
+19980312 00:00,1070900,1075900,1065000,1072500,11515.0
+19980313 00:00,1078400,1080000,1068800,1072200,11045.0
+19980316 00:00,1078400,1082800,1075300,1082500,10890.0
+19980317 00:00,1083100,1085000,1076600,1084700,10845.0
+19980318 00:00,1082500,1089400,1080000,1087800,10720.0
+19980319 00:00,1089700,1093800,1086600,1093400,10750.0
+19980320 00:00,1095600,1101900,1088800,1100000,10720.0
+19980323 00:00,1097200,1103100,1094100,1095000,10715.0
+19980324 00:00,1100600,1108100,1099400,1105900,10575.0
+19980325 00:00,1114100,1115300,1091900,1101900,11120.0
+19980326 00:00,1098800,1107500,1096300,1101300,11195.0
+19980327 00:00,1107500,1107800,1090000,1095300,11475.0
+19980330 00:00,1096300,1100900,1089700,1093400,11475.0
+19980331 00:00,1101600,1111900,1097500,1100900,11710.0
+19980401 00:00,1103100,1110800,1094100,1109800,11870.0
+19980402 00:00,1109400,1122500,1107500,1120300,11980.0
+19980403 00:00,1123400,1128100,1118400,1121900,11745.0
+19980406 00:00,1132500,1133800,1120600,1122500,11920.0
+19980407 00:00,1117500,1119400,1101600,1110000,12080.0
+19980408 00:00,1112200,1112800,1097500,1101300,12555.0
+19980409 00:00,1105600,1112800,1105300,1110000,12385.0
+19980413 00:00,1113800,1113800,1100000,1110000,12515.0
+19980414 00:00,1111300,1117200,1109100,1116900,12545.0
+19980415 00:00,1119700,1121300,1111600,1120200,12610.0
+19980416 00:00,1113100,1115000,1105000,1109100,12640.0
+19980417 00:00,1107200,1124100,1104400,1122200,13265.0
+19980420 00:00,1120000,1125600,1118800,1124100,12950.0
+19980421 00:00,1124400,1131600,1119100,1126300,13125.0
+19980422 00:00,1128800,1134400,1128100,1130000,13005.0
+19980423 00:00,1126300,1130000,1117500,1120900,12460.0
+19980424 00:00,1117500,1124700,1103400,1108800,12965.0
+19980427 00:00,1093800,1106600,1076300,1085900,13590.0
+19980428 00:00,1097800,1098100,1081300,1086300,13870.0
+19980429 00:00,1090300,1099700,1084400,1095300,13915.0
+19980430 00:00,1105600,1119200,1104100,1114400,13835.0
+19980501 00:00,1117500,1123100,1113100,1121900,13585.0
+19980504 00:00,1127200,1133100,1121600,1122500,13675.0
+19980505 00:00,1120000,1121600,1111300,1116600,13530.0
+19980506 00:00,1121300,1121300,1104700,1105000,13470.0
+19980507 00:00,1105000,1105600,1094100,1095900,13280.0
+19980508 00:00,1100000,1113800,1100000,1110000,13595.0
+19980511 00:00,1115600,1122200,1103800,1108600,13825.0
+19980512 00:00,1108100,1118800,1102500,1116400,14235.0
+19980513 00:00,1120600,1125600,1115900,1120600,14235.0
+19980514 00:00,1115300,1126900,1113400,1119700,14410.0
+19980515 00:00,1120000,1122200,1108100,1110000,14130.0
+19980518 00:00,1107200,1115900,1098300,1108400,14670.0
+19980519 00:00,1110000,1116900,1107800,1110600,14500.0
+19980520 00:00,1120900,1125000,1108800,1122800,14995.0
+19980521 00:00,1123800,1127800,1113100,1116900,15105.0
+19980522 00:00,1117500,1120600,1109400,1111600,14600.0
+19980526 00:00,1120900,1120900,1094400,1095300,14410.0
+19980527 00:00,1093100,1099100,1075800,1096300,14735.0
+19980528 00:00,1098800,1103800,1087300,1100000,14795.0
+19980529 00:00,1106300,1108100,1093800,1093800,14755.0
+19980601 00:00,1089700,1102200,1085600,1095000,15085.0
+19980602 00:00,1100000,1103400,1091600,1095900,15100.0
+19980603 00:00,1098800,1101900,1082200,1085000,15570.0
+19980604 00:00,1082500,1100600,1080600,1099100,15740.0
+19980605 00:00,1103800,1118800,1098800,1118100,16165.0
+19980608 00:00,1119400,1124700,1116600,1118800,15880.0
+19980609 00:00,1117200,1124200,1114100,1122800,15465.0
+19980610 00:00,1116300,1130600,1112500,1113800,15555.0
+19980611 00:00,1114400,1118800,1092800,1096600,16370.0
+19980612 00:00,1098800,1104400,1082500,1102500,16790.0
+19980615 00:00,1088100,1099100,1078800,1080000,17100.0
+19980616 00:00,1084100,1091600,1077500,1090600,16925.0
+19980617 00:00,1101600,1117800,1099400,1112500,17390.0
+19980618 00:00,1111900,1114400,1107500,1111600,16925.0
+19980619 00:00,1110600,1112300,1096300,1100300,16990.0
+19980622 00:00,1102500,1110600,1100600,1103800,16930.0
+19980623 00:00,1110900,1121900,1110000,1119700,16200.0
+19980624 00:00,1121600,1136900,1116100,1134700,16075.0
+19980625 00:00,1139100,1144700,1128100,1130000,16080.0
+19980626 00:00,1133100,1138400,1131300,1134100,15720.0
+19980629 00:00,1142500,1146900,1138000,1138900,15335.0
+19980630 00:00,1139100,1141900,1130600,1133600,15310.0
+19980701 00:00,1140600,1149400,1136300,1149400,14980.0
+19980702 00:00,1147200,1148800,1142500,1146300,14295.0
+19980706 00:00,1147800,1158400,1145600,1157800,13935.0
+19980707 00:00,1159800,1161300,1152800,1155600,13955.0
+19980708 00:00,1158800,1169400,1157500,1168100,14045.0
+19980709 00:00,1162800,1167200,1156300,1160000,13685.0
+19980710 00:00,1160300,1169100,1150600,1165300,13310.0
+19980713 00:00,1165600,1168400,1160600,1167500,12605.0
+19980714 00:00,1169400,1181600,1169400,1178100,12200.0
+19980715 00:00,1180600,1182800,1174400,1175600,11915.0
+19980716 00:00,1176900,1185900,1170600,1184400,11760.0
+19980717 00:00,1186300,1190000,1183100,1187500,11760.0
+19980720 00:00,1187500,1192300,1179400,1185000,11605.0
+19980721 00:00,1190000,1190000,1162800,1165300,12465.0
+19980722 00:00,1163400,1195900,1155300,1166300,13900.0
+19980723 00:00,1163100,1168400,1138800,1141900,14340.0
+19980724 00:00,1149700,1150900,1128800,1141600,14615.0
+19980727 00:00,1136300,1150000,1128400,1149800,15340.0
+19980728 00:00,1144400,1146600,1118800,1133100,16285.0
+19980729 00:00,1137200,1141300,1122500,1126600,16660.0
+19980730 00:00,1136300,1145900,1134100,1143400,16595.0
+19980731 00:00,1143400,1145000,1113100,1120600,17875.0
+19980803 00:00,1117800,1124200,1110300,1113800,17930.0
+19980804 00:00,1122200,1122200,1072500,1076100,19990.0
+19980805 00:00,1079400,1088800,1055900,1081600,21040.0
+19980806 00:00,1081300,1095200,1075600,1090900,21475.0
+19980807 00:00,1096900,1105900,1084700,1090300,21610.0
+19980810 00:00,1087500,1096600,1081900,1085900,21955.0
+19980811 00:00,1067800,1074400,1055000,1070600,22315.0
+19980812 00:00,1077500,1088100,1075000,1085000,22550.0
+19980813 00:00,1088100,1096600,1076300,1076400,22800.0
+19980814 00:00,1083400,1087200,1057800,1064800,23925.0
+19980817 00:00,1060000,1089400,1055000,1085000,25000.0
+19980818 00:00,1090000,1105900,1087800,1102500,24545.0
+19980819 00:00,1110900,1110900,1096300,1100000,23245.0
+19980820 00:00,1096900,1104100,1091600,1092500,22390.0
+19980821 00:00,1081900,1087200,1055000,1083800,22895.0
+19980824 00:00,1092500,1099400,1083100,1090600,22630.0
+19980825 00:00,1103800,1112500,1086400,1095000,22545.0
+19980826 00:00,1082800,1096300,1077500,1085000,22545.0
+19980827 00:00,1070000,1078400,1038900,1042500,23930.0
+19980828 00:00,1049700,1057200,1021600,1030000,24115.0
+19980831 00:00,1037500,1040200,950000,962500,27930.0
+19980901 00:00,960600,1005600,936300,996900,28910.0
+19980902 00:00,998100,1017500,987800,990000,28750.0
+19980903 00:00,976300,993800,966900,985200,29115.0
+19980904 00:00,994400,998100,957800,976300,30070.0
+19980908 00:00,1008800,1029700,998100,1025900,30915.0
+19980909 00:00,1027500,1031300,1004800,1007500,31270.0
+19980910 00:00,984400,993400,968100,982500,31880.0
+19980911 00:00,981900,1015000,970000,1012500,33115.0
+19980914 00:00,1028800,1044500,1020900,1031600,32825.0
+19980915 00:00,1028800,1043100,1022800,1042000,32120.0
+19980916 00:00,1047500,1052500,1031600,1050000,32260.0
+19980917 00:00,1022500,1030300,1017800,1022300,32155.0
+19980918 00:00,1023800,1024100,1010900,1019700,32190.0
+19980921 00:00,996300,1034100,989400,1021900,32815.0
+19980922 00:00,1035000,1036600,1021600,1030000,32750.0
+19980923 00:00,1038800,1070000,1037800,1066300,33055.0
+19980924 00:00,1063100,1068100,1032500,1043800,33895.0
+19980925 00:00,1031300,1054200,1026300,1043000,33315.0
+19980928 00:00,1053100,1063100,1042500,1049100,32565.0
+19980929 00:00,1053800,1059400,1033800,1049400,29335.0
+19980930 00:00,1035000,1043100,1013800,1018400,27335.0
+19981001 00:00,1000300,1015500,980900,986300,27580.0
+19981002 00:00,988800,1008800,972200,1003100,28065.0
+19981005 00:00,995900,1000000,963400,990000,27880.0
+19981006 00:00,1007500,1012800,975300,985300,28175.0
+19981007 00:00,986300,1000300,957500,972200,28990.0
+19981008 00:00,945600,967500,922200,962200,29990.0
+19981009 00:00,970000,995600,940600,986300,30490.0
+19981012 00:00,1006300,1014400,996900,997800,30185.0
+19981013 00:00,995600,1004100,987500,995300,30000.0
+19981014 00:00,989400,1018100,988400,1005000,30440.0
+19981015 00:00,1001300,1072500,999400,1050300,33470.0
+19981016 00:00,1061300,1067500,1050000,1056600,33685.0
+19981019 00:00,1056900,1068100,1055000,1063400,32105.0
+19981020 00:00,1075600,1088000,1060900,1065000,32710.0
+19981021 00:00,1068800,1076300,1058800,1071300,31975.0
+19981022 00:00,1067800,1084700,1061600,1080000,31350.0
+19981023 00:00,1079700,1080000,1067800,1071300,30565.0
+19981026 00:00,1077200,1085600,1067800,1075500,30425.0
+19981027 00:00,1084400,1089700,1062800,1066300,30490.0
+19981028 00:00,1065600,1078100,1060300,1067800,29915.0
+19981029 00:00,1070900,1089700,1066300,1089700,29355.0
+19981030 00:00,1101300,1109100,1095000,1100000,28230.0
+19981102 00:00,1108100,1117500,1101900,1114800,27180.0
+19981103 00:00,1115900,1118100,1107500,1111300,25835.0
+19981104 00:00,1124700,1130900,1110900,1118400,24695.0
+19981105 00:00,1115300,1138100,1111300,1137300,23770.0
+19981106 00:00,1134700,1145000,1133100,1142800,21615.0
+19981109 00:00,1139400,1142500,1125000,1131400,21615.0
+19981110 00:00,1130000,1139400,1125000,1126900,21505.0
+19981111 00:00,1138100,1140600,1118900,1123800,21105.0
+19981112 00:00,1123100,1131300,1116900,1120300,18170.0
+19981113 00:00,1122200,1130600,1121300,1127700,17760.0
+19981116 00:00,1142200,1143600,1128900,1138400,17840.0
+19981117 00:00,1136600,1156300,1130000,1143400,17800.0
+19981118 00:00,1143100,1149400,1135000,1147500,17645.0
+19981119 00:00,1152800,1159100,1146300,1155000,17130.0
+19981120 00:00,1163600,1167500,1158400,1166300,16975.0
+19981123 00:00,1174700,1192200,1171600,1191600,17115.0
+19981124 00:00,1190000,1196600,1184500,1186900,16375.0
+19981125 00:00,1189400,1191900,1181600,1188800,16000.0
+19981127 00:00,1194700,1197200,1190000,1195000,15190.0
+19981130 00:00,1190200,1193800,1166600,1166900,15845.0
+19981201 00:00,1161300,1180300,1152200,1178100,16470.0
+19981202 00:00,1172200,1179100,1160000,1175000,16895.0
+19981203 00:00,1172500,1183100,1151900,1152800,17455.0
+19981204 00:00,1166300,1188800,1155900,1179700,17760.0
+19981207 00:00,1180600,1195300,1180000,1192500,17930.0
+19981208 00:00,1185300,1197500,1175000,1184700,18180.0
+19981209 00:00,1186900,1189700,1178800,1188100,18005.0
+19981210 00:00,1188400,1188400,1167200,1168100,17980.0
+19981211 00:00,1164400,1173400,1155600,1170600,18150.0
+19981214 00:00,1161600,1164100,1139100,1144700,18935.0
+19981215 00:00,1146900,1167500,1145300,1166300,19310.0
+19981216 00:00,1171300,1171300,1157500,1164100,18685.0
+19981217 00:00,1172200,1185600,1170200,1185000,18735.0
+19981218 00:00,1183100,1191300,1178800,1190200,18720.0
+19981221 00:00,1192500,1213400,1190000,1203100,19435.0
+19981222 00:00,1204100,1212200,1191900,1205300,19420.0
+19981223 00:00,1211900,1231900,1208100,1228100,20005.0
+19981224 00:00,1231600,1238800,1222800,1226900,20290.0
+19981228 00:00,1232500,1233100,1220000,1226300,20585.0
+19981229 00:00,1227200,1244400,1221300,1243100,20380.0
+19981230 00:00,1239400,1247500,1230300,1233800,19835.0
+19981231 00:00,1233100,1239400,1224700,1228800,19615.0
+19990104 00:00,1233800,1252200,1217200,1228800,19805.0
+19990105 00:00,1229400,1248800,1229400,1244400,19130.0
+19990106 00:00,1258100,1276300,1257500,1275000,19305.0
+19990107 00:00,1263800,1272200,1257800,1269400,18900.0
+19990108 00:00,1281900,1285000,1259700,1275000,19620.0
+19990111 00:00,1276900,1276900,1252200,1262800,19795.0
+19990112 00:00,1262200,1262200,1238100,1240000,20110.0
+19990113 00:00,1204100,1251300,1203800,1233100,21235.0
+19990114 00:00,1236300,1239100,1209100,1211600,21625.0
+19990115 00:00,1223800,1247800,1220300,1243100,22310.0
+19990119 00:00,1253000,1274700,1235000,1252800,23525.0
+19990120 00:00,1260900,1279400,1250300,1256300,24355.0
+19990121 00:00,1255800,1258400,1232200,1235900,24495.0
+19990122 00:00,1221300,1238400,1217800,1225600,24510.0
+19990125 00:00,1232800,1240000,1219100,1236300,24365.0
+19990126 00:00,1241300,1257200,1236300,1255000,24610.0
+19990127 00:00,1263800,1266300,1244100,1244700,25065.0
+19990128 00:00,1252500,1269700,1251900,1266600,24800.0
+19990129 00:00,1273400,1283000,1254100,1278800,25385.0
+19990201 00:00,1286900,1286900,1270000,1270900,25495.0
+19990202 00:00,1270800,1272200,1247700,1262800,24970.0
+19990203 00:00,1256900,1279400,1256600,1271900,25140.0
+19990204 00:00,1273800,1275000,1248100,1248400,25545.0
+19990205 00:00,1256600,1256600,1232200,1240000,26045.0
+19990208 00:00,1250900,1250900,1233400,1243800,25655.0
+19990209 00:00,1243800,1245000,1215600,1218600,25890.0
+19990210 00:00,1221300,1230000,1213300,1226900,25520.0
+19990211 00:00,1230600,1256900,1225000,1256900,24740.0
+19990212 00:00,1248100,1255000,1226300,1235000,24675.0
+19990216 00:00,1247500,1256300,1233800,1243800,24425.0
+19990217 00:00,1231900,1253600,1222500,1227500,23995.0
+19990218 00:00,1231900,1243800,1222200,1239400,23620.0
+19990219 00:00,1240000,1257500,1233800,1239400,23495.0
+19990222 00:00,1244400,1277200,1242800,1276900,24185.0
+19990223 00:00,1275900,1285000,1265900,1275000,24095.0
+19990224 00:00,1278400,1288400,1254100,1254100,24765.0
+19990225 00:00,1245300,1252800,1225900,1247500,25000.0
+19990226 00:00,1247500,1248400,1228100,1239100,25125.0
+19990301 00:00,1236600,1243100,1208800,1237800,25395.0
+19990302 00:00,1245000,1253100,1223100,1228100,26050.0
+19990303 00:00,1230900,1235600,1217800,1231300,25715.0
+19990304 00:00,1240600,1252300,1232700,1250000,25555.0
+19990305 00:00,1275000,1281300,1259200,1278100,25315.0
+19990308 00:00,1282800,1288000,1272500,1285200,24870.0
+19990309 00:00,1281300,1299400,1274400,1282500,25245.0
+19990310 00:00,1284700,1292200,1277800,1290300,24495.0
+19990311 00:00,1296900,1311900,1288800,1302200,24815.0
+19990312 00:00,1310000,1310300,1292200,1295300,24125.0
+19990315 00:00,1299400,1311900,1295000,1311600,23535.0
+19990316 00:00,1311300,1316600,1304700,1309800,23005.0
+19990317 00:00,1306900,1309400,1296300,1302500,22105.0
+19990318 00:00,1297800,1323400,1297500,1321600,22320.0
+19990319 00:00,1323100,1326300,1298400,1300600,22530.0
+19990322 00:00,1300600,1305900,1294200,1299100,21395.0
+19990323 00:00,1293100,1296300,1257000,1264100,22405.0
+19990324 00:00,1268400,1271600,1256300,1269400,21455.0
+19990325 00:00,1280600,1292500,1277500,1291300,20860.0
+19990326 00:00,1286300,1291300,1277200,1284700,20550.0
+19990329 00:00,1291600,1314400,1291600,1312200,19975.0
+19990330 00:00,1299400,1312200,1295600,1303400,19305.0
+19990331 00:00,1311600,1316100,1284400,1286300,20000.0
+19990401 00:00,1296900,1296900,1281300,1293800,19800.0
+19990405 00:00,1309400,1323800,1302500,1323800,19760.0
+19990406 00:00,1321900,1329800,1311600,1319400,19895.0
+19990407 00:00,1326900,1333800,1313800,1328800,19645.0
+19990408 00:00,1331900,1347800,1322800,1345300,20175.0
+19990409 00:00,1344400,1356900,1335900,1348800,20070.0
+19990412 00:00,1334700,1362500,1332200,1360600,20680.0
+19990413 00:00,1362500,1364700,1340300,1351900,21055.0
+19990414 00:00,1360600,1360600,1326900,1330300,22145.0
+19990415 00:00,1334400,1335600,1310000,1326300,22770.0
+19990416 00:00,1329100,1329100,1311900,1321300,22335.0
+19990419 00:00,1326900,1345300,1283800,1289100,24015.0
+19990420 00:00,1298100,1310300,1288800,1306300,24505.0
+19990421 00:00,1310600,1337800,1257800,1336900,26540.0
+19990422 00:00,1351300,1362500,1343900,1359700,26705.0
+19990423 00:00,1358800,1367500,1350000,1357500,26830.0
+19990426 00:00,1365000,1368100,1354700,1361300,26795.0
+19990427 00:00,1371300,1375000,1358400,1365600,26485.0
+19990428 00:00,1364400,1372500,1350000,1353400,26780.0
+19990429 00:00,1355600,1360600,1338100,1345600,26320.0
+19990430 00:00,1350900,1356300,1315000,1334700,27605.0
+19990503 00:00,1334400,1357200,1330300,1356300,27885.0
+19990504 00:00,1351300,1358100,1331300,1333100,28315.0
+19990505 00:00,1339400,1350000,1318400,1349700,28895.0
+19990506 00:00,1344400,1351300,1323800,1335000,29020.0
+19990507 00:00,1345000,1349800,1334400,1346300,28740.0
+19990510 00:00,1348400,1357200,1335300,1342200,28320.0
+19990511 00:00,1353100,1368800,1257800,1357200,32650.0
+19990512 00:00,1357500,1372200,1315000,1366300,33825.0
+19990513 00:00,1372500,1380000,1368100,1370200,33140.0
+19990514 00:00,1345600,1362500,1333100,1343000,33750.0
+19990517 00:00,1336300,1344800,1323100,1343100,31760.0
+19990518 00:00,1345300,1349800,1326300,1336300,31860.0
+19990519 00:00,1344700,1348800,1332500,1348100,28675.0
+19990520 00:00,1351300,1355900,1300600,1343100,30510.0
+19990521 00:00,1341300,1346900,1195800,1334200,37190.0
+19990524 00:00,1338400,1338400,1303900,1310900,38245.0
+19990525 00:00,1313800,1323400,1286900,1288400,39240.0
+19990526 00:00,1293100,1310000,1280900,1306600,39570.0
+19990527 00:00,1298400,1302800,1280000,1284400,39585.0
+19990528 00:00,1290000,1307500,1285900,1305900,38600.0
+19990601 00:00,1301300,1301600,1283800,1298800,38145.0
+19990602 00:00,1297500,1301900,1206300,1297800,41585.0
+19990603 00:00,1306900,1309100,1297800,1302800,40570.0
+19990604 00:00,1314700,1331900,1309400,1319400,40320.0
+19990607 00:00,1334400,1341900,1329100,1337500,40190.0
+19990608 00:00,1333800,1338000,1315900,1321600,40200.0
+19990609 00:00,1324100,1330900,1318100,1321600,35290.0
+19990610 00:00,1314400,1315000,1295900,1309100,33385.0
+19990611 00:00,1312200,1322200,1290900,1298100,34355.0
+19990614 00:00,1306900,1307500,1295500,1297800,33485.0
+19990615 00:00,1304700,1316600,1300800,1305900,33190.0
+19990616 00:00,1323800,1338800,1321600,1334800,32875.0
+19990617 00:00,1328800,1355600,1326300,1346600,33525.0
+19990618 00:00,1340600,1346900,1333800,1343100,31415.0
+19990621 00:00,1344700,1350000,1336600,1349400,24530.0
+19990622 00:00,1340000,1351900,1333400,1337000,23730.0
+19990623 00:00,1330000,1336300,1321300,1332800,22655.0
+19990624 00:00,1328800,1338100,1306600,1316900,22775.0
+19990625 00:00,1325900,1330200,1312500,1316600,22520.0
+19990628 00:00,1326900,1336300,1324700,1333800,22020.0
+19990629 00:00,1330000,1351300,1327800,1351300,22305.0
+19990630 00:00,1346300,1375000,1338400,1367500,19355.0
+19990701 00:00,1370000,1385000,1360600,1380600,20010.0
+19990702 00:00,1381300,1393000,1379100,1391900,19580.0
+19990706 00:00,1392500,1407500,1385900,1387200,20020.0
+19990707 00:00,1390600,1397200,1385200,1395600,19515.0
+19990708 00:00,1390600,1406300,1387500,1395600,19815.0
+19990709 00:00,1400000,1404700,1393800,1402200,19405.0
+19990712 00:00,1409400,1409400,1395000,1400600,18560.0
+19990713 00:00,1393800,1399200,1386600,1395000,18590.0
+19990714 00:00,1400000,1402200,1387500,1398400,18535.0
+19990715 00:00,1407800,1488800,1403100,1411300,21960.0
+19990716 00:00,1412500,1421600,1407500,1420000,21200.0
+19990719 00:00,1421900,1422500,1405600,1410000,21390.0
+19990720 00:00,1401300,1404100,1375300,1378000,22160.0
+19990721 00:00,1380900,1389100,1370000,1378800,22190.0
+19990722 00:00,1374400,1380000,1354700,1361400,22705.0
+19990723 00:00,1366600,1370000,1351300,1357500,22065.0
+19990726 00:00,1348800,1361300,1346300,1350000,21930.0
+19990727 00:00,1360000,1372000,1353800,1365000,22260.0
+19990728 00:00,1362500,1373100,1355900,1367300,21945.0
+19990729 00:00,1349400,1352500,1333100,1343800,21085.0
+19990730 00:00,1348100,1353400,1328800,1330900,21095.0
+19990802 00:00,1327500,1347500,1325000,1329400,21525.0
+19990803 00:00,1337200,1338400,1313800,1323600,21675.0
+19990804 00:00,1327200,1338800,1305300,1306900,22750.0
+19990805 00:00,1308800,1317200,1288400,1315600,23250.0
+19990806 00:00,1312200,1320000,1295000,1300600,23955.0
+19990809 00:00,1305900,1318000,1297200,1300500,24275.0
+19990810 00:00,1298800,1301600,1270000,1282200,25225.0
+19990811 00:00,1296900,1305300,1286300,1305300,25440.0
+19990812 00:00,1306900,1318100,1300000,1300200,22060.0
+19990813 00:00,1316300,1332500,1311300,1331900,22415.0
+19990816 00:00,1331300,1339700,1322500,1333800,22430.0
+19990817 00:00,1344400,1351600,1331300,1347000,22005.0
+19990818 00:00,1342000,1343800,1334100,1335600,21535.0
+19990819 00:00,1323800,1332300,1316900,1328800,21040.0
+19990820 00:00,1330600,1339100,1326900,1338800,20715.0
+19990823 00:00,1348100,1364500,1346600,1363900,20860.0
+19990824 00:00,1360600,1379700,1353800,1365000,21245.0
+19990825 00:00,1371900,1387800,1279100,1384400,25820.0
+19990826 00:00,1382800,1384200,1365000,1365000,25810.0
+19990827 00:00,1368800,1370600,1351300,1351600,25545.0
+19990830 00:00,1353400,1355000,1323900,1326600,25975.0
+19990831 00:00,1329400,1337500,1307500,1325000,26245.0
+19990901 00:00,1329400,1335600,1323100,1335600,25195.0
+19990902 00:00,1321300,1326700,1306600,1322500,24760.0
+19990903 00:00,1348800,1362800,1346900,1361900,24305.0
+19990907 00:00,1360600,1366300,1342800,1355200,24440.0
+19990908 00:00,1348400,1360600,1335000,1349100,24140.0
+19990909 00:00,1347500,1352500,1336900,1351300,23970.0
+19990910 00:00,1362500,1363600,1349400,1354500,23775.0
+19990913 00:00,1351300,1354700,1345000,1348100,23200.0
+19990914 00:00,1340600,1345600,1333800,1340600,22930.0
+19990915 00:00,1354400,1354400,1320600,1320800,23605.0
+19990916 00:00,1325000,1328100,1303100,1323800,24370.0
+19990917 00:00,1326300,1339400,1321600,1337200,24490.0
+19990920 00:00,1339400,1340000,1330900,1336300,24335.0
+19990921 00:00,1322500,1324700,1301600,1309100,24595.0
+19990922 00:00,1312500,1318400,1297500,1311600,24345.0
+19990923 00:00,1318100,1342500,1237800,1280000,24145.0
+19990924 00:00,1277500,1283800,1263100,1280600,24220.0
+19990927 00:00,1287500,1297500,1282800,1282800,23990.0
+19990928 00:00,1279400,1288100,1255600,1281900,24060.0
+19990929 00:00,1284400,1291300,1267800,1267800,23735.0
+19990930 00:00,1274400,1294400,1269700,1283800,24345.0
+19991001 00:00,1279400,1285600,1266300,1283400,24305.0
+19991004 00:00,1291900,1306300,1287500,1306300,24450.0
+19991005 00:00,1307200,1319700,1286900,1301900,24915.0
+19991006 00:00,1307500,1328100,1306900,1326300,24695.0
+19991007 00:00,1328600,1330000,1315000,1320000,24665.0
+19991008 00:00,1317500,1338800,1312300,1337200,25280.0
+19991011 00:00,1335900,1341300,1333100,1338100,25205.0
+19991012 00:00,1331300,1333100,1311900,1314100,25675.0
+19991013 00:00,1306900,1313100,1282500,1286600,25515.0
+19991014 00:00,1284800,1291900,1267500,1284100,25485.0
+19991015 00:00,1260000,1267500,1245000,1248100,25720.0
+19991018 00:00,1249400,1257500,1234400,1255600,26420.0
+19991019 00:00,1271900,1282500,1259400,1260800,26420.0
+19991020 00:00,1277500,1292500,1271300,1292200,26435.0
+19991021 00:00,1272200,1288800,1266300,1286300,22325.0
+19991022 00:00,1297500,1312200,1295600,1303400,22120.0
+19991025 00:00,1293100,1304700,1287500,1295000,22245.0
+19991026 00:00,1301900,1306900,1281900,1282500,21870.0
+19991027 00:00,1283800,1303100,1282500,1301300,21725.0
+19991028 00:00,1324400,1345000,1321900,1345000,21645.0
+19991029 00:00,1358400,1376900,1357200,1365600,21665.0
+19991101 00:00,1365000,1370000,1356300,1359400,21410.0
+19991102 00:00,1359700,1372500,1347500,1348100,21020.0
+19991103 00:00,1360000,1363800,1351300,1356900,20585.0
+19991104 00:00,1367500,1373600,1357700,1364700,20630.0
+19991105 00:00,1386300,1391100,1367800,1372200,20470.0
+19991108 00:00,1370000,1383800,1367500,1379400,20875.0
+19991109 00:00,1385000,1386900,1362800,1367200,21020.0
+19991110 00:00,1362500,1383900,1360800,1377500,20645.0
+19991111 00:00,1381900,1385600,1374700,1383800,19970.0
+19991112 00:00,1392500,1399700,1371300,1397500,20265.0
+19991115 00:00,1398400,1402500,1394100,1398100,19530.0
+19991116 00:00,1405600,1426300,1400900,1424400,19645.0
+19991117 00:00,1422500,1429400,1413100,1415600,19400.0
+19991118 00:00,1424400,1430000,1416300,1428100,18960.0
+19991119 00:00,1424100,1429700,1420000,1425000,18615.0
+19991122 00:00,1424400,1430000,1415000,1424700,18505.0
+19991123 00:00,1428400,1428400,1400600,1408800,18645.0
+19991124 00:00,1407500,1424400,1400000,1420600,18835.0
+19991126 00:00,1424700,1428800,1412500,1414400,18495.0
+19991129 00:00,1408800,1419200,1404400,1410000,18250.0
+19991130 00:00,1407500,1423100,1390000,1392500,19220.0
+19991201 00:00,1393100,1405000,1390000,1401300,18720.0
+19991202 00:00,1406300,1413600,1403800,1411300,18585.0
+19991203 00:00,1430300,1454100,1430300,1436900,18980.0
+19991206 00:00,1435300,1437200,1422500,1427500,18550.0
+19991207 00:00,1432800,1433100,1413800,1419400,18700.0
+19991208 00:00,1413400,1420600,1406300,1406300,18210.0
+19991209 00:00,1418100,1422200,1393800,1410000,18475.0
+19991210 00:00,1422800,1428100,1408800,1420000,18895.0
+19991213 00:00,1414400,1427200,1412800,1421300,18195.0
+19991214 00:00,1416300,1424800,1406300,1408100,18700.0
+19991215 00:00,1403800,1422000,1400000,1418000,18530.0
+19991216 00:00,1421900,1426600,1411600,1423800,18465.0
+19991217 00:00,1430000,1433100,1420600,1423800,18405.0
+19991220 00:00,1425600,1431900,1410900,1416900,18970.0
+19991221 00:00,1415900,1440600,1413400,1433400,19580.0
+19991222 00:00,1436300,1441900,1429700,1437500,18800.0
+19991223 00:00,1450200,1464400,1449700,1460900,18315.0
+19991227 00:00,1465000,1467800,1450600,1458100,18360.0
+19991228 00:00,1458800,1465000,1454800,1461400,18130.0
+19991229 00:00,1463100,1468100,1452500,1463400,17255.0
+19991230 00:00,1471300,1478800,1461900,1466300,17350.0
+19991231 00:00,1468400,1475000,1462500,1468800,17485.0
+20000103 00:00,1482500,1482500,1438800,1455600,18480.0
+20000104 00:00,1435300,1440600,1396400,1400600,19955.0
+20000105 00:00,1399400,1415300,1372500,1402800,21130.0
+20000106 00:00,1396300,1415000,1392500,1403400,21540.0
+20000107 00:00,1403100,1444400,1400600,1444400,22310.0
+20000110 00:00,1462500,1469100,1450300,1458100,22285.0
+20000111 00:00,1458100,1460900,1435000,1440900,22860.0
+20000112 00:00,1445900,1446300,1428800,1433400,22810.0
+20000113 00:00,1444700,1457500,1432800,1451300,22945.0
+20000114 00:00,1465300,1474700,1459700,1465000,22945.0
+20000118 00:00,1453400,1466300,1451900,1456300,23040.0
+20000119 00:00,1453100,1464700,1450000,1456900,22725.0
+20000120 00:00,1469700,1469700,1438100,1445000,22945.0
+20000121 00:00,1455000,1455000,1440900,1441300,23040.0
+20000124 00:00,1456600,1458400,1394100,1400600,25520.0
+20000125 00:00,1405200,1420000,1390000,1410000,26160.0
+20000126 00:00,1410000,1415500,1400900,1406700,26380.0
+20000127 00:00,1418400,1422200,1381300,1400000,27645.0
+20000128 00:00,1394400,1400600,1355300,1364700,29065.0
+20000131 00:00,1358100,1394400,1350000,1394400,30660.0
+20000201 00:00,1397500,1416900,1385300,1401900,30055.0
\ No newline at end of file