package indicator

import (
	"encoding/json"
	"math"
	"testing"

	"github.com/c9s/bbgo/pkg/types"
)

// generated from Binance 2022/07/27 00:00
// https://www.binance.com/api/v3/klines?symbol=ETHUSDT&interval=5m&endTime=1658851200000&limit=1000
var testKalmanFilterDataEthusdt5m = []byte(`[
  {
    "open": 1591.11,
    "high": 1593.62,
    "low": 1589.04,
    "close": 1590.14
  },
  {
    "open": 1590.14,
    "high": 1596.51,
    "low": 1590.13,
    "close": 1592.06
  },
  {
    "open": 1592.07,
    "high": 1594.41,
    "low": 1586.05,
    "close": 1587.02
  },
  {
    "open": 1587.02,
    "high": 1588.38,
    "low": 1583.86,
    "close": 1585.33
  },
  {
    "open": 1585.34,
    "high": 1595.2,
    "low": 1583.74,
    "close": 1594.69
  },
  {
    "open": 1594.69,
    "high": 1594.75,
    "low": 1589.89,
    "close": 1591.36
  },
  {
    "open": 1591.35,
    "high": 1592.55,
    "low": 1586.36,
    "close": 1588.95
  },
  {
    "open": 1588.95,
    "high": 1589.75,
    "low": 1588.39,
    "close": 1589.38
  },
  {
    "open": 1589.38,
    "high": 1589.39,
    "low": 1586.17,
    "close": 1588.53
  },
  {
    "open": 1588.52,
    "high": 1588.62,
    "low": 1581.95,
    "close": 1583.4
  },
  {
    "open": 1583.4,
    "high": 1584.67,
    "low": 1582.1,
    "close": 1582.36
  },
  {
    "open": 1582.35,
    "high": 1584.29,
    "low": 1577.82,
    "close": 1578.14
  },
  {
    "open": 1578.14,
    "high": 1581.95,
    "low": 1575.72,
    "close": 1581.52
  },
  {
    "open": 1581.52,
    "high": 1584.86,
    "low": 1578.51,
    "close": 1580.88
  },
  {
    "open": 1580.88,
    "high": 1581.77,
    "low": 1578.74,
    "close": 1581.11
  },
  {
    "open": 1581.1,
    "high": 1582.72,
    "low": 1579.07,
    "close": 1579.4
  },
  {
    "open": 1579.4,
    "high": 1580.93,
    "low": 1578,
    "close": 1579.6
  },
  {
    "open": 1579.59,
    "high": 1583.81,
    "low": 1579.59,
    "close": 1582.7
  },
  {
    "open": 1582.7,
    "high": 1583,
    "low": 1577.24,
    "close": 1579.45
  },
  {
    "open": 1579.46,
    "high": 1581.59,
    "low": 1577.44,
    "close": 1579.59
  },
  {
    "open": 1579.58,
    "high": 1581.41,
    "low": 1579.22,
    "close": 1580.56
  },
  {
    "open": 1580.57,
    "high": 1586.23,
    "low": 1579.86,
    "close": 1584.23
  },
  {
    "open": 1584.22,
    "high": 1587.36,
    "low": 1584.22,
    "close": 1585.15
  },
  {
    "open": 1585.15,
    "high": 1585.15,
    "low": 1579.83,
    "close": 1583.75
  },
  {
    "open": 1583.74,
    "high": 1592.49,
    "low": 1583.45,
    "close": 1587.76
  },
  {
    "open": 1587.76,
    "high": 1590.7,
    "low": 1585.62,
    "close": 1587.5
  },
  {
    "open": 1587.51,
    "high": 1587.51,
    "low": 1579.53,
    "close": 1581.16
  },
  {
    "open": 1581.15,
    "high": 1585.71,
    "low": 1581.15,
    "close": 1582.47
  },
  {
    "open": 1582.46,
    "high": 1582.86,
    "low": 1567.58,
    "close": 1571.52
  },
  {
    "open": 1571.53,
    "high": 1577.8,
    "low": 1571.03,
    "close": 1575.16
  },
  {
    "open": 1575.16,
    "high": 1578.06,
    "low": 1572.18,
    "close": 1576.66
  },
  {
    "open": 1576.66,
    "high": 1578,
    "low": 1574.62,
    "close": 1577.21
  },
  {
    "open": 1577.2,
    "high": 1584.57,
    "low": 1576.61,
    "close": 1584.05
  },
  {
    "open": 1584.06,
    "high": 1585.61,
    "low": 1580,
    "close": 1582.08
  },
  {
    "open": 1582.08,
    "high": 1583.4,
    "low": 1579.43,
    "close": 1579.43
  },
  {
    "open": 1579.43,
    "high": 1579.98,
    "low": 1574.53,
    "close": 1575.06
  },
  {
    "open": 1575.06,
    "high": 1578.52,
    "low": 1574.57,
    "close": 1576.49
  },
  {
    "open": 1576.5,
    "high": 1577,
    "low": 1572.5,
    "close": 1573.26
  },
  {
    "open": 1573.26,
    "high": 1579.41,
    "low": 1573.06,
    "close": 1578.35
  },
  {
    "open": 1578.35,
    "high": 1585,
    "low": 1577.16,
    "close": 1584.32
  },
  {
    "open": 1584.31,
    "high": 1587.97,
    "low": 1580.67,
    "close": 1585.7
  },
  {
    "open": 1585.7,
    "high": 1588.35,
    "low": 1584.37,
    "close": 1585.95
  },
  {
    "open": 1585.94,
    "high": 1587.09,
    "low": 1580.66,
    "close": 1580.97
  },
  {
    "open": 1580.97,
    "high": 1583.38,
    "low": 1577,
    "close": 1581.64
  },
  {
    "open": 1581.64,
    "high": 1586.79,
    "low": 1581.22,
    "close": 1585.42
  },
  {
    "open": 1585.42,
    "high": 1585.42,
    "low": 1581.67,
    "close": 1582.37
  },
  {
    "open": 1582.38,
    "high": 1584.86,
    "low": 1581.01,
    "close": 1581.02
  },
  {
    "open": 1581.03,
    "high": 1582.05,
    "low": 1578.99,
    "close": 1579.46
  },
  {
    "open": 1579.46,
    "high": 1579.89,
    "low": 1566.85,
    "close": 1567.99
  },
  {
    "open": 1567.99,
    "high": 1567.99,
    "low": 1553.2,
    "close": 1554.87
  },
  {
    "open": 1554.87,
    "high": 1558,
    "low": 1546.9,
    "close": 1550.4
  },
  {
    "open": 1550.4,
    "high": 1554.98,
    "low": 1546.27,
    "close": 1549.67
  },
  {
    "open": 1549.68,
    "high": 1555,
    "low": 1546.97,
    "close": 1553.88
  },
  {
    "open": 1553.89,
    "high": 1557.86,
    "low": 1553.6,
    "close": 1557.85
  },
  {
    "open": 1557.86,
    "high": 1558.37,
    "low": 1554.9,
    "close": 1556.3
  },
  {
    "open": 1556.31,
    "high": 1557.4,
    "low": 1552.81,
    "close": 1557.18
  },
  {
    "open": 1557.18,
    "high": 1563.78,
    "low": 1556.5,
    "close": 1562.72
  },
  {
    "open": 1562.72,
    "high": 1564.11,
    "low": 1558.76,
    "close": 1560.64
  },
  {
    "open": 1560.64,
    "high": 1562.31,
    "low": 1560.5,
    "close": 1561.24
  },
  {
    "open": 1561.25,
    "high": 1565.69,
    "low": 1561.23,
    "close": 1564.79
  },
  {
    "open": 1564.79,
    "high": 1565.33,
    "low": 1558.23,
    "close": 1559.9
  },
  {
    "open": 1559.89,
    "high": 1561.77,
    "low": 1555.87,
    "close": 1560.79
  },
  {
    "open": 1560.78,
    "high": 1562.07,
    "low": 1557.89,
    "close": 1560.36
  },
  {
    "open": 1560.36,
    "high": 1561.2,
    "low": 1556.13,
    "close": 1558.26
  },
  {
    "open": 1558.25,
    "high": 1563.12,
    "low": 1558.25,
    "close": 1562.35
  },
  {
    "open": 1562.36,
    "high": 1564.02,
    "low": 1561.76,
    "close": 1563.32
  },
  {
    "open": 1563.31,
    "high": 1564.29,
    "low": 1557.79,
    "close": 1559.87
  },
  {
    "open": 1559.86,
    "high": 1562.71,
    "low": 1558.77,
    "close": 1559.8
  },
  {
    "open": 1559.81,
    "high": 1559.91,
    "low": 1557.6,
    "close": 1559.19
  },
  {
    "open": 1559.2,
    "high": 1559.95,
    "low": 1554.3,
    "close": 1557.16
  },
  {
    "open": 1557.16,
    "high": 1557.17,
    "low": 1536.25,
    "close": 1541.89
  },
  {
    "open": 1541.89,
    "high": 1544.39,
    "low": 1538.55,
    "close": 1539.33
  },
  {
    "open": 1539.33,
    "high": 1546.28,
    "low": 1533.67,
    "close": 1543.99
  },
  {
    "open": 1543.99,
    "high": 1544.5,
    "low": 1538.21,
    "close": 1539.17
  },
  {
    "open": 1539.17,
    "high": 1543.33,
    "low": 1537.73,
    "close": 1543
  },
  {
    "open": 1543.2,
    "high": 1544,
    "low": 1535.81,
    "close": 1541.12
  },
  {
    "open": 1541.12,
    "high": 1541.13,
    "low": 1534.12,
    "close": 1536.89
  },
  {
    "open": 1536.9,
    "high": 1539.09,
    "low": 1528.25,
    "close": 1531.02
  },
  {
    "open": 1531.01,
    "high": 1532.91,
    "low": 1525.28,
    "close": 1532.32
  },
  {
    "open": 1532.33,
    "high": 1537.58,
    "low": 1532.32,
    "close": 1535.07
  },
  {
    "open": 1535.06,
    "high": 1541.28,
    "low": 1535.06,
    "close": 1539.52
  },
  {
    "open": 1539.53,
    "high": 1539.85,
    "low": 1533.37,
    "close": 1536.22
  },
  {
    "open": 1536.21,
    "high": 1536.22,
    "low": 1524.81,
    "close": 1527.09
  },
  {
    "open": 1527.1,
    "high": 1529.2,
    "low": 1520.62,
    "close": 1525.04
  },
  {
    "open": 1525.04,
    "high": 1528.2,
    "low": 1522.12,
    "close": 1523.72
  },
  {
    "open": 1523.71,
    "high": 1525.54,
    "low": 1519,
    "close": 1522.82
  },
  {
    "open": 1522.82,
    "high": 1524.98,
    "low": 1521,
    "close": 1522.19
  },
  {
    "open": 1522.19,
    "high": 1524.27,
    "low": 1512.68,
    "close": 1513.27
  },
  {
    "open": 1513.26,
    "high": 1514.55,
    "low": 1501.65,
    "close": 1514.14
  },
  {
    "open": 1514.14,
    "high": 1524.43,
    "low": 1513.03,
    "close": 1520.08
  },
  {
    "open": 1520.08,
    "high": 1525.07,
    "low": 1518.63,
    "close": 1520.61
  },
  {
    "open": 1520.61,
    "high": 1525.68,
    "low": 1517.43,
    "close": 1524.86
  },
  {
    "open": 1524.86,
    "high": 1525.04,
    "low": 1519.65,
    "close": 1520.26
  },
  {
    "open": 1520.27,
    "high": 1521.19,
    "low": 1517.91,
    "close": 1518.46
  },
  {
    "open": 1518.46,
    "high": 1525.25,
    "low": 1518.46,
    "close": 1524.83
  },
  {
    "open": 1524.84,
    "high": 1526.94,
    "low": 1521.69,
    "close": 1521.9
  },
  {
    "open": 1521.9,
    "high": 1524.8,
    "low": 1519.25,
    "close": 1519.88
  },
  {
    "open": 1519.88,
    "high": 1520.5,
    "low": 1517.33,
    "close": 1518.76
  },
  {
    "open": 1518.76,
    "high": 1522.64,
    "low": 1518.14,
    "close": 1520.46
  },
  {
    "open": 1520.46,
    "high": 1522.96,
    "low": 1518.63,
    "close": 1522.52
  },
  {
    "open": 1522.51,
    "high": 1522.52,
    "low": 1519.19,
    "close": 1520.61
  },
  {
    "open": 1520.61,
    "high": 1526.26,
    "low": 1519.52,
    "close": 1526.1
  },
  {
    "open": 1526.11,
    "high": 1530.26,
    "low": 1524.63,
    "close": 1528.65
  },
  {
    "open": 1528.65,
    "high": 1529.64,
    "low": 1521.24,
    "close": 1523.18
  },
  {
    "open": 1523.19,
    "high": 1525.92,
    "low": 1521.79,
    "close": 1525.6
  },
  {
    "open": 1525.61,
    "high": 1525.79,
    "low": 1522.78,
    "close": 1525.31
  },
  {
    "open": 1525.31,
    "high": 1529.6,
    "low": 1525.3,
    "close": 1528.93
  },
  {
    "open": 1528.93,
    "high": 1530.33,
    "low": 1527.02,
    "close": 1527.61
  },
  {
    "open": 1527.6,
    "high": 1534,
    "low": 1527.6,
    "close": 1533.98
  },
  {
    "open": 1533.98,
    "high": 1537.3,
    "low": 1532.24,
    "close": 1536.49
  },
  {
    "open": 1536.5,
    "high": 1536.5,
    "low": 1531.65,
    "close": 1532.92
  },
  {
    "open": 1532.92,
    "high": 1532.92,
    "low": 1529.1,
    "close": 1529.58
  },
  {
    "open": 1529.58,
    "high": 1535.97,
    "low": 1528.13,
    "close": 1532.48
  },
  {
    "open": 1532.49,
    "high": 1533.45,
    "low": 1530.29,
    "close": 1531.01
  },
  {
    "open": 1531.02,
    "high": 1532.56,
    "low": 1524.11,
    "close": 1524.37
  },
  {
    "open": 1524.36,
    "high": 1534.58,
    "low": 1524.28,
    "close": 1529.52
  },
  {
    "open": 1529.52,
    "high": 1530.55,
    "low": 1521.72,
    "close": 1522.54
  },
  {
    "open": 1522.55,
    "high": 1526.64,
    "low": 1522.45,
    "close": 1526.49
  },
  {
    "open": 1526.48,
    "high": 1530.2,
    "low": 1525.07,
    "close": 1526.92
  },
  {
    "open": 1526.92,
    "high": 1527.65,
    "low": 1525,
    "close": 1526.44
  },
  {
    "open": 1526.43,
    "high": 1527.68,
    "low": 1525.46,
    "close": 1526.05
  },
  {
    "open": 1526.05,
    "high": 1526.27,
    "low": 1516.23,
    "close": 1516.52
  },
  {
    "open": 1516.23,
    "high": 1520.67,
    "low": 1509.21,
    "close": 1520.48
  },
  {
    "open": 1520.48,
    "high": 1530.83,
    "low": 1519.77,
    "close": 1529.59
  },
  {
    "open": 1529.6,
    "high": 1531.12,
    "low": 1526.99,
    "close": 1531.11
  },
  {
    "open": 1531.12,
    "high": 1533.79,
    "low": 1529.25,
    "close": 1531.72
  },
  {
    "open": 1531.73,
    "high": 1532.96,
    "low": 1528.52,
    "close": 1529.64
  },
  {
    "open": 1529.64,
    "high": 1530.49,
    "low": 1523.16,
    "close": 1524.37
  },
  {
    "open": 1524.38,
    "high": 1524.58,
    "low": 1517.86,
    "close": 1521.06
  },
  {
    "open": 1521.07,
    "high": 1530.49,
    "low": 1515.75,
    "close": 1526.14
  },
  {
    "open": 1526.13,
    "high": 1526.98,
    "low": 1521.57,
    "close": 1523.57
  },
  {
    "open": 1523.56,
    "high": 1523.68,
    "low": 1520.39,
    "close": 1521.17
  },
  {
    "open": 1521.18,
    "high": 1521.36,
    "low": 1516.78,
    "close": 1516.79
  },
  {
    "open": 1516.79,
    "high": 1521.81,
    "low": 1516.48,
    "close": 1520.2
  },
  {
    "open": 1520.2,
    "high": 1524.79,
    "low": 1516.97,
    "close": 1523.67
  },
  {
    "open": 1523.67,
    "high": 1527.82,
    "low": 1522.79,
    "close": 1525.77
  },
  {
    "open": 1525.77,
    "high": 1527.68,
    "low": 1520.25,
    "close": 1524.24
  },
  {
    "open": 1524.23,
    "high": 1530.88,
    "low": 1523.28,
    "close": 1529.87
  },
  {
    "open": 1529.88,
    "high": 1532.92,
    "low": 1527.6,
    "close": 1530.66
  },
  {
    "open": 1530.65,
    "high": 1531.32,
    "low": 1528.31,
    "close": 1530.85
  },
  {
    "open": 1530.85,
    "high": 1532.99,
    "low": 1527.78,
    "close": 1528.68
  },
  {
    "open": 1528.69,
    "high": 1529.92,
    "low": 1527.13,
    "close": 1527.14
  },
  {
    "open": 1527.13,
    "high": 1527.14,
    "low": 1518.31,
    "close": 1521.16
  },
  {
    "open": 1521.16,
    "high": 1530.26,
    "low": 1521.15,
    "close": 1526.67
  },
  {
    "open": 1526.68,
    "high": 1528.17,
    "low": 1522.22,
    "close": 1522.33
  },
  {
    "open": 1522.33,
    "high": 1526.23,
    "low": 1521.09,
    "close": 1523.59
  },
  {
    "open": 1523.59,
    "high": 1523.99,
    "low": 1517.48,
    "close": 1518.86
  },
  {
    "open": 1518.85,
    "high": 1523.43,
    "low": 1513.25,
    "close": 1521.57
  },
  {
    "open": 1521.58,
    "high": 1521.58,
    "low": 1511.11,
    "close": 1513.4
  },
  {
    "open": 1513.4,
    "high": 1515.26,
    "low": 1507.7,
    "close": 1508.31
  },
  {
    "open": 1508.31,
    "high": 1512.48,
    "low": 1503.49,
    "close": 1505.89
  },
  {
    "open": 1505.88,
    "high": 1509.76,
    "low": 1494.63,
    "close": 1500.13
  },
  {
    "open": 1500.13,
    "high": 1510.52,
    "low": 1498.39,
    "close": 1507.22
  },
  {
    "open": 1507.21,
    "high": 1508,
    "low": 1495.51,
    "close": 1501.06
  },
  {
    "open": 1501.06,
    "high": 1506.84,
    "low": 1500.04,
    "close": 1504.99
  },
  {
    "open": 1505,
    "high": 1507.4,
    "low": 1497.16,
    "close": 1498.46
  },
  {
    "open": 1498.46,
    "high": 1505.37,
    "low": 1495,
    "close": 1501.44
  },
  {
    "open": 1501.36,
    "high": 1504.4,
    "low": 1500.27,
    "close": 1500.55
  },
  {
    "open": 1500.55,
    "high": 1502.52,
    "low": 1496.63,
    "close": 1501.29
  },
  {
    "open": 1501.29,
    "high": 1501.88,
    "low": 1496,
    "close": 1496.37
  },
  {
    "open": 1496.37,
    "high": 1506.67,
    "low": 1488,
    "close": 1505.21
  },
  {
    "open": 1505.21,
    "high": 1508.6,
    "low": 1502.24,
    "close": 1508
  },
  {
    "open": 1507.99,
    "high": 1514.07,
    "low": 1507.03,
    "close": 1512.2
  },
  {
    "open": 1512.2,
    "high": 1513.73,
    "low": 1510.89,
    "close": 1512.64
  },
  {
    "open": 1512.65,
    "high": 1514.52,
    "low": 1508.88,
    "close": 1513.17
  },
  {
    "open": 1513.17,
    "high": 1513.95,
    "low": 1511.68,
    "close": 1511.94
  },
  {
    "open": 1511.94,
    "high": 1512.69,
    "low": 1508,
    "close": 1508.97
  },
  {
    "open": 1508.97,
    "high": 1511.92,
    "low": 1508,
    "close": 1511.71
  },
  {
    "open": 1511.71,
    "high": 1512.21,
    "low": 1502.06,
    "close": 1502.3
  },
  {
    "open": 1502.29,
    "high": 1505.5,
    "low": 1499.75,
    "close": 1503.8
  },
  {
    "open": 1503.8,
    "high": 1510.52,
    "low": 1497.04,
    "close": 1499.02
  },
  {
    "open": 1499.03,
    "high": 1500.56,
    "low": 1497.35,
    "close": 1499.88
  },
  {
    "open": 1499.88,
    "high": 1507.12,
    "low": 1498.43,
    "close": 1499
  },
  {
    "open": 1498.99,
    "high": 1501.4,
    "low": 1489.93,
    "close": 1493.7
  },
  {
    "open": 1493.71,
    "high": 1495.73,
    "low": 1490.72,
    "close": 1493.73
  },
  {
    "open": 1493.72,
    "high": 1495.82,
    "low": 1492.44,
    "close": 1493.23
  },
  {
    "open": 1493.23,
    "high": 1501.75,
    "low": 1493.06,
    "close": 1501.54
  },
  {
    "open": 1501.54,
    "high": 1506.81,
    "low": 1500.45,
    "close": 1506.61
  },
  {
    "open": 1506.6,
    "high": 1507.9,
    "low": 1505.1,
    "close": 1505.95
  },
  {
    "open": 1505.95,
    "high": 1509.42,
    "low": 1505.69,
    "close": 1508.9
  },
  {
    "open": 1508.9,
    "high": 1516.09,
    "low": 1508.3,
    "close": 1513.84
  },
  {
    "open": 1513.83,
    "high": 1516.35,
    "low": 1510.74,
    "close": 1512
  },
  {
    "open": 1512,
    "high": 1516.35,
    "low": 1511.43,
    "close": 1513.33
  },
  {
    "open": 1513.25,
    "high": 1518.68,
    "low": 1511.56,
    "close": 1517.19
  },
  {
    "open": 1517.18,
    "high": 1524.05,
    "low": 1516.45,
    "close": 1517.64
  },
  {
    "open": 1517.64,
    "high": 1519.51,
    "low": 1514.37,
    "close": 1518.03
  },
  {
    "open": 1518.04,
    "high": 1520.21,
    "low": 1516.06,
    "close": 1518.91
  },
  {
    "open": 1518.91,
    "high": 1519.8,
    "low": 1516.06,
    "close": 1518.1
  },
  {
    "open": 1518.11,
    "high": 1518.11,
    "low": 1515.6,
    "close": 1516.43
  },
  {
    "open": 1516.43,
    "high": 1521.28,
    "low": 1515.79,
    "close": 1519.82
  },
  {
    "open": 1519.81,
    "high": 1519.98,
    "low": 1518.42,
    "close": 1519.68
  },
  {
    "open": 1519.69,
    "high": 1521.68,
    "low": 1518.67,
    "close": 1520.28
  },
  {
    "open": 1520.29,
    "high": 1521.65,
    "low": 1519.08,
    "close": 1520.24
  },
  {
    "open": 1520.25,
    "high": 1527.76,
    "low": 1520.24,
    "close": 1526.28
  },
  {
    "open": 1526.27,
    "high": 1526.99,
    "low": 1522.67,
    "close": 1525.11
  },
  {
    "open": 1525.1,
    "high": 1529.05,
    "low": 1523.62,
    "close": 1525.51
  },
  {
    "open": 1525.5,
    "high": 1525.51,
    "low": 1520.4,
    "close": 1521.62
  },
  {
    "open": 1521.62,
    "high": 1525.97,
    "low": 1521.59,
    "close": 1523.41
  },
  {
    "open": 1523.42,
    "high": 1524.16,
    "low": 1523,
    "close": 1523.81
  },
  {
    "open": 1523.8,
    "high": 1523.99,
    "low": 1522,
    "close": 1523.43
  },
  {
    "open": 1523.42,
    "high": 1524.99,
    "low": 1523.42,
    "close": 1524.78
  },
  {
    "open": 1524.79,
    "high": 1525.35,
    "low": 1523.06,
    "close": 1523.24
  },
  {
    "open": 1523.24,
    "high": 1523.24,
    "low": 1518.44,
    "close": 1520.29
  },
  {
    "open": 1520.28,
    "high": 1521.95,
    "low": 1518.01,
    "close": 1521.07
  },
  {
    "open": 1521.08,
    "high": 1521.3,
    "low": 1519.22,
    "close": 1519.35
  },
  {
    "open": 1519.35,
    "high": 1519.63,
    "low": 1516.3,
    "close": 1517.68
  },
  {
    "open": 1517.67,
    "high": 1518.24,
    "low": 1515.23,
    "close": 1516.39
  },
  {
    "open": 1516.39,
    "high": 1520.22,
    "low": 1515.31,
    "close": 1519.56
  },
  {
    "open": 1519.55,
    "high": 1524.64,
    "low": 1518,
    "close": 1522.74
  },
  {
    "open": 1522.74,
    "high": 1523.93,
    "low": 1520.21,
    "close": 1520.29
  },
  {
    "open": 1520.29,
    "high": 1523.26,
    "low": 1520.1,
    "close": 1522.73
  },
  {
    "open": 1522.74,
    "high": 1541.63,
    "low": 1522.73,
    "close": 1539.67
  },
  {
    "open": 1539.67,
    "high": 1541.92,
    "low": 1535.13,
    "close": 1538.82
  },
  {
    "open": 1538.82,
    "high": 1547.2,
    "low": 1538.27,
    "close": 1545.55
  },
  {
    "open": 1545.55,
    "high": 1550,
    "low": 1543.77,
    "close": 1545.59
  },
  {
    "open": 1545.6,
    "high": 1546.69,
    "low": 1539.57,
    "close": 1539.68
  },
  {
    "open": 1539.67,
    "high": 1543.83,
    "low": 1538.46,
    "close": 1542.91
  },
  {
    "open": 1542.91,
    "high": 1545.89,
    "low": 1542.34,
    "close": 1543.44
  },
  {
    "open": 1543.43,
    "high": 1544.62,
    "low": 1541.84,
    "close": 1541.85
  },
  {
    "open": 1541.85,
    "high": 1554.35,
    "low": 1539.93,
    "close": 1545.74
  },
  {
    "open": 1545.77,
    "high": 1554.47,
    "low": 1545,
    "close": 1549.46
  },
  {
    "open": 1549.46,
    "high": 1552.24,
    "low": 1549.45,
    "close": 1551.24
  },
  {
    "open": 1551.25,
    "high": 1554.87,
    "low": 1550.63,
    "close": 1551.87
  },
  {
    "open": 1551.86,
    "high": 1553.53,
    "low": 1545.58,
    "close": 1546.72
  },
  {
    "open": 1546.71,
    "high": 1552.74,
    "low": 1546.65,
    "close": 1551.27
  },
  {
    "open": 1551.26,
    "high": 1555.26,
    "low": 1549.71,
    "close": 1551.45
  },
  {
    "open": 1551.44,
    "high": 1553.45,
    "low": 1548.31,
    "close": 1548.54
  },
  {
    "open": 1548.54,
    "high": 1549.16,
    "low": 1546.57,
    "close": 1547.39
  },
  {
    "open": 1547.38,
    "high": 1549.99,
    "low": 1546.86,
    "close": 1548.82
  },
  {
    "open": 1548.82,
    "high": 1554.04,
    "low": 1544.92,
    "close": 1552.11
  },
  {
    "open": 1552.11,
    "high": 1553.01,
    "low": 1548.42,
    "close": 1548.67
  },
  {
    "open": 1548.66,
    "high": 1577.24,
    "low": 1548.66,
    "close": 1568.11
  },
  {
    "open": 1568.11,
    "high": 1569.11,
    "low": 1562,
    "close": 1563.15
  },
  {
    "open": 1563.16,
    "high": 1572.49,
    "low": 1562.7,
    "close": 1566.75
  },
  {
    "open": 1566.76,
    "high": 1567.67,
    "low": 1563.83,
    "close": 1564.03
  },
  {
    "open": 1564.03,
    "high": 1566.14,
    "low": 1561.79,
    "close": 1563.28
  },
  {
    "open": 1563.27,
    "high": 1569.75,
    "low": 1562.43,
    "close": 1569.75
  },
  {
    "open": 1569.75,
    "high": 1571.84,
    "low": 1566.17,
    "close": 1569.27
  },
  {
    "open": 1569.27,
    "high": 1569.28,
    "low": 1563.78,
    "close": 1563.84
  },
  {
    "open": 1563.84,
    "high": 1565.98,
    "low": 1563.84,
    "close": 1564.01
  },
  {
    "open": 1564.01,
    "high": 1566,
    "low": 1562.21,
    "close": 1563.5
  },
  {
    "open": 1563.51,
    "high": 1566.46,
    "low": 1562.51,
    "close": 1564.33
  },
  {
    "open": 1564.34,
    "high": 1566.17,
    "low": 1564.07,
    "close": 1565.09
  },
  {
    "open": 1565.09,
    "high": 1570.37,
    "low": 1565.09,
    "close": 1567.3
  },
  {
    "open": 1567.29,
    "high": 1567.3,
    "low": 1564.01,
    "close": 1564.01
  },
  {
    "open": 1564.01,
    "high": 1564.08,
    "low": 1560.55,
    "close": 1560.71
  },
  {
    "open": 1560.71,
    "high": 1565.8,
    "low": 1560.71,
    "close": 1563.98
  },
  {
    "open": 1563.97,
    "high": 1566.38,
    "low": 1563.86,
    "close": 1564.27
  },
  {
    "open": 1564.28,
    "high": 1564.71,
    "low": 1560.12,
    "close": 1561.13
  },
  {
    "open": 1561.13,
    "high": 1561.66,
    "low": 1551.32,
    "close": 1556.13
  },
  {
    "open": 1556.13,
    "high": 1562.78,
    "low": 1549.89,
    "close": 1559.92
  },
  {
    "open": 1559.92,
    "high": 1559.97,
    "low": 1545.67,
    "close": 1552.36
  },
  {
    "open": 1552.37,
    "high": 1554.87,
    "low": 1549.84,
    "close": 1550.13
  },
  {
    "open": 1550.12,
    "high": 1555.85,
    "low": 1549.76,
    "close": 1553.41
  },
  {
    "open": 1553.41,
    "high": 1562.56,
    "low": 1553.08,
    "close": 1560.89
  },
  {
    "open": 1560.9,
    "high": 1561.67,
    "low": 1556.7,
    "close": 1557.88
  },
  {
    "open": 1557.87,
    "high": 1559.82,
    "low": 1555.63,
    "close": 1558.56
  },
  {
    "open": 1558.56,
    "high": 1558.91,
    "low": 1555.59,
    "close": 1557.08
  },
  {
    "open": 1557.09,
    "high": 1557.56,
    "low": 1554.21,
    "close": 1555.63
  },
  {
    "open": 1555.62,
    "high": 1556.44,
    "low": 1553.5,
    "close": 1556.34
  },
  {
    "open": 1556.34,
    "high": 1560.77,
    "low": 1555.66,
    "close": 1559.82
  },
  {
    "open": 1559.83,
    "high": 1567.93,
    "low": 1559.82,
    "close": 1561.87
  },
  {
    "open": 1561.88,
    "high": 1567.23,
    "low": 1561.69,
    "close": 1564.58
  },
  {
    "open": 1564.58,
    "high": 1565.55,
    "low": 1561.26,
    "close": 1561.58
  },
  {
    "open": 1561.58,
    "high": 1563.41,
    "low": 1557.54,
    "close": 1557.74
  },
  {
    "open": 1557.73,
    "high": 1559.22,
    "low": 1556.8,
    "close": 1557.69
  },
  {
    "open": 1557.7,
    "high": 1565.46,
    "low": 1557.69,
    "close": 1565.18
  },
  {
    "open": 1565.18,
    "high": 1566.39,
    "low": 1563.34,
    "close": 1564.35
  },
  {
    "open": 1564.35,
    "high": 1565.13,
    "low": 1561.71,
    "close": 1561.71
  },
  {
    "open": 1561.72,
    "high": 1561.85,
    "low": 1557.41,
    "close": 1558.38
  },
  {
    "open": 1558.38,
    "high": 1559.17,
    "low": 1552.3,
    "close": 1554.71
  },
  {
    "open": 1554.7,
    "high": 1555.89,
    "low": 1552.21,
    "close": 1553.36
  },
  {
    "open": 1553.35,
    "high": 1556.24,
    "low": 1551.78,
    "close": 1555.12
  },
  {
    "open": 1555.12,
    "high": 1557.49,
    "low": 1553.78,
    "close": 1554.54
  },
  {
    "open": 1554.54,
    "high": 1554.55,
    "low": 1545.75,
    "close": 1550.29
  },
  {
    "open": 1550.29,
    "high": 1554.52,
    "low": 1549.21,
    "close": 1552.37
  },
  {
    "open": 1552.38,
    "high": 1554.16,
    "low": 1551.93,
    "close": 1552.33
  },
  {
    "open": 1552.33,
    "high": 1553.41,
    "low": 1551.41,
    "close": 1551.65
  },
  {
    "open": 1551.65,
    "high": 1552.49,
    "low": 1551,
    "close": 1551.51
  },
  {
    "open": 1551.51,
    "high": 1556.79,
    "low": 1550.86,
    "close": 1553.86
  },
  {
    "open": 1553.85,
    "high": 1557.95,
    "low": 1553.28,
    "close": 1555.2
  },
  {
    "open": 1555.19,
    "high": 1555.45,
    "low": 1546.9,
    "close": 1553.41
  },
  {
    "open": 1553.4,
    "high": 1554.25,
    "low": 1551.34,
    "close": 1551.35
  },
  {
    "open": 1551.35,
    "high": 1553.57,
    "low": 1551.1,
    "close": 1551.67
  },
  {
    "open": 1551.67,
    "high": 1555.66,
    "low": 1550.68,
    "close": 1554.05
  },
  {
    "open": 1554.09,
    "high": 1560.4,
    "low": 1554.09,
    "close": 1559.55
  },
  {
    "open": 1559.56,
    "high": 1561.81,
    "low": 1558.47,
    "close": 1561.8
  },
  {
    "open": 1561.81,
    "high": 1561.81,
    "low": 1558.59,
    "close": 1559.39
  },
  {
    "open": 1559.39,
    "high": 1560.98,
    "low": 1558.91,
    "close": 1558.95
  },
  {
    "open": 1558.96,
    "high": 1563.63,
    "low": 1557.85,
    "close": 1558.69
  },
  {
    "open": 1558.7,
    "high": 1561.62,
    "low": 1556.87,
    "close": 1561.25
  },
  {
    "open": 1561.25,
    "high": 1572,
    "low": 1560.1,
    "close": 1564.23
  },
  {
    "open": 1564.22,
    "high": 1565.96,
    "low": 1563.01,
    "close": 1564.81
  },
  {
    "open": 1564.81,
    "high": 1579,
    "low": 1563.25,
    "close": 1577.63
  },
  {
    "open": 1577.63,
    "high": 1592.55,
    "low": 1575.76,
    "close": 1591.16
  },
  {
    "open": 1591.17,
    "high": 1603.78,
    "low": 1590.69,
    "close": 1594.31
  },
  {
    "open": 1594.31,
    "high": 1600.91,
    "low": 1593.95,
    "close": 1594.48
  },
  {
    "open": 1594.47,
    "high": 1599.53,
    "low": 1589.52,
    "close": 1590.67
  },
  {
    "open": 1590.66,
    "high": 1597.42,
    "low": 1586.33,
    "close": 1597.12
  },
  {
    "open": 1597.12,
    "high": 1608.5,
    "low": 1596.08,
    "close": 1607.22
  },
  {
    "open": 1607.23,
    "high": 1608.55,
    "low": 1601.27,
    "close": 1602.19
  },
  {
    "open": 1602.19,
    "high": 1604.2,
    "low": 1599.23,
    "close": 1601.92
  },
  {
    "open": 1601.92,
    "high": 1603.39,
    "low": 1599.15,
    "close": 1601.33
  },
  {
    "open": 1601.33,
    "high": 1604.92,
    "low": 1600.37,
    "close": 1604.71
  },
  {
    "open": 1604.72,
    "high": 1604.8,
    "low": 1600.12,
    "close": 1600.68
  },
  {
    "open": 1600.69,
    "high": 1605.89,
    "low": 1600.23,
    "close": 1604.66
  },
  {
    "open": 1604.66,
    "high": 1619.05,
    "low": 1604.36,
    "close": 1607.94
  },
  {
    "open": 1607.95,
    "high": 1613.84,
    "low": 1605.04,
    "close": 1612.56
  },
  {
    "open": 1612.57,
    "high": 1619.78,
    "low": 1611.98,
    "close": 1618.5
  },
  {
    "open": 1618.49,
    "high": 1619.35,
    "low": 1612,
    "close": 1614.67
  },
  {
    "open": 1614.67,
    "high": 1614.68,
    "low": 1608.16,
    "close": 1608.9
  },
  {
    "open": 1608.89,
    "high": 1612.96,
    "low": 1608.89,
    "close": 1610.35
  },
  {
    "open": 1610.36,
    "high": 1615.02,
    "low": 1610.23,
    "close": 1613.92
  },
  {
    "open": 1613.91,
    "high": 1614.82,
    "low": 1611.6,
    "close": 1612.52
  },
  {
    "open": 1612.51,
    "high": 1613.49,
    "low": 1606.76,
    "close": 1610.14
  },
  {
    "open": 1610.14,
    "high": 1615.15,
    "low": 1608.17,
    "close": 1613.23
  },
  {
    "open": 1613.23,
    "high": 1619.99,
    "low": 1613.23,
    "close": 1615.83
  },
  {
    "open": 1615.84,
    "high": 1617.05,
    "low": 1610.28,
    "close": 1610.39
  },
  {
    "open": 1610.39,
    "high": 1612.38,
    "low": 1606.69,
    "close": 1608.64
  },
  {
    "open": 1608.64,
    "high": 1611.02,
    "low": 1608.16,
    "close": 1610.05
  },
  {
    "open": 1610.05,
    "high": 1612,
    "low": 1607.59,
    "close": 1608.4
  },
  {
    "open": 1608.39,
    "high": 1609.76,
    "low": 1603.32,
    "close": 1603.65
  },
  {
    "open": 1603.66,
    "high": 1606.98,
    "low": 1603.38,
    "close": 1605.03
  },
  {
    "open": 1605.03,
    "high": 1611.78,
    "low": 1605.03,
    "close": 1610.29
  },
  {
    "open": 1610.29,
    "high": 1611.76,
    "low": 1608.83,
    "close": 1609.91
  },
  {
    "open": 1609.9,
    "high": 1609.93,
    "low": 1604.31,
    "close": 1605.01
  },
  {
    "open": 1605.01,
    "high": 1606.99,
    "low": 1604.35,
    "close": 1604.44
  },
  {
    "open": 1604.44,
    "high": 1607.45,
    "low": 1599.66,
    "close": 1601.09
  },
  {
    "open": 1601.09,
    "high": 1605,
    "low": 1599.56,
    "close": 1603.39
  },
  {
    "open": 1603.39,
    "high": 1604.36,
    "low": 1601.89,
    "close": 1604.17
  },
  {
    "open": 1604.17,
    "high": 1604.4,
    "low": 1601.11,
    "close": 1601.82
  },
  {
    "open": 1601.82,
    "high": 1602.58,
    "low": 1597,
    "close": 1598.54
  },
  {
    "open": 1598.55,
    "high": 1599.26,
    "low": 1595,
    "close": 1597.39
  },
  {
    "open": 1597.4,
    "high": 1599.58,
    "low": 1595.34,
    "close": 1595.5
  },
  {
    "open": 1595.49,
    "high": 1597.72,
    "low": 1594,
    "close": 1596.51
  },
  {
    "open": 1596.5,
    "high": 1608.06,
    "low": 1596.03,
    "close": 1605.83
  },
  {
    "open": 1605.84,
    "high": 1610.01,
    "low": 1602.77,
    "close": 1603.14
  },
  {
    "open": 1603.13,
    "high": 1605.96,
    "low": 1602.02,
    "close": 1605.76
  },
  {
    "open": 1605.76,
    "high": 1606.06,
    "low": 1602.56,
    "close": 1603.5
  },
  {
    "open": 1603.5,
    "high": 1608.17,
    "low": 1603,
    "close": 1606.46
  },
  {
    "open": 1606.47,
    "high": 1606.57,
    "low": 1600.37,
    "close": 1600.49
  },
  {
    "open": 1600.49,
    "high": 1603.15,
    "low": 1599,
    "close": 1602.38
  },
  {
    "open": 1602.38,
    "high": 1605.76,
    "low": 1602.33,
    "close": 1604.24
  },
  {
    "open": 1604.24,
    "high": 1613.6,
    "low": 1603.63,
    "close": 1608.86
  },
  {
    "open": 1608.85,
    "high": 1608.86,
    "low": 1605.31,
    "close": 1607.69
  },
  {
    "open": 1607.69,
    "high": 1611.81,
    "low": 1606.26,
    "close": 1606.85
  },
  {
    "open": 1606.85,
    "high": 1607.62,
    "low": 1602.87,
    "close": 1603.66
  },
  {
    "open": 1603.67,
    "high": 1603.9,
    "low": 1600.29,
    "close": 1602.19
  },
  {
    "open": 1602.19,
    "high": 1602.64,
    "low": 1598.88,
    "close": 1599.6
  },
  {
    "open": 1599.6,
    "high": 1602.21,
    "low": 1599.59,
    "close": 1601.28
  },
  {
    "open": 1601.29,
    "high": 1602.42,
    "low": 1596.21,
    "close": 1598
  },
  {
    "open": 1598,
    "high": 1600,
    "low": 1597,
    "close": 1599.99
  },
  {
    "open": 1600,
    "high": 1600.46,
    "low": 1598.05,
    "close": 1598.1
  },
  {
    "open": 1598.11,
    "high": 1600.46,
    "low": 1597.24,
    "close": 1598.62
  },
  {
    "open": 1598.62,
    "high": 1604.32,
    "low": 1597.61,
    "close": 1599.57
  },
  {
    "open": 1599.58,
    "high": 1603.67,
    "low": 1599.05,
    "close": 1602.84
  },
  {
    "open": 1602.84,
    "high": 1603.41,
    "low": 1601.33,
    "close": 1601.71
  },
  {
    "open": 1601.72,
    "high": 1604.38,
    "low": 1600.84,
    "close": 1601.06
  },
  {
    "open": 1601.07,
    "high": 1601.07,
    "low": 1584.25,
    "close": 1585.56
  },
  {
    "open": 1585.57,
    "high": 1590.35,
    "low": 1583,
    "close": 1583.3
  },
  {
    "open": 1583.31,
    "high": 1585.59,
    "low": 1582,
    "close": 1582.99
  },
  {
    "open": 1582.99,
    "high": 1587.47,
    "low": 1580,
    "close": 1585
  },
  {
    "open": 1584.87,
    "high": 1586.53,
    "low": 1584.36,
    "close": 1585.54
  },
  {
    "open": 1585.53,
    "high": 1592,
    "low": 1583.94,
    "close": 1590.4
  },
  {
    "open": 1590.41,
    "high": 1591.7,
    "low": 1587.77,
    "close": 1591.67
  },
  {
    "open": 1591.67,
    "high": 1627.93,
    "low": 1591.67,
    "close": 1619.34
  },
  {
    "open": 1619.35,
    "high": 1627.28,
    "low": 1615.54,
    "close": 1620.06
  },
  {
    "open": 1620.07,
    "high": 1627.91,
    "low": 1616.57,
    "close": 1618.04
  },
  {
    "open": 1618.03,
    "high": 1622.4,
    "low": 1617.04,
    "close": 1620.09
  },
  {
    "open": 1620.09,
    "high": 1628.86,
    "low": 1615.37,
    "close": 1615.63
  },
  {
    "open": 1615.63,
    "high": 1622.18,
    "low": 1615.37,
    "close": 1621.29
  },
  {
    "open": 1621.3,
    "high": 1622.8,
    "low": 1620,
    "close": 1620.51
  },
  {
    "open": 1620.5,
    "high": 1621.89,
    "low": 1613.17,
    "close": 1615.52
  },
  {
    "open": 1615.53,
    "high": 1617.4,
    "low": 1614.06,
    "close": 1615.32
  },
  {
    "open": 1615.33,
    "high": 1620.03,
    "low": 1615.32,
    "close": 1615.85
  },
  {
    "open": 1615.84,
    "high": 1619.22,
    "low": 1603.38,
    "close": 1606.41
  },
  {
    "open": 1606.41,
    "high": 1615.27,
    "low": 1606.33,
    "close": 1614.67
  },
  {
    "open": 1614.68,
    "high": 1618.39,
    "low": 1614,
    "close": 1617.37
  },
  {
    "open": 1617.38,
    "high": 1620.43,
    "low": 1615.78,
    "close": 1618.73
  },
  {
    "open": 1618.72,
    "high": 1618.73,
    "low": 1610.77,
    "close": 1611.04
  },
  {
    "open": 1611.03,
    "high": 1614.99,
    "low": 1611.03,
    "close": 1612.59
  },
  {
    "open": 1612.59,
    "high": 1613.22,
    "low": 1605.77,
    "close": 1606.25
  },
  {
    "open": 1606.25,
    "high": 1608.57,
    "low": 1604.04,
    "close": 1606.66
  },
  {
    "open": 1606.66,
    "high": 1609.22,
    "low": 1594.74,
    "close": 1596.49
  },
  {
    "open": 1596.48,
    "high": 1600.36,
    "low": 1596.16,
    "close": 1597.82
  },
  {
    "open": 1597.82,
    "high": 1598.27,
    "low": 1586.09,
    "close": 1587.01
  },
  {
    "open": 1587.01,
    "high": 1589.01,
    "low": 1576.53,
    "close": 1578.03
  },
  {
    "open": 1578.03,
    "high": 1583.88,
    "low": 1575,
    "close": 1579.57
  },
  {
    "open": 1579.57,
    "high": 1585.38,
    "low": 1578.04,
    "close": 1584.92
  },
  {
    "open": 1584.92,
    "high": 1585.58,
    "low": 1579.7,
    "close": 1584.64
  },
  {
    "open": 1584.64,
    "high": 1585.69,
    "low": 1580.78,
    "close": 1582.9
  },
  {
    "open": 1582.91,
    "high": 1582.91,
    "low": 1576.04,
    "close": 1578.85
  },
  {
    "open": 1578.85,
    "high": 1584.74,
    "low": 1578.84,
    "close": 1584.44
  },
  {
    "open": 1584.43,
    "high": 1584.94,
    "low": 1575,
    "close": 1579.18
  },
  {
    "open": 1579.18,
    "high": 1583.31,
    "low": 1579.09,
    "close": 1579.83
  },
  {
    "open": 1579.83,
    "high": 1582.08,
    "low": 1573,
    "close": 1577.81
  },
  {
    "open": 1577.8,
    "high": 1582.09,
    "low": 1576.19,
    "close": 1581.71
  },
  {
    "open": 1581.71,
    "high": 1582.97,
    "low": 1579.21,
    "close": 1579.75
  },
  {
    "open": 1579.74,
    "high": 1583.99,
    "low": 1579.52,
    "close": 1581.78
  },
  {
    "open": 1581.79,
    "high": 1583.99,
    "low": 1580.27,
    "close": 1580.67
  },
  {
    "open": 1580.68,
    "high": 1589.57,
    "low": 1573.86,
    "close": 1582.09
  },
  {
    "open": 1582.09,
    "high": 1586.32,
    "low": 1578.54,
    "close": 1581.81
  },
  {
    "open": 1581.81,
    "high": 1588.44,
    "low": 1581.8,
    "close": 1587.46
  },
  {
    "open": 1587.46,
    "high": 1618,
    "low": 1587.45,
    "close": 1611.24
  },
  {
    "open": 1611.24,
    "high": 1614.26,
    "low": 1605.36,
    "close": 1612.02
  },
  {
    "open": 1612.02,
    "high": 1616,
    "low": 1608.85,
    "close": 1610.58
  },
  {
    "open": 1610.59,
    "high": 1612.66,
    "low": 1607.85,
    "close": 1609.51
  },
  {
    "open": 1609.51,
    "high": 1611.59,
    "low": 1607.13,
    "close": 1610.04
  },
  {
    "open": 1610.04,
    "high": 1610.16,
    "low": 1603.11,
    "close": 1609.25
  },
  {
    "open": 1609.25,
    "high": 1617.77,
    "low": 1605.15,
    "close": 1611.78
  },
  {
    "open": 1611.77,
    "high": 1612.94,
    "low": 1608.89,
    "close": 1610.54
  },
  {
    "open": 1610.53,
    "high": 1610.79,
    "low": 1607.76,
    "close": 1609.46
  },
  {
    "open": 1609.46,
    "high": 1611.35,
    "low": 1607.06,
    "close": 1608.93
  },
  {
    "open": 1608.92,
    "high": 1621.42,
    "low": 1608.92,
    "close": 1615.58
  },
  {
    "open": 1615.59,
    "high": 1617.94,
    "low": 1609.66,
    "close": 1610.42
  },
  {
    "open": 1610.41,
    "high": 1613.09,
    "low": 1607.94,
    "close": 1610.04
  },
  {
    "open": 1610.03,
    "high": 1612.39,
    "low": 1608.86,
    "close": 1612.38
  },
  {
    "open": 1612.39,
    "high": 1612.39,
    "low": 1606.68,
    "close": 1607.45
  },
  {
    "open": 1607.45,
    "high": 1608.6,
    "low": 1603.5,
    "close": 1606.03
  },
  {
    "open": 1606.03,
    "high": 1608.42,
    "low": 1605.16,
    "close": 1606.46
  },
  {
    "open": 1606.46,
    "high": 1609.6,
    "low": 1605.99,
    "close": 1608.61
  },
  {
    "open": 1608.61,
    "high": 1611.82,
    "low": 1608.6,
    "close": 1609.35
  },
  {
    "open": 1609.36,
    "high": 1613.69,
    "low": 1608.97,
    "close": 1612.61
  },
  {
    "open": 1612.61,
    "high": 1615.38,
    "low": 1600.05,
    "close": 1605.29
  },
  {
    "open": 1605.29,
    "high": 1610.87,
    "low": 1594.48,
    "close": 1595.84
  },
  {
    "open": 1595.85,
    "high": 1600.32,
    "low": 1593.78,
    "close": 1595.82
  },
  {
    "open": 1595.81,
    "high": 1596.14,
    "low": 1588.38,
    "close": 1590.05
  },
  {
    "open": 1590.05,
    "high": 1595,
    "low": 1587.23,
    "close": 1590.98
  },
  {
    "open": 1590.98,
    "high": 1590.99,
    "low": 1584.71,
    "close": 1587.17
  },
  {
    "open": 1587.16,
    "high": 1591.85,
    "low": 1583.51,
    "close": 1590.73
  },
  {
    "open": 1590.74,
    "high": 1594.04,
    "low": 1590,
    "close": 1592.56
  },
  {
    "open": 1592.55,
    "high": 1596.8,
    "low": 1591.81,
    "close": 1593.82
  },
  {
    "open": 1593.82,
    "high": 1594.8,
    "low": 1588.17,
    "close": 1590.81
  },
  {
    "open": 1590.81,
    "high": 1593.02,
    "low": 1590.45,
    "close": 1592.96
  },
  {
    "open": 1592.96,
    "high": 1593.35,
    "low": 1590,
    "close": 1591.3
  },
  {
    "open": 1591.31,
    "high": 1594.96,
    "low": 1590.04,
    "close": 1593.73
  },
  {
    "open": 1593.74,
    "high": 1594.35,
    "low": 1592.3,
    "close": 1593.39
  },
  {
    "open": 1593.4,
    "high": 1607.22,
    "low": 1593,
    "close": 1602.44
  },
  {
    "open": 1602.45,
    "high": 1611.36,
    "low": 1602.44,
    "close": 1608.78
  },
  {
    "open": 1608.79,
    "high": 1613.99,
    "low": 1608,
    "close": 1610.29
  },
  {
    "open": 1610.27,
    "high": 1610.8,
    "low": 1605.45,
    "close": 1607.02
  },
  {
    "open": 1607.01,
    "high": 1607.17,
    "low": 1591.77,
    "close": 1594.46
  },
  {
    "open": 1594.46,
    "high": 1598.08,
    "low": 1593.34,
    "close": 1596.43
  },
  {
    "open": 1596.43,
    "high": 1606.97,
    "low": 1596.42,
    "close": 1606.51
  },
  {
    "open": 1606.51,
    "high": 1606.51,
    "low": 1600,
    "close": 1601.63
  },
  {
    "open": 1601.63,
    "high": 1604.92,
    "low": 1600.43,
    "close": 1603.69
  },
  {
    "open": 1603.68,
    "high": 1604.44,
    "low": 1600.92,
    "close": 1603.73
  },
  {
    "open": 1603.73,
    "high": 1604.5,
    "low": 1596.63,
    "close": 1599.85
  },
  {
    "open": 1599.86,
    "high": 1603.51,
    "low": 1597.73,
    "close": 1601.35
  },
  {
    "open": 1601.35,
    "high": 1603.01,
    "low": 1598.18,
    "close": 1599.56
  },
  {
    "open": 1599.57,
    "high": 1606,
    "low": 1598.74,
    "close": 1605.58
  },
  {
    "open": 1605.57,
    "high": 1605.59,
    "low": 1600.41,
    "close": 1600.46
  },
  {
    "open": 1600.45,
    "high": 1602.81,
    "low": 1599.72,
    "close": 1601.36
  },
  {
    "open": 1601.36,
    "high": 1602.24,
    "low": 1595.8,
    "close": 1596.99
  },
  {
    "open": 1597,
    "high": 1599,
    "low": 1590.72,
    "close": 1596.49
  },
  {
    "open": 1596.49,
    "high": 1597.31,
    "low": 1593.48,
    "close": 1593.61
  },
  {
    "open": 1593.62,
    "high": 1598.96,
    "low": 1593,
    "close": 1597.03
  },
  {
    "open": 1597.02,
    "high": 1598,
    "low": 1594.17,
    "close": 1596.97
  },
  {
    "open": 1596.96,
    "high": 1599.64,
    "low": 1595.32,
    "close": 1597.92
  },
  {
    "open": 1597.91,
    "high": 1600.45,
    "low": 1597.28,
    "close": 1597.64
  },
  {
    "open": 1597.65,
    "high": 1599.3,
    "low": 1593.85,
    "close": 1596.34
  },
  {
    "open": 1596.34,
    "high": 1607.62,
    "low": 1595.76,
    "close": 1603.49
  },
  {
    "open": 1603.49,
    "high": 1606.36,
    "low": 1595,
    "close": 1596.49
  },
  {
    "open": 1596.48,
    "high": 1604.91,
    "low": 1596.1,
    "close": 1604.91
  },
  {
    "open": 1604.9,
    "high": 1610,
    "low": 1602.61,
    "close": 1607.95
  },
  {
    "open": 1607.94,
    "high": 1614.95,
    "low": 1607.59,
    "close": 1613.14
  },
  {
    "open": 1613.14,
    "high": 1613.15,
    "low": 1610.38,
    "close": 1610.46
  },
  {
    "open": 1610.46,
    "high": 1611.95,
    "low": 1607.42,
    "close": 1607.63
  },
  {
    "open": 1607.62,
    "high": 1609.74,
    "low": 1603.26,
    "close": 1603.53
  },
  {
    "open": 1603.53,
    "high": 1604.18,
    "low": 1599.56,
    "close": 1600.77
  },
  {
    "open": 1600.78,
    "high": 1604.25,
    "low": 1600.77,
    "close": 1602.76
  },
  {
    "open": 1602.75,
    "high": 1604.05,
    "low": 1601.46,
    "close": 1601.89
  },
  {
    "open": 1601.89,
    "high": 1606.86,
    "low": 1601.01,
    "close": 1603.48
  },
  {
    "open": 1603.49,
    "high": 1605.52,
    "low": 1600.24,
    "close": 1600.55
  },
  {
    "open": 1600.55,
    "high": 1603.27,
    "low": 1598.87,
    "close": 1601.6
  },
  {
    "open": 1601.6,
    "high": 1605.65,
    "low": 1600.97,
    "close": 1605
  },
  {
    "open": 1605,
    "high": 1607.97,
    "low": 1602.92,
    "close": 1604.44
  },
  {
    "open": 1604.44,
    "high": 1606.44,
    "low": 1602.58,
    "close": 1605.59
  },
  {
    "open": 1605.58,
    "high": 1607.69,
    "low": 1604.75,
    "close": 1607.22
  },
  {
    "open": 1607.23,
    "high": 1620.12,
    "low": 1607.17,
    "close": 1618.72
  },
  {
    "open": 1618.71,
    "high": 1618.86,
    "low": 1611.1,
    "close": 1613.18
  },
  {
    "open": 1613.19,
    "high": 1613.72,
    "low": 1610.16,
    "close": 1612.13
  },
  {
    "open": 1612.1,
    "high": 1612.64,
    "low": 1608.05,
    "close": 1608.25
  },
  {
    "open": 1608.25,
    "high": 1617.11,
    "low": 1608,
    "close": 1614.17
  },
  {
    "open": 1614.16,
    "high": 1614.64,
    "low": 1607.77,
    "close": 1613.48
  },
  {
    "open": 1613.48,
    "high": 1625,
    "low": 1612.54,
    "close": 1618.6
  },
  {
    "open": 1618.6,
    "high": 1622.92,
    "low": 1615.17,
    "close": 1622.83
  },
  {
    "open": 1622.84,
    "high": 1626.94,
    "low": 1620.14,
    "close": 1621.06
  },
  {
    "open": 1621.07,
    "high": 1621.87,
    "low": 1617.82,
    "close": 1619.46
  },
  {
    "open": 1619.45,
    "high": 1634.2,
    "low": 1618.5,
    "close": 1627.23
  },
  {
    "open": 1627.23,
    "high": 1627.39,
    "low": 1620.18,
    "close": 1622.36
  },
  {
    "open": 1622.36,
    "high": 1626.93,
    "low": 1616.66,
    "close": 1620.82
  },
  {
    "open": 1620.82,
    "high": 1623.84,
    "low": 1618.85,
    "close": 1622.1
  },
  {
    "open": 1622.1,
    "high": 1622.15,
    "low": 1618.52,
    "close": 1620.43
  },
  {
    "open": 1620.42,
    "high": 1625,
    "low": 1619.49,
    "close": 1622
  },
  {
    "open": 1622,
    "high": 1625.99,
    "low": 1615.31,
    "close": 1617.81
  },
  {
    "open": 1617.81,
    "high": 1627,
    "low": 1616.03,
    "close": 1624.35
  },
  {
    "open": 1624.36,
    "high": 1629.49,
    "low": 1624.35,
    "close": 1626.81
  },
  {
    "open": 1626.81,
    "high": 1628.9,
    "low": 1624.37,
    "close": 1624.84
  },
  {
    "open": 1624.85,
    "high": 1628.28,
    "low": 1622.99,
    "close": 1623.1
  },
  {
    "open": 1623.1,
    "high": 1627.99,
    "low": 1621.44,
    "close": 1624.59
  },
  {
    "open": 1624.6,
    "high": 1626.35,
    "low": 1622.57,
    "close": 1623.59
  },
  {
    "open": 1623.6,
    "high": 1642.89,
    "low": 1623.3,
    "close": 1640.62
  },
  {
    "open": 1640.63,
    "high": 1661.98,
    "low": 1634.91,
    "close": 1660.48
  },
  {
    "open": 1660.49,
    "high": 1664.34,
    "low": 1644.84,
    "close": 1645.57
  },
  {
    "open": 1645.58,
    "high": 1646.67,
    "low": 1595,
    "close": 1608.22
  },
  {
    "open": 1608.22,
    "high": 1614.88,
    "low": 1601.43,
    "close": 1605.36
  },
  {
    "open": 1605.36,
    "high": 1609.8,
    "low": 1591.92,
    "close": 1592.38
  },
  {
    "open": 1592.39,
    "high": 1602.45,
    "low": 1589.01,
    "close": 1600
  },
  {
    "open": 1600,
    "high": 1607.26,
    "low": 1599,
    "close": 1606.64
  },
  {
    "open": 1606.64,
    "high": 1607.7,
    "low": 1594.71,
    "close": 1598.66
  },
  {
    "open": 1598.66,
    "high": 1604.57,
    "low": 1595.3,
    "close": 1602.48
  },
  {
    "open": 1602.48,
    "high": 1612.55,
    "low": 1601.32,
    "close": 1610.62
  },
  {
    "open": 1610.63,
    "high": 1615.92,
    "low": 1608.01,
    "close": 1610.8
  },
  {
    "open": 1610.79,
    "high": 1612.97,
    "low": 1605.89,
    "close": 1608.29
  },
  {
    "open": 1608.3,
    "high": 1609.65,
    "low": 1605.11,
    "close": 1605.12
  },
  {
    "open": 1605.12,
    "high": 1607.57,
    "low": 1598.35,
    "close": 1602.85
  },
  {
    "open": 1602.85,
    "high": 1602.86,
    "low": 1598.44,
    "close": 1599.51
  },
  {
    "open": 1599.5,
    "high": 1600.05,
    "low": 1593.32,
    "close": 1597.7
  },
  {
    "open": 1597.7,
    "high": 1603.62,
    "low": 1596,
    "close": 1598.76
  },
  {
    "open": 1598.75,
    "high": 1601.76,
    "low": 1595.1,
    "close": 1600.62
  },
  {
    "open": 1600.53,
    "high": 1604,
    "low": 1596.81,
    "close": 1602.64
  },
  {
    "open": 1602.63,
    "high": 1609.55,
    "low": 1602,
    "close": 1602.44
  },
  {
    "open": 1602.45,
    "high": 1603.9,
    "low": 1592.51,
    "close": 1593.89
  },
  {
    "open": 1593.89,
    "high": 1594.71,
    "low": 1565.67,
    "close": 1567.64
  },
  {
    "open": 1567.63,
    "high": 1570,
    "low": 1560,
    "close": 1561.39
  },
  {
    "open": 1561.4,
    "high": 1568.6,
    "low": 1560,
    "close": 1560.15
  },
  {
    "open": 1560.14,
    "high": 1567.72,
    "low": 1558.34,
    "close": 1562.48
  },
  {
    "open": 1562.47,
    "high": 1567.56,
    "low": 1556.87,
    "close": 1557.4
  },
  {
    "open": 1557.39,
    "high": 1562.84,
    "low": 1555.8,
    "close": 1559.22
  },
  {
    "open": 1559.22,
    "high": 1560.95,
    "low": 1555.83,
    "close": 1558.29
  },
  {
    "open": 1558.3,
    "high": 1558.71,
    "low": 1552.58,
    "close": 1557.29
  },
  {
    "open": 1557.29,
    "high": 1558.05,
    "low": 1550.73,
    "close": 1552.73
  },
  {
    "open": 1552.73,
    "high": 1556.73,
    "low": 1551.93,
    "close": 1555.62
  },
  {
    "open": 1555.62,
    "high": 1558.32,
    "low": 1553.89,
    "close": 1558.24
  },
  {
    "open": 1558.23,
    "high": 1560.73,
    "low": 1555.85,
    "close": 1556.41
  },
  {
    "open": 1556.42,
    "high": 1557.28,
    "low": 1546.5,
    "close": 1550.45
  },
  {
    "open": 1550.44,
    "high": 1553.2,
    "low": 1548.64,
    "close": 1551.76
  },
  {
    "open": 1551.76,
    "high": 1553.97,
    "low": 1550.33,
    "close": 1551.83
  },
  {
    "open": 1551.83,
    "high": 1551.84,
    "low": 1536.1,
    "close": 1545.23
  },
  {
    "open": 1545.23,
    "high": 1545.35,
    "low": 1536.02,
    "close": 1536.77
  },
  {
    "open": 1536.78,
    "high": 1545.98,
    "low": 1535,
    "close": 1545.85
  },
  {
    "open": 1545.84,
    "high": 1546.92,
    "low": 1542.7,
    "close": 1544.4
  },
  {
    "open": 1544.41,
    "high": 1544.41,
    "low": 1539.46,
    "close": 1542.9
  },
  {
    "open": 1542.91,
    "high": 1543.88,
    "low": 1532.08,
    "close": 1537.46
  },
  {
    "open": 1537.46,
    "high": 1539.81,
    "low": 1528.5,
    "close": 1539.6
  },
  {
    "open": 1539.59,
    "high": 1539.91,
    "low": 1534.97,
    "close": 1537.88
  },
  {
    "open": 1537.89,
    "high": 1538.41,
    "low": 1519.26,
    "close": 1529.17
  },
  {
    "open": 1529.17,
    "high": 1531.96,
    "low": 1523.22,
    "close": 1530.51
  },
  {
    "open": 1530.51,
    "high": 1530.53,
    "low": 1516.53,
    "close": 1516.54
  },
  {
    "open": 1516.54,
    "high": 1523,
    "low": 1515.92,
    "close": 1520.8
  },
  {
    "open": 1520.8,
    "high": 1523.87,
    "low": 1519.23,
    "close": 1520.13
  },
  {
    "open": 1520.12,
    "high": 1525.47,
    "low": 1519.92,
    "close": 1522.6
  },
  {
    "open": 1522.59,
    "high": 1523.37,
    "low": 1518.67,
    "close": 1520.02
  },
  {
    "open": 1520.01,
    "high": 1522.76,
    "low": 1517.3,
    "close": 1520.03
  },
  {
    "open": 1520.03,
    "high": 1522.47,
    "low": 1514.84,
    "close": 1522.2
  },
  {
    "open": 1522.19,
    "high": 1523.61,
    "low": 1519.61,
    "close": 1523.36
  },
  {
    "open": 1523.36,
    "high": 1523.74,
    "low": 1520.13,
    "close": 1523.27
  },
  {
    "open": 1523.27,
    "high": 1523.78,
    "low": 1513.68,
    "close": 1515.15
  },
  {
    "open": 1515.14,
    "high": 1516.51,
    "low": 1508.06,
    "close": 1512.14
  },
  {
    "open": 1512.15,
    "high": 1515.4,
    "low": 1511.29,
    "close": 1515.02
  },
  {
    "open": 1515.02,
    "high": 1516.74,
    "low": 1512.8,
    "close": 1515.19
  },
  {
    "open": 1515.19,
    "high": 1518.29,
    "low": 1514.84,
    "close": 1517.85
  },
  {
    "open": 1517.85,
    "high": 1518.5,
    "low": 1509.02,
    "close": 1511.14
  },
  {
    "open": 1511.14,
    "high": 1512.83,
    "low": 1509.19,
    "close": 1509.79
  },
  {
    "open": 1509.78,
    "high": 1510,
    "low": 1502,
    "close": 1504.63
  },
  {
    "open": 1504.63,
    "high": 1512,
    "low": 1498.95,
    "close": 1511.51
  },
  {
    "open": 1511.51,
    "high": 1512.42,
    "low": 1506.71,
    "close": 1506.71
  },
  {
    "open": 1506.71,
    "high": 1508.89,
    "low": 1504.28,
    "close": 1505.15
  },
  {
    "open": 1505.15,
    "high": 1509.41,
    "low": 1499.45,
    "close": 1509.01
  },
  {
    "open": 1509.01,
    "high": 1513.92,
    "low": 1507.81,
    "close": 1513.12
  },
  {
    "open": 1513.12,
    "high": 1517.5,
    "low": 1512,
    "close": 1515.83
  },
  {
    "open": 1515.84,
    "high": 1515.84,
    "low": 1511.78,
    "close": 1514.56
  },
  {
    "open": 1514.56,
    "high": 1514.59,
    "low": 1509.96,
    "close": 1512.45
  },
  {
    "open": 1512.46,
    "high": 1514,
    "low": 1510.35,
    "close": 1513.82
  },
  {
    "open": 1513.82,
    "high": 1516.09,
    "low": 1510.83,
    "close": 1513.39
  },
  {
    "open": 1513.38,
    "high": 1514.71,
    "low": 1511.55,
    "close": 1514.06
  },
  {
    "open": 1514.07,
    "high": 1518.42,
    "low": 1514.06,
    "close": 1517.45
  },
  {
    "open": 1517.44,
    "high": 1524.17,
    "low": 1517.24,
    "close": 1522.76
  },
  {
    "open": 1522.76,
    "high": 1522.77,
    "low": 1516.74,
    "close": 1519.27
  },
  {
    "open": 1519.27,
    "high": 1526.14,
    "low": 1518.36,
    "close": 1525.37
  },
  {
    "open": 1525.36,
    "high": 1526.16,
    "low": 1523.05,
    "close": 1524.78
  },
  {
    "open": 1524.78,
    "high": 1529.84,
    "low": 1524.12,
    "close": 1524.83
  },
  {
    "open": 1524.83,
    "high": 1527.97,
    "low": 1523.69,
    "close": 1525.07
  },
  {
    "open": 1525.07,
    "high": 1525.91,
    "low": 1515.94,
    "close": 1517.07
  },
  {
    "open": 1517.08,
    "high": 1521.93,
    "low": 1514.76,
    "close": 1519.75
  },
  {
    "open": 1519.75,
    "high": 1523.8,
    "low": 1518.82,
    "close": 1522.53
  },
  {
    "open": 1522.52,
    "high": 1527.71,
    "low": 1521.24,
    "close": 1527.26
  },
  {
    "open": 1527.26,
    "high": 1527.26,
    "low": 1523.51,
    "close": 1524.17
  },
  {
    "open": 1524.18,
    "high": 1526.33,
    "low": 1522.5,
    "close": 1526.02
  },
  {
    "open": 1526.02,
    "high": 1528.99,
    "low": 1525.63,
    "close": 1528.01
  },
  {
    "open": 1528,
    "high": 1528.98,
    "low": 1524,
    "close": 1527.85
  },
  {
    "open": 1527.85,
    "high": 1527.91,
    "low": 1524.87,
    "close": 1527.02
  },
  {
    "open": 1527.01,
    "high": 1527.77,
    "low": 1525.08,
    "close": 1527.53
  },
  {
    "open": 1527.54,
    "high": 1527.9,
    "low": 1525.01,
    "close": 1525.54
  },
  {
    "open": 1525.54,
    "high": 1526.36,
    "low": 1517.7,
    "close": 1521.32
  },
  {
    "open": 1521.33,
    "high": 1523.72,
    "low": 1520.06,
    "close": 1523.15
  },
  {
    "open": 1523.16,
    "high": 1526.22,
    "low": 1521.86,
    "close": 1523.7
  },
  {
    "open": 1523.7,
    "high": 1523.83,
    "low": 1517.23,
    "close": 1517.7
  },
  {
    "open": 1517.69,
    "high": 1519.99,
    "low": 1514.45,
    "close": 1515.5
  },
  {
    "open": 1515.49,
    "high": 1520.24,
    "low": 1515.12,
    "close": 1517.38
  },
  {
    "open": 1517.38,
    "high": 1519,
    "low": 1516.54,
    "close": 1517.4
  },
  {
    "open": 1517.39,
    "high": 1521.31,
    "low": 1516.5,
    "close": 1519.95
  },
  {
    "open": 1519.96,
    "high": 1521.47,
    "low": 1514.7,
    "close": 1519.12
  },
  {
    "open": 1519.12,
    "high": 1523.72,
    "low": 1518.67,
    "close": 1523.67
  },
  {
    "open": 1523.66,
    "high": 1528.82,
    "low": 1522.18,
    "close": 1528.71
  },
  {
    "open": 1528.82,
    "high": 1529.12,
    "low": 1523.63,
    "close": 1525.19
  },
  {
    "open": 1525.2,
    "high": 1525.2,
    "low": 1518.09,
    "close": 1523.17
  },
  {
    "open": 1523.17,
    "high": 1525.99,
    "low": 1521.52,
    "close": 1522.46
  },
  {
    "open": 1522.47,
    "high": 1522.9,
    "low": 1519.17,
    "close": 1521.6
  },
  {
    "open": 1521.6,
    "high": 1524.29,
    "low": 1521.54,
    "close": 1524.29
  },
  {
    "open": 1524.29,
    "high": 1526,
    "low": 1523.3,
    "close": 1524.49
  },
  {
    "open": 1524.5,
    "high": 1526,
    "low": 1524.05,
    "close": 1524.89
  },
  {
    "open": 1524.88,
    "high": 1526.85,
    "low": 1524,
    "close": 1524.81
  },
  {
    "open": 1524.81,
    "high": 1524.81,
    "low": 1522.11,
    "close": 1522.12
  },
  {
    "open": 1522.12,
    "high": 1525.61,
    "low": 1521.27,
    "close": 1521.65
  },
  {
    "open": 1521.64,
    "high": 1522.47,
    "low": 1518.51,
    "close": 1519.48
  },
  {
    "open": 1519.48,
    "high": 1519.48,
    "low": 1516.15,
    "close": 1517.9
  },
  {
    "open": 1517.91,
    "high": 1521.05,
    "low": 1517.3,
    "close": 1519.79
  },
  {
    "open": 1519.79,
    "high": 1519.8,
    "low": 1510.7,
    "close": 1513.91
  },
  {
    "open": 1513.9,
    "high": 1516.09,
    "low": 1512.83,
    "close": 1513.43
  },
  {
    "open": 1513.43,
    "high": 1518.21,
    "low": 1513,
    "close": 1516.58
  },
  {
    "open": 1516.59,
    "high": 1533.5,
    "low": 1516.09,
    "close": 1531.9
  },
  {
    "open": 1531.89,
    "high": 1537.27,
    "low": 1530.14,
    "close": 1534.55
  },
  {
    "open": 1534.55,
    "high": 1541.23,
    "low": 1534.34,
    "close": 1536.95
  },
  {
    "open": 1536.96,
    "high": 1542.82,
    "low": 1536.28,
    "close": 1539.96
  },
  {
    "open": 1539.97,
    "high": 1542.51,
    "low": 1535.03,
    "close": 1536.75
  },
  {
    "open": 1536.76,
    "high": 1542.68,
    "low": 1533.45,
    "close": 1541.74
  },
  {
    "open": 1541.75,
    "high": 1543.99,
    "low": 1538.04,
    "close": 1538.45
  },
  {
    "open": 1538.44,
    "high": 1539.6,
    "low": 1536.86,
    "close": 1537.48
  },
  {
    "open": 1537.47,
    "high": 1537.48,
    "low": 1534.36,
    "close": 1536.22
  },
  {
    "open": 1536.22,
    "high": 1537.19,
    "low": 1534.16,
    "close": 1536.47
  },
  {
    "open": 1536.46,
    "high": 1536.56,
    "low": 1531.43,
    "close": 1532.8
  },
  {
    "open": 1532.81,
    "high": 1536.41,
    "low": 1532.68,
    "close": 1536.21
  },
  {
    "open": 1536.22,
    "high": 1538.61,
    "low": 1535.4,
    "close": 1537.8
  },
  {
    "open": 1537.8,
    "high": 1538.88,
    "low": 1535.72,
    "close": 1535.99
  },
  {
    "open": 1535.99,
    "high": 1537.93,
    "low": 1535.82,
    "close": 1537.49
  },
  {
    "open": 1537.48,
    "high": 1537.49,
    "low": 1532.8,
    "close": 1533.82
  },
  {
    "open": 1533.82,
    "high": 1536.84,
    "low": 1533.62,
    "close": 1535.49
  },
  {
    "open": 1535.49,
    "high": 1535.76,
    "low": 1534.01,
    "close": 1535.42
  },
  {
    "open": 1535.42,
    "high": 1536,
    "low": 1532.17,
    "close": 1534.71
  },
  {
    "open": 1534.72,
    "high": 1538,
    "low": 1534.71,
    "close": 1537.86
  },
  {
    "open": 1537.85,
    "high": 1548.43,
    "low": 1537.85,
    "close": 1545.4
  },
  {
    "open": 1545.39,
    "high": 1546,
    "low": 1542.09,
    "close": 1544.54
  },
  {
    "open": 1544.54,
    "high": 1545.49,
    "low": 1542.13,
    "close": 1544.51
  },
  {
    "open": 1544.51,
    "high": 1545.82,
    "low": 1543.21,
    "close": 1545.81
  },
  {
    "open": 1545.81,
    "high": 1546.46,
    "low": 1543.57,
    "close": 1544.9
  },
  {
    "open": 1544.9,
    "high": 1548.69,
    "low": 1540,
    "close": 1547.55
  },
  {
    "open": 1547.64,
    "high": 1549.87,
    "low": 1544.78,
    "close": 1547.71
  },
  {
    "open": 1547.7,
    "high": 1549.65,
    "low": 1546.11,
    "close": 1547.1
  },
  {
    "open": 1547.1,
    "high": 1548.13,
    "low": 1546.6,
    "close": 1547.01
  },
  {
    "open": 1547,
    "high": 1548.88,
    "low": 1542.95,
    "close": 1548.88
  },
  {
    "open": 1548.88,
    "high": 1553.79,
    "low": 1544.51,
    "close": 1544.77
  },
  {
    "open": 1544.77,
    "high": 1546.59,
    "low": 1543.06,
    "close": 1543.48
  },
  {
    "open": 1543.48,
    "high": 1543.49,
    "low": 1535.69,
    "close": 1536.78
  },
  {
    "open": 1536.78,
    "high": 1542.5,
    "low": 1535.31,
    "close": 1541.57
  },
  {
    "open": 1541.57,
    "high": 1543.7,
    "low": 1538.61,
    "close": 1538.77
  },
  {
    "open": 1538.77,
    "high": 1541.47,
    "low": 1537.85,
    "close": 1538.86
  },
  {
    "open": 1538.86,
    "high": 1541.55,
    "low": 1536.48,
    "close": 1539.18
  },
  {
    "open": 1539.19,
    "high": 1541.52,
    "low": 1538.97,
    "close": 1539.38
  },
  {
    "open": 1539.38,
    "high": 1543,
    "low": 1536.55,
    "close": 1540.87
  },
  {
    "open": 1540.86,
    "high": 1543.23,
    "low": 1539.09,
    "close": 1539.58
  },
  {
    "open": 1539.58,
    "high": 1540.92,
    "low": 1536.45,
    "close": 1537.5
  },
  {
    "open": 1537.49,
    "high": 1538.34,
    "low": 1533.5,
    "close": 1534.83
  },
  {
    "open": 1534.84,
    "high": 1534.84,
    "low": 1517.11,
    "close": 1518.98
  },
  {
    "open": 1518.98,
    "high": 1525.5,
    "low": 1518.64,
    "close": 1523.83
  },
  {
    "open": 1523.82,
    "high": 1531.92,
    "low": 1520.33,
    "close": 1529.16
  },
  {
    "open": 1529.16,
    "high": 1531.5,
    "low": 1524,
    "close": 1530.11
  },
  {
    "open": 1530.12,
    "high": 1530.2,
    "low": 1525.52,
    "close": 1527.15
  },
  {
    "open": 1527.15,
    "high": 1530.94,
    "low": 1526.55,
    "close": 1530.8
  },
  {
    "open": 1530.79,
    "high": 1530.8,
    "low": 1526.56,
    "close": 1527.75
  },
  {
    "open": 1527.75,
    "high": 1530.84,
    "low": 1526.98,
    "close": 1527.33
  },
  {
    "open": 1527.34,
    "high": 1528.92,
    "low": 1523.77,
    "close": 1528.01
  },
  {
    "open": 1528.01,
    "high": 1531.35,
    "low": 1527.46,
    "close": 1530.32
  },
  {
    "open": 1530.32,
    "high": 1538.65,
    "low": 1529.45,
    "close": 1536.07
  },
  {
    "open": 1536.08,
    "high": 1536.51,
    "low": 1533.75,
    "close": 1535.46
  },
  {
    "open": 1535.46,
    "high": 1536.81,
    "low": 1533.28,
    "close": 1533.29
  },
  {
    "open": 1533.28,
    "high": 1533.97,
    "low": 1522.46,
    "close": 1523.87
  },
  {
    "open": 1523.86,
    "high": 1524.03,
    "low": 1517.61,
    "close": 1523.73
  },
  {
    "open": 1523.72,
    "high": 1537.06,
    "low": 1523.21,
    "close": 1532.35
  },
  {
    "open": 1532.36,
    "high": 1532.36,
    "low": 1525.15,
    "close": 1527.63
  },
  {
    "open": 1527.63,
    "high": 1531.98,
    "low": 1521.21,
    "close": 1522.82
  },
  {
    "open": 1522.82,
    "high": 1522.82,
    "low": 1506.7,
    "close": 1516.24
  },
  {
    "open": 1516.24,
    "high": 1527.52,
    "low": 1514.14,
    "close": 1523.97
  },
  {
    "open": 1523.97,
    "high": 1523.98,
    "low": 1516.85,
    "close": 1520.44
  },
  {
    "open": 1520.45,
    "high": 1525.98,
    "low": 1517.98,
    "close": 1521.25
  },
  {
    "open": 1521.26,
    "high": 1526.16,
    "low": 1520,
    "close": 1521.76
  },
  {
    "open": 1521.77,
    "high": 1525,
    "low": 1518.05,
    "close": 1518.17
  },
  {
    "open": 1518.17,
    "high": 1518.66,
    "low": 1510.75,
    "close": 1516.05
  },
  {
    "open": 1516.05,
    "high": 1518.01,
    "low": 1509.24,
    "close": 1509.65
  },
  {
    "open": 1509.65,
    "high": 1513.46,
    "low": 1507.45,
    "close": 1511.38
  },
  {
    "open": 1511.37,
    "high": 1517.77,
    "low": 1510.69,
    "close": 1513.23
  },
  {
    "open": 1513.24,
    "high": 1513.85,
    "low": 1502.21,
    "close": 1510.72
  },
  {
    "open": 1510.72,
    "high": 1516.44,
    "low": 1508.36,
    "close": 1512.4
  },
  {
    "open": 1512.4,
    "high": 1518.94,
    "low": 1507.61,
    "close": 1517.46
  },
  {
    "open": 1517.45,
    "high": 1523.41,
    "low": 1515.15,
    "close": 1522.78
  },
  {
    "open": 1522.78,
    "high": 1524,
    "low": 1518.84,
    "close": 1520.49
  },
  {
    "open": 1520.49,
    "high": 1523.13,
    "low": 1519.01,
    "close": 1521.68
  },
  {
    "open": 1521.68,
    "high": 1527.81,
    "low": 1520.5,
    "close": 1524.68
  },
  {
    "open": 1524.68,
    "high": 1532,
    "low": 1523.05,
    "close": 1527.05
  },
  {
    "open": 1527.04,
    "high": 1528.39,
    "low": 1523,
    "close": 1523.42
  },
  {
    "open": 1523.41,
    "high": 1523.64,
    "low": 1514,
    "close": 1514.71
  },
  {
    "open": 1514.72,
    "high": 1518,
    "low": 1511.35,
    "close": 1517.24
  },
  {
    "open": 1517.23,
    "high": 1518.75,
    "low": 1514.48,
    "close": 1515.82
  },
  {
    "open": 1515.81,
    "high": 1522.58,
    "low": 1514.01,
    "close": 1521.13
  },
  {
    "open": 1521.13,
    "high": 1530.48,
    "low": 1521.11,
    "close": 1527.23
  },
  {
    "open": 1527.23,
    "high": 1528.46,
    "low": 1522.57,
    "close": 1525.67
  },
  {
    "open": 1525.67,
    "high": 1528.64,
    "low": 1525.67,
    "close": 1528.35
  },
  {
    "open": 1528.35,
    "high": 1531.14,
    "low": 1523.51,
    "close": 1523.51
  },
  {
    "open": 1523.51,
    "high": 1528.76,
    "low": 1523.48,
    "close": 1527.56
  },
  {
    "open": 1527.57,
    "high": 1527.99,
    "low": 1524.99,
    "close": 1526.03
  },
  {
    "open": 1526.02,
    "high": 1534.93,
    "low": 1524.67,
    "close": 1532.6
  },
  {
    "open": 1532.6,
    "high": 1534.19,
    "low": 1529.44,
    "close": 1529.96
  },
  {
    "open": 1529.96,
    "high": 1531.24,
    "low": 1524.14,
    "close": 1525.3
  },
  {
    "open": 1525.29,
    "high": 1526.09,
    "low": 1520.01,
    "close": 1520.14
  },
  {
    "open": 1520.15,
    "high": 1520.51,
    "low": 1517.04,
    "close": 1519.66
  },
  {
    "open": 1519.67,
    "high": 1522.26,
    "low": 1517.77,
    "close": 1519.3
  },
  {
    "open": 1519.31,
    "high": 1523.43,
    "low": 1518.31,
    "close": 1520.11
  },
  {
    "open": 1520.12,
    "high": 1521.27,
    "low": 1514.68,
    "close": 1515.46
  },
  {
    "open": 1515.46,
    "high": 1523.5,
    "low": 1515.46,
    "close": 1523.21
  },
  {
    "open": 1523.22,
    "high": 1530.34,
    "low": 1522.49,
    "close": 1529.8
  },
  {
    "open": 1529.8,
    "high": 1530.43,
    "low": 1526.66,
    "close": 1527.1
  },
  {
    "open": 1527.1,
    "high": 1531.29,
    "low": 1525.61,
    "close": 1527.6
  },
  {
    "open": 1527.61,
    "high": 1530.92,
    "low": 1527.6,
    "close": 1530.26
  },
  {
    "open": 1530.26,
    "high": 1534.01,
    "low": 1528.36,
    "close": 1533
  },
  {
    "open": 1532.93,
    "high": 1534.94,
    "low": 1529,
    "close": 1529.91
  },
  {
    "open": 1529.92,
    "high": 1530.63,
    "low": 1524.38,
    "close": 1527.8
  },
  {
    "open": 1527.8,
    "high": 1529.94,
    "low": 1524.87,
    "close": 1526.36
  },
  {
    "open": 1526.36,
    "high": 1529.37,
    "low": 1526.33,
    "close": 1527.87
  },
  {
    "open": 1527.87,
    "high": 1529.29,
    "low": 1526.79,
    "close": 1527.17
  },
  {
    "open": 1527.18,
    "high": 1527.18,
    "low": 1518.55,
    "close": 1519.61
  },
  {
    "open": 1519.6,
    "high": 1521.47,
    "low": 1517.39,
    "close": 1520.78
  },
  {
    "open": 1520.78,
    "high": 1522.13,
    "low": 1514.46,
    "close": 1516.81
  },
  {
    "open": 1516.8,
    "high": 1517.6,
    "low": 1512.82,
    "close": 1513.66
  },
  {
    "open": 1513.65,
    "high": 1516.81,
    "low": 1511.44,
    "close": 1513.86
  },
  {
    "open": 1513.86,
    "high": 1515.47,
    "low": 1507.11,
    "close": 1509.29
  },
  {
    "open": 1509.29,
    "high": 1513.83,
    "low": 1509.11,
    "close": 1510.83
  },
  {
    "open": 1510.83,
    "high": 1518.12,
    "low": 1510.83,
    "close": 1515.33
  },
  {
    "open": 1515.33,
    "high": 1517.4,
    "low": 1511.99,
    "close": 1514.89
  },
  {
    "open": 1514.88,
    "high": 1518.67,
    "low": 1513.78,
    "close": 1516.93
  },
  {
    "open": 1516.93,
    "high": 1517.58,
    "low": 1514.1,
    "close": 1515.4
  },
  {
    "open": 1515.4,
    "high": 1518.96,
    "low": 1514.65,
    "close": 1518.43
  },
  {
    "open": 1518.44,
    "high": 1523.32,
    "low": 1515.35,
    "close": 1515.78
  },
  {
    "open": 1515.78,
    "high": 1521.43,
    "low": 1515.46,
    "close": 1519.21
  },
  {
    "open": 1519.2,
    "high": 1519.88,
    "low": 1514.15,
    "close": 1516.82
  },
  {
    "open": 1516.82,
    "high": 1517.28,
    "low": 1510.85,
    "close": 1513.86
  },
  {
    "open": 1513.87,
    "high": 1516.82,
    "low": 1509.37,
    "close": 1510.88
  },
  {
    "open": 1510.88,
    "high": 1512,
    "low": 1505.9,
    "close": 1505.93
  },
  {
    "open": 1505.94,
    "high": 1509.39,
    "low": 1477.01,
    "close": 1478.26
  },
  {
    "open": 1478.26,
    "high": 1484.64,
    "low": 1474.16,
    "close": 1482.69
  },
  {
    "open": 1482.69,
    "high": 1487.83,
    "low": 1478.76,
    "close": 1479.74
  },
  {
    "open": 1479.74,
    "high": 1481.79,
    "low": 1470.8,
    "close": 1474.95
  },
  {
    "open": 1474.95,
    "high": 1477.59,
    "low": 1466.58,
    "close": 1468.19
  },
  {
    "open": 1468.2,
    "high": 1474,
    "low": 1455.17,
    "close": 1466.85
  },
  {
    "open": 1466.9,
    "high": 1472.67,
    "low": 1466.89,
    "close": 1471.37
  },
  {
    "open": 1471.37,
    "high": 1478.04,
    "low": 1467.14,
    "close": 1470.07
  },
  {
    "open": 1470.07,
    "high": 1477.76,
    "low": 1468.23,
    "close": 1475.57
  },
  {
    "open": 1475.56,
    "high": 1491.72,
    "low": 1474.88,
    "close": 1488.58
  },
  {
    "open": 1488.58,
    "high": 1496.76,
    "low": 1484.21,
    "close": 1495
  },
  {
    "open": 1495,
    "high": 1523.99,
    "low": 1492.01,
    "close": 1514.98
  },
  {
    "open": 1514.98,
    "high": 1522.88,
    "low": 1513.78,
    "close": 1518.91
  },
  {
    "open": 1518.91,
    "high": 1522.64,
    "low": 1517,
    "close": 1520.67
  },
  {
    "open": 1520.67,
    "high": 1529.77,
    "low": 1513.5,
    "close": 1513.51
  },
  {
    "open": 1513.51,
    "high": 1520,
    "low": 1513.28,
    "close": 1517.2
  },
  {
    "open": 1517.2,
    "high": 1519.49,
    "low": 1512.2,
    "close": 1518.95
  },
  {
    "open": 1518.95,
    "high": 1519.49,
    "low": 1513.26,
    "close": 1515.54
  },
  {
    "open": 1515.54,
    "high": 1519.1,
    "low": 1513.83,
    "close": 1518.88
  },
  {
    "open": 1518.89,
    "high": 1538.51,
    "low": 1518.88,
    "close": 1531.01
  },
  {
    "open": 1530.95,
    "high": 1533.43,
    "low": 1520.54,
    "close": 1526.77
  },
  {
    "open": 1526.77,
    "high": 1530.58,
    "low": 1524.92,
    "close": 1527.44
  },
  {
    "open": 1527.44,
    "high": 1528.44,
    "low": 1521.03,
    "close": 1523.01
  },
  {
    "open": 1523.01,
    "high": 1524.56,
    "low": 1517.95,
    "close": 1521.65
  },
  {
    "open": 1521.63,
    "high": 1521.75,
    "low": 1516.33,
    "close": 1520.27
  },
  {
    "open": 1520.28,
    "high": 1523.83,
    "low": 1518.53,
    "close": 1523.21
  },
  {
    "open": 1523.21,
    "high": 1524,
    "low": 1520.51,
    "close": 1522.06
  },
  {
    "open": 1522.05,
    "high": 1524,
    "low": 1519.38,
    "close": 1520.38
  },
  {
    "open": 1520.37,
    "high": 1521.46,
    "low": 1519.64,
    "close": 1520.5
  },
  {
    "open": 1520.5,
    "high": 1525.95,
    "low": 1520.49,
    "close": 1523.01
  },
  {
    "open": 1523,
    "high": 1523.38,
    "low": 1520.25,
    "close": 1520.78
  },
  {
    "open": 1520.77,
    "high": 1521.39,
    "low": 1512.85,
    "close": 1517.63
  },
  {
    "open": 1517.63,
    "high": 1517.85,
    "low": 1507.66,
    "close": 1514.06
  },
  {
    "open": 1514.05,
    "high": 1517.93,
    "low": 1514.01,
    "close": 1516.79
  },
  {
    "open": 1516.8,
    "high": 1516.8,
    "low": 1512.55,
    "close": 1514.02
  },
  {
    "open": 1514.02,
    "high": 1514.89,
    "low": 1508.97,
    "close": 1510.44
  },
  {
    "open": 1510.44,
    "high": 1512.24,
    "low": 1506.68,
    "close": 1510.1
  },
  {
    "open": 1510.09,
    "high": 1511.6,
    "low": 1494.65,
    "close": 1495.68
  },
  {
    "open": 1495.69,
    "high": 1498.59,
    "low": 1492.45,
    "close": 1496.12
  },
  {
    "open": 1496.13,
    "high": 1496.13,
    "low": 1482.16,
    "close": 1487
  },
  {
    "open": 1487,
    "high": 1488.44,
    "low": 1469,
    "close": 1471.65
  },
  {
    "open": 1471.65,
    "high": 1476.97,
    "low": 1467.08,
    "close": 1469.98
  },
  {
    "open": 1469.98,
    "high": 1475.2,
    "low": 1469.78,
    "close": 1472.26
  },
  {
    "open": 1472.25,
    "high": 1487.99,
    "low": 1472.25,
    "close": 1485.05
  },
  {
    "open": 1485.05,
    "high": 1494.72,
    "low": 1473.92,
    "close": 1485.16
  },
  {
    "open": 1485.16,
    "high": 1485.17,
    "low": 1478.93,
    "close": 1482.48
  },
  {
    "open": 1482.48,
    "high": 1489,
    "low": 1479.21,
    "close": 1482.03
  },
  {
    "open": 1482.03,
    "high": 1484.28,
    "low": 1475.43,
    "close": 1481.37
  },
  {
    "open": 1481.38,
    "high": 1482.3,
    "low": 1469.55,
    "close": 1470.66
  },
  {
    "open": 1470.66,
    "high": 1479.85,
    "low": 1469,
    "close": 1477.53
  },
  {
    "open": 1477.54,
    "high": 1483.67,
    "low": 1476.45,
    "close": 1482.88
  },
  {
    "open": 1482.89,
    "high": 1487.37,
    "low": 1478.08,
    "close": 1483.37
  },
  {
    "open": 1483.37,
    "high": 1484.36,
    "low": 1472.36,
    "close": 1474.97
  },
  {
    "open": 1474.97,
    "high": 1478.78,
    "low": 1474.69,
    "close": 1477.75
  },
  {
    "open": 1477.75,
    "high": 1478.84,
    "low": 1470,
    "close": 1470.96
  },
  {
    "open": 1470.95,
    "high": 1472.38,
    "low": 1464,
    "close": 1470
  },
  {
    "open": 1470,
    "high": 1471.07,
    "low": 1436.02,
    "close": 1443.03
  },
  {
    "open": 1443.04,
    "high": 1451.98,
    "low": 1435.58,
    "close": 1447.55
  },
  {
    "open": 1447.55,
    "high": 1448.1,
    "low": 1437.01,
    "close": 1440.79
  },
  {
    "open": 1440.79,
    "high": 1450,
    "low": 1432.99,
    "close": 1443.3
  },
  {
    "open": 1443.29,
    "high": 1446.49,
    "low": 1441.15,
    "close": 1443.34
  },
  {
    "open": 1443.34,
    "high": 1446.58,
    "low": 1437.11,
    "close": 1438.52
  },
  {
    "open": 1438.51,
    "high": 1441.99,
    "low": 1429.68,
    "close": 1439.43
  },
  {
    "open": 1439.43,
    "high": 1440.82,
    "low": 1427.1,
    "close": 1433.08
  },
  {
    "open": 1433.08,
    "high": 1434.82,
    "low": 1428.65,
    "close": 1429.91
  },
  {
    "open": 1429.91,
    "high": 1433.24,
    "low": 1427.02,
    "close": 1430.25
  },
  {
    "open": 1430.19,
    "high": 1430.2,
    "low": 1415.6,
    "close": 1423.09
  },
  {
    "open": 1423.09,
    "high": 1432,
    "low": 1421.92,
    "close": 1427.53
  },
  {
    "open": 1427.52,
    "high": 1428.64,
    "low": 1421.55,
    "close": 1427.64
  },
  {
    "open": 1427.64,
    "high": 1430.1,
    "low": 1415,
    "close": 1415.98
  },
  {
    "open": 1415.99,
    "high": 1421.48,
    "low": 1412.15,
    "close": 1415.38
  },
  {
    "open": 1415.38,
    "high": 1424,
    "low": 1412.45,
    "close": 1423.02
  },
  {
    "open": 1423.03,
    "high": 1426.99,
    "low": 1422,
    "close": 1425.62
  },
  {
    "open": 1425.61,
    "high": 1427.39,
    "low": 1421.18,
    "close": 1421.98
  },
  {
    "open": 1421.98,
    "high": 1426.36,
    "low": 1418.04,
    "close": 1423.96
  },
  {
    "open": 1423.97,
    "high": 1424.1,
    "low": 1418.49,
    "close": 1418.49
  },
  {
    "open": 1418.49,
    "high": 1421.16,
    "low": 1414.03,
    "close": 1421.15
  },
  {
    "open": 1421.16,
    "high": 1421.16,
    "low": 1415,
    "close": 1417.04
  },
  {
    "open": 1417.04,
    "high": 1418.37,
    "low": 1413.06,
    "close": 1413.36
  },
  {
    "open": 1413.37,
    "high": 1423.37,
    "low": 1413.21,
    "close": 1422.91
  },
  {
    "open": 1422.9,
    "high": 1425.51,
    "low": 1421.11,
    "close": 1423.99
  },
  {
    "open": 1423.98,
    "high": 1425.09,
    "low": 1422.73,
    "close": 1423.61
  },
  {
    "open": 1423.62,
    "high": 1424.96,
    "low": 1420,
    "close": 1420.23
  },
  {
    "open": 1420.23,
    "high": 1421.87,
    "low": 1419.01,
    "close": 1421.02
  },
  {
    "open": 1421.01,
    "high": 1426.03,
    "low": 1420.88,
    "close": 1425.12
  },
  {
    "open": 1425.11,
    "high": 1425.68,
    "low": 1421.85,
    "close": 1423.23
  },
  {
    "open": 1423.23,
    "high": 1424.73,
    "low": 1421.37,
    "close": 1423.76
  },
  {
    "open": 1423.75,
    "high": 1424,
    "low": 1418.3,
    "close": 1420
  },
  {
    "open": 1419.99,
    "high": 1420.19,
    "low": 1415.15,
    "close": 1419.8
  },
  {
    "open": 1419.79,
    "high": 1421.88,
    "low": 1418.08,
    "close": 1420.88
  },
  {
    "open": 1420.89,
    "high": 1424.26,
    "low": 1420.87,
    "close": 1422.07
  },
  {
    "open": 1422.06,
    "high": 1423.13,
    "low": 1420.59,
    "close": 1422.39
  },
  {
    "open": 1422.39,
    "high": 1423.95,
    "low": 1421.75,
    "close": 1421.9
  },
  {
    "open": 1421.9,
    "high": 1423.15,
    "low": 1419.15,
    "close": 1423.14
  },
  {
    "open": 1423.15,
    "high": 1423.15,
    "low": 1417.79,
    "close": 1419.37
  },
  {
    "open": 1419.38,
    "high": 1419.57,
    "low": 1416.26,
    "close": 1417.29
  },
  {
    "open": 1417.28,
    "high": 1419.21,
    "low": 1416.5,
    "close": 1418.07
  },
  {
    "open": 1418.06,
    "high": 1418.07,
    "low": 1400.46,
    "close": 1415.32
  },
  {
    "open": 1415.31,
    "high": 1424.48,
    "low": 1414.74,
    "close": 1423.85
  },
  {
    "open": 1423.86,
    "high": 1424.14,
    "low": 1419.33,
    "close": 1421.39
  },
  {
    "open": 1421.38,
    "high": 1430.92,
    "low": 1420.53,
    "close": 1429.17
  },
  {
    "open": 1429.17,
    "high": 1438.16,
    "low": 1428.17,
    "close": 1436.56
  },
  {
    "open": 1436.56,
    "high": 1436.57,
    "low": 1427.07,
    "close": 1429.86
  },
  {
    "open": 1429.86,
    "high": 1429.87,
    "low": 1422.71,
    "close": 1425.41
  },
  {
    "open": 1425.4,
    "high": 1428.97,
    "low": 1423.88,
    "close": 1427.36
  },
  {
    "open": 1427.36,
    "high": 1432,
    "low": 1426.91,
    "close": 1431.33
  },
  {
    "open": 1431.33,
    "high": 1434.92,
    "low": 1431.32,
    "close": 1433.05
  },
  {
    "open": 1433.04,
    "high": 1435,
    "low": 1431.4,
    "close": 1434.81
  },
  {
    "open": 1434.81,
    "high": 1435.37,
    "low": 1430.27,
    "close": 1430.44
  },
  {
    "open": 1430.45,
    "high": 1433.4,
    "low": 1430.1,
    "close": 1432.26
  },
  {
    "open": 1432.27,
    "high": 1433.74,
    "low": 1428.86,
    "close": 1429.56
  },
  {
    "open": 1429.56,
    "high": 1434.14,
    "low": 1428.46,
    "close": 1432.89
  },
  {
    "open": 1432.89,
    "high": 1438.3,
    "low": 1431.03,
    "close": 1432.86
  },
  {
    "open": 1432.87,
    "high": 1433.99,
    "low": 1431,
    "close": 1433.84
  },
  {
    "open": 1433.85,
    "high": 1434.14,
    "low": 1431.21,
    "close": 1431.54
  },
  {
    "open": 1431.53,
    "high": 1433.37,
    "low": 1430.3,
    "close": 1431.32
  },
  {
    "open": 1431.32,
    "high": 1434,
    "low": 1431.05,
    "close": 1432.62
  },
  {
    "open": 1432.62,
    "high": 1433.24,
    "low": 1425.55,
    "close": 1426.28
  },
  {
    "open": 1426.28,
    "high": 1429.8,
    "low": 1424.16,
    "close": 1427.33
  },
  {
    "open": 1427.33,
    "high": 1427.88,
    "low": 1424.32,
    "close": 1426.04
  },
  {
    "open": 1426.03,
    "high": 1426.33,
    "low": 1422.21,
    "close": 1423.93
  },
  {
    "open": 1423.93,
    "high": 1425.44,
    "low": 1422.55,
    "close": 1423.89
  },
  {
    "open": 1423.88,
    "high": 1424.55,
    "low": 1420.83,
    "close": 1421.27
  },
  {
    "open": 1421.26,
    "high": 1423.64,
    "low": 1420.6,
    "close": 1422.77
  },
  {
    "open": 1422.77,
    "high": 1426.46,
    "low": 1422.77,
    "close": 1425.91
  },
  {
    "open": 1425.92,
    "high": 1426.42,
    "low": 1422.2,
    "close": 1422.72
  },
  {
    "open": 1422.73,
    "high": 1427.27,
    "low": 1422.14,
    "close": 1427.22
  },
  {
    "open": 1427.22,
    "high": 1430.2,
    "low": 1425.67,
    "close": 1428.24
  },
  {
    "open": 1428.25,
    "high": 1432.24,
    "low": 1427.87,
    "close": 1429.9
  },
  {
    "open": 1429.89,
    "high": 1430.99,
    "low": 1428,
    "close": 1428.42
  },
  {
    "open": 1428.43,
    "high": 1429.92,
    "low": 1424.61,
    "close": 1426.78
  },
  {
    "open": 1426.79,
    "high": 1427.3,
    "low": 1424.19,
    "close": 1424.26
  },
  {
    "open": 1424.27,
    "high": 1425.86,
    "low": 1423.42,
    "close": 1424.38
  },
  {
    "open": 1424.37,
    "high": 1424.47,
    "low": 1420.8,
    "close": 1421.27
  },
  {
    "open": 1421.27,
    "high": 1423.26,
    "low": 1421.01,
    "close": 1422.37
  },
  {
    "open": 1422.37,
    "high": 1426,
    "low": 1421.84,
    "close": 1424.07
  },
  {
    "open": 1424.07,
    "high": 1424.35,
    "low": 1421.43,
    "close": 1423.56
  },
  {
    "open": 1423.55,
    "high": 1423.71,
    "low": 1416.58,
    "close": 1417.41
  },
  {
    "open": 1417.4,
    "high": 1420.22,
    "low": 1413.72,
    "close": 1416.05
  },
  {
    "open": 1416.06,
    "high": 1417.5,
    "low": 1414.67,
    "close": 1416.57
  },
  {
    "open": 1416.57,
    "high": 1422.13,
    "low": 1415.8,
    "close": 1417.42
  },
  {
    "open": 1417.42,
    "high": 1417.88,
    "low": 1415,
    "close": 1416
  },
  {
    "open": 1416.01,
    "high": 1419.27,
    "low": 1415.19,
    "close": 1417.59
  },
  {
    "open": 1417.59,
    "high": 1418.69,
    "low": 1415.76,
    "close": 1416.86
  },
  {
    "open": 1416.86,
    "high": 1419.7,
    "low": 1414.22,
    "close": 1419.51
  },
  {
    "open": 1419.5,
    "high": 1421.79,
    "low": 1417.87,
    "close": 1420.19
  },
  {
    "open": 1420.19,
    "high": 1423.7,
    "low": 1413.12,
    "close": 1422.48
  },
  {
    "open": 1422.49,
    "high": 1423.28,
    "low": 1421.01,
    "close": 1422.19
  },
  {
    "open": 1422.19,
    "high": 1423.55,
    "low": 1421.32,
    "close": 1423.15
  },
  {
    "open": 1423.15,
    "high": 1423.67,
    "low": 1421.4,
    "close": 1421.76
  },
  {
    "open": 1421.77,
    "high": 1421.77,
    "low": 1419.22,
    "close": 1420.17
  },
  {
    "open": 1420.18,
    "high": 1421.76,
    "low": 1416.74,
    "close": 1417.99
  },
  {
    "open": 1418,
    "high": 1418.82,
    "low": 1414.58,
    "close": 1415.97
  },
  {
    "open": 1415.97,
    "high": 1417.49,
    "low": 1409.57,
    "close": 1412.33
  },
  {
    "open": 1412.29,
    "high": 1414.74,
    "low": 1406.68,
    "close": 1409.46
  },
  {
    "open": 1409.46,
    "high": 1410.48,
    "low": 1406.23,
    "close": 1406.35
  },
  {
    "open": 1406.36,
    "high": 1413.17,
    "low": 1406.34,
    "close": 1408.12
  },
  {
    "open": 1408.12,
    "high": 1411.39,
    "low": 1406.3,
    "close": 1406.63
  },
  {
    "open": 1406.64,
    "high": 1410.32,
    "low": 1403.94,
    "close": 1409.74
  },
  {
    "open": 1409.74,
    "high": 1411.89,
    "low": 1407.7,
    "close": 1411.32
  },
  {
    "open": 1411.33,
    "high": 1413.91,
    "low": 1410.85,
    "close": 1411.65
  },
  {
    "open": 1411.64,
    "high": 1414.31,
    "low": 1410.68,
    "close": 1413
  },
  {
    "open": 1413,
    "high": 1414.29,
    "low": 1410.84,
    "close": 1413.58
  },
  {
    "open": 1413.59,
    "high": 1418.54,
    "low": 1413.56,
    "close": 1417.54
  },
  {
    "open": 1417.54,
    "high": 1418.17,
    "low": 1415.47,
    "close": 1416.05
  },
  {
    "open": 1416.05,
    "high": 1416.25,
    "low": 1413.66,
    "close": 1414.45
  },
  {
    "open": 1414.46,
    "high": 1416.15,
    "low": 1411.4,
    "close": 1412.57
  },
  {
    "open": 1412.57,
    "high": 1414.98,
    "low": 1411.25,
    "close": 1414.75
  },
  {
    "open": 1414.75,
    "high": 1416,
    "low": 1411,
    "close": 1415.8
  },
  {
    "open": 1415.79,
    "high": 1417,
    "low": 1413.48,
    "close": 1414.55
  },
  {
    "open": 1414.56,
    "high": 1415.39,
    "low": 1412.53,
    "close": 1413.86
  },
  {
    "open": 1413.86,
    "high": 1417.88,
    "low": 1413.13,
    "close": 1417.18
  },
  {
    "open": 1417.17,
    "high": 1418.7,
    "low": 1415.3,
    "close": 1417.9
  },
  {
    "open": 1417.89,
    "high": 1421.6,
    "low": 1417.51,
    "close": 1420.29
  },
  {
    "open": 1420.3,
    "high": 1421.17,
    "low": 1419,
    "close": 1420.01
  },
  {
    "open": 1420,
    "high": 1422.16,
    "low": 1419.5,
    "close": 1421.11
  },
  {
    "open": 1421.12,
    "high": 1423.97,
    "low": 1420.9,
    "close": 1423.25
  },
  {
    "open": 1423.26,
    "high": 1423.26,
    "low": 1420.76,
    "close": 1420.82
  },
  {
    "open": 1420.82,
    "high": 1421.01,
    "low": 1418.92,
    "close": 1419.11
  },
  {
    "open": 1419.11,
    "high": 1421.25,
    "low": 1419,
    "close": 1421
  },
  {
    "open": 1421.01,
    "high": 1422.98,
    "low": 1417.66,
    "close": 1418.53
  },
  {
    "open": 1418.52,
    "high": 1419.44,
    "low": 1415.01,
    "close": 1415.47
  },
  {
    "open": 1415.47,
    "high": 1417.15,
    "low": 1413.71,
    "close": 1414.16
  },
  {
    "open": 1414.15,
    "high": 1416.22,
    "low": 1413.37,
    "close": 1414.09
  },
  {
    "open": 1414.1,
    "high": 1416.01,
    "low": 1413,
    "close": 1415.83
  },
  {
    "open": 1415.84,
    "high": 1418.37,
    "low": 1413.65,
    "close": 1414.5
  },
  {
    "open": 1414.46,
    "high": 1414.96,
    "low": 1408.49,
    "close": 1411.92
  },
  {
    "open": 1411.92,
    "high": 1412.58,
    "low": 1409.72,
    "close": 1412.57
  },
  {
    "open": 1412.57,
    "high": 1413.05,
    "low": 1411.23,
    "close": 1411.32
  },
  {
    "open": 1411.32,
    "high": 1412.81,
    "low": 1408.13,
    "close": 1409.79
  },
  {
    "open": 1409.79,
    "high": 1412.35,
    "low": 1409.34,
    "close": 1410.44
  },
  {
    "open": 1410.43,
    "high": 1412.92,
    "low": 1408.61,
    "close": 1412.09
  },
  {
    "open": 1412.1,
    "high": 1412.84,
    "low": 1410.56,
    "close": 1410.57
  },
  {
    "open": 1410.56,
    "high": 1411.32,
    "low": 1409.19,
    "close": 1409.59
  },
  {
    "open": 1409.6,
    "high": 1412.09,
    "low": 1407.68,
    "close": 1410.42
  },
  {
    "open": 1410.43,
    "high": 1414.86,
    "low": 1409.94,
    "close": 1414.1
  },
  {
    "open": 1414.11,
    "high": 1414.47,
    "low": 1412.17,
    "close": 1412.65
  },
  {
    "open": 1412.66,
    "high": 1413.85,
    "low": 1411.93,
    "close": 1413.43
  },
  {
    "open": 1413.44,
    "high": 1415.79,
    "low": 1412.99,
    "close": 1413.51
  },
  {
    "open": 1413.52,
    "high": 1414.6,
    "low": 1410.26,
    "close": 1410.34
  },
  {
    "open": 1410.33,
    "high": 1413.83,
    "low": 1410.33,
    "close": 1413.39
  },
  {
    "open": 1413.38,
    "high": 1414.82,
    "low": 1406.46,
    "close": 1407.52
  },
  {
    "open": 1407.52,
    "high": 1413.46,
    "low": 1385.08,
    "close": 1406.33
  },
  {
    "open": 1406.33,
    "high": 1406.42,
    "low": 1396.54,
    "close": 1403.7
  },
  {
    "open": 1403.69,
    "high": 1413.95,
    "low": 1403.69,
    "close": 1411.91
  },
  {
    "open": 1411.92,
    "high": 1420.39,
    "low": 1411.91,
    "close": 1414.33
  },
  {
    "open": 1414.34,
    "high": 1414.52,
    "low": 1405.66,
    "close": 1405.79
  },
  {
    "open": 1405.8,
    "high": 1409.11,
    "low": 1399,
    "close": 1399.24
  },
  {
    "open": 1399.23,
    "high": 1405.73,
    "low": 1399.23,
    "close": 1400.56
  },
  {
    "open": 1400.55,
    "high": 1402,
    "low": 1396.96,
    "close": 1400.96
  },
  {
    "open": 1400.96,
    "high": 1401.35,
    "low": 1390.31,
    "close": 1394.24
  },
  {
    "open": 1394.24,
    "high": 1395.43,
    "low": 1387.54,
    "close": 1389.76
  },
  {
    "open": 1389.87,
    "high": 1390.95,
    "low": 1381.54,
    "close": 1384.88
  },
  {
    "open": 1384.87,
    "high": 1388.96,
    "low": 1383.78,
    "close": 1388.13
  },
  {
    "open": 1388.13,
    "high": 1393.11,
    "low": 1387.84,
    "close": 1391.98
  },
  {
    "open": 1391.99,
    "high": 1393.4,
    "low": 1387.03,
    "close": 1391.28
  },
  {
    "open": 1391.38,
    "high": 1391.68,
    "low": 1384.04,
    "close": 1384.51
  },
  {
    "open": 1384.52,
    "high": 1387.12,
    "low": 1369.29,
    "close": 1377.99
  },
  {
    "open": 1377.99,
    "high": 1384.82,
    "low": 1371,
    "close": 1383.01
  },
  {
    "open": 1383.01,
    "high": 1388,
    "low": 1381.75,
    "close": 1383.05
  },
  {
    "open": 1383.06,
    "high": 1388.47,
    "low": 1383.05,
    "close": 1387.82
  },
  {
    "open": 1387.82,
    "high": 1390,
    "low": 1382.78,
    "close": 1388.01
  },
  {
    "open": 1388,
    "high": 1392.96,
    "low": 1386.5,
    "close": 1391.27
  },
  {
    "open": 1391.2,
    "high": 1392.61,
    "low": 1387.5,
    "close": 1389.07
  },
  {
    "open": 1389.07,
    "high": 1389.07,
    "low": 1382.39,
    "close": 1385.3
  },
  {
    "open": 1385.3,
    "high": 1392,
    "low": 1384.63,
    "close": 1387.41
  },
  {
    "open": 1387.41,
    "high": 1390.71,
    "low": 1386.5,
    "close": 1389.12
  },
  {
    "open": 1389.11,
    "high": 1392.6,
    "low": 1382.5,
    "close": 1391.93
  },
  {
    "open": 1391.93,
    "high": 1396.92,
    "low": 1390.04,
    "close": 1391.11
  },
  {
    "open": 1391.11,
    "high": 1394.3,
    "low": 1383.57,
    "close": 1385.3
  },
  {
    "open": 1385.31,
    "high": 1386.85,
    "low": 1379.45,
    "close": 1382.74
  },
  {
    "open": 1382.74,
    "high": 1384.96,
    "low": 1379.24,
    "close": 1382.24
  },
  {
    "open": 1382.24,
    "high": 1384.6,
    "low": 1380.2,
    "close": 1380.79
  },
  {
    "open": 1380.78,
    "high": 1382.77,
    "low": 1376,
    "close": 1381.3
  },
  {
    "open": 1381.29,
    "high": 1384.6,
    "low": 1379.59,
    "close": 1382.74
  },
  {
    "open": 1382.75,
    "high": 1385.95,
    "low": 1381.72,
    "close": 1384.68
  },
  {
    "open": 1384.67,
    "high": 1392.47,
    "low": 1384.26,
    "close": 1389.48
  },
  {
    "open": 1389.49,
    "high": 1392,
    "low": 1388.82,
    "close": 1390.13
  },
  {
    "open": 1390.13,
    "high": 1392.46,
    "low": 1389.7,
    "close": 1391.94
  },
  {
    "open": 1391.94,
    "high": 1393.95,
    "low": 1388.32,
    "close": 1388.68
  },
  {
    "open": 1388.68,
    "high": 1389.35,
    "low": 1379.59,
    "close": 1381.72
  },
  {
    "open": 1381.71,
    "high": 1384.78,
    "low": 1379.64,
    "close": 1384.68
  },
  {
    "open": 1384.67,
    "high": 1384.92,
    "low": 1381.13,
    "close": 1383.07
  },
  {
    "open": 1383.07,
    "high": 1383.24,
    "low": 1375.5,
    "close": 1375.74
  },
  {
    "open": 1375.73,
    "high": 1378.38,
    "low": 1372.01,
    "close": 1374.42
  },
  {
    "open": 1374.42,
    "high": 1377.99,
    "low": 1366,
    "close": 1377.51
  },
  {
    "open": 1377.51,
    "high": 1378.73,
    "low": 1372.87,
    "close": 1375.18
  },
  {
    "open": 1375.18,
    "high": 1378.38,
    "low": 1371.96,
    "close": 1376.76
  },
  {
    "open": 1376.77,
    "high": 1377.59,
    "low": 1370.81,
    "close": 1370.95
  },
  {
    "open": 1370.95,
    "high": 1374.62,
    "low": 1363.87,
    "close": 1367.88
  },
  {
    "open": 1367.88,
    "high": 1372,
    "low": 1365.03,
    "close": 1368.68
  },
  {
    "open": 1368.67,
    "high": 1373.02,
    "low": 1367,
    "close": 1370.9
  }
]`)

func Test_KalmanFilter(t *testing.T) {
	type args struct {
		allKLines              []types.KLine
		window                 int
		additionalSmoothWindow uint
	}
	var klines []types.KLine
	if err := json.Unmarshal(testKalmanFilterDataEthusdt5m, &klines); err != nil {
		panic(err)
	}
	tests := []struct {
		name string
		args args
		want float64
	}{
		{
			name: "ETHUSDT Kalman Filter 7",
			args: args{
				allKLines:              klines,
				window:                 7,
				additionalSmoothWindow: 3,
			},
			want: 1369.24,
		},
		{
			name: "ETHUSDT Kalman Filter 25",
			args: args{
				allKLines:              klines,
				window:                 25,
				additionalSmoothWindow: 0,
			},
			want: 1369.84,
		},
		{
			name: "ETHUSDT Kalman Filter 99",
			args: args{
				allKLines:              klines,
				window:                 99,
				additionalSmoothWindow: 0,
			},
			want: 1369.95,
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			filter := &KalmanFilter{
				IntervalWindow:         types.IntervalWindow{Window: tt.args.window},
				AdditionalSmoothWindow: tt.args.additionalSmoothWindow,
			}
			for _, k := range klines {
				filter.PushK(k)
			}
			got := filter.Last(0)
			got = math.Trunc(got*100.0) / 100.0
			if got != tt.want {
				t.Errorf("KalmanFilter.Last() = %v, want %v", got, tt.want)
			}
		})
	}
}

func Test_KalmanFilterEstimationAccurate(t *testing.T) {
	type args struct {
		allKLines   []types.KLine
		partialInfo bool
		window      int
	}
	var klines []types.KLine
	if err := json.Unmarshal(testKalmanFilterDataEthusdt5m, &klines); err != nil {
		panic(err)
	}
	tests := []struct {
		name string
		args args
		want float64
	}{
		{
			name: "ETHUSDT Kalman Filter full K-line square error 7",
			args: args{
				allKLines:   klines,
				partialInfo: false,
				window:      7,
			},
		},
		{
			name: "ETHUSDT Kalman Filter full K-line square error 25",
			args: args{
				allKLines:   klines,
				partialInfo: false,
				window:      25,
			},
		},
		{
			name: "ETHUSDT Kalman Filter full K-line square error 99",
			args: args{
				allKLines:   klines,
				partialInfo: false,
				window:      99,
			},
		},
		{
			name: "ETHUSDT Kalman Filter partial K-line square error 7",
			args: args{
				allKLines:   klines,
				partialInfo: true,
				window:      7,
			},
		},
		{
			name: "ETHUSDT Kalman Filter partial K-line square error 25",
			args: args{
				allKLines:   klines,
				partialInfo: true,
				window:      25,
			},
		},
		{
			name: "ETHUSDT Kalman Filter partial K-line square error 99",
			args: args{
				allKLines:   klines,
				partialInfo: true,
				window:      99,
			},
		},
	}
	klineSquareError := func(base float64, k types.KLine) float64 {
		openDiff := math.Abs(k.Open.Float64() - base)
		highDiff := math.Abs(k.High.Float64() - base)
		lowDiff := math.Abs(k.Low.Float64() - base)
		closeDiff := math.Abs(k.Close.Float64() - base)
		return openDiff*openDiff + highDiff*highDiff + lowDiff*lowDiff + closeDiff*closeDiff
	}
	closeSquareError := func(base float64, k types.KLine) float64 {
		closeDiff := math.Abs(k.Close.Float64() - base)
		return closeDiff * closeDiff
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			filter := &KalmanFilter{IntervalWindow: types.IntervalWindow{Window: tt.args.window}}
			ewma := &EWMA{IntervalWindow: types.IntervalWindow{Window: tt.args.window}}

			var filterDiff2Sum, ewmaDiff2Sum float64
			var filterCloseDiff2Sum, ewmaCloseDiff2Sum float64
			var numEstimations = 0
			for _, k := range klines {
				// square error between last estimated state and current actual state
				if ewma.Length() > 0 {
					filterDiff2Sum += klineSquareError(filter.Last(0), k)
					ewmaDiff2Sum += klineSquareError(ewma.Last(0), k)
					filterCloseDiff2Sum += closeSquareError(filter.Last(0), k)
					ewmaCloseDiff2Sum += closeSquareError(ewma.Last(0), k)
					numEstimations++
				}

				// update estimations
				if tt.args.partialInfo {
					filter.Update(k.Close.Float64())
					ewma.Update(k.Close.Float64())
				} else {
					filter.PushK(k)
					ewma.PushK(k)
				}
			}
			filterSquareErr := math.Sqrt(filterDiff2Sum / float64(numEstimations*4))
			ewmaSquareErr := math.Sqrt(ewmaDiff2Sum / float64(numEstimations*4))
			if filterSquareErr > ewmaSquareErr {
				t.Errorf("filter K-Line square error %f > EWMA K-Line square error %v", filterSquareErr, ewmaSquareErr)
			}
			filterCloseSquareErr := math.Sqrt(filterCloseDiff2Sum / float64(numEstimations))
			ewmaCloseSquareErr := math.Sqrt(ewmaCloseDiff2Sum / float64(numEstimations))
			if filterCloseSquareErr > ewmaCloseSquareErr {
				t.Errorf("filter close price square error %f > EWMA close price square error %v", filterCloseSquareErr, ewmaCloseSquareErr)
			}
		})
	}
}
